Mysql 总结(the next day)

约束
create table t_student(
s_pk_id int primary key, /主键约束/
s_name varchar(20) not null, /非空约束/
s_tel varchar(11) unique, /唯一约束/
s_sex char(2) default 'M', /默认约束/
s_age int check(age >= 18 and age <=40) /检查约束 mysql没有作用/
);

主键约束的第二种方式与自动增长
create table t_student(
s_pk_id int auto_increment, 这一列是自动增长的列,会永远自动向前递增,自动增长的列在一张表中就只能有一个1 8 10 11 13 14 15
s_name varchar(20) not null, 非空约束
s_tel varchar(11) unique,唯一约束
s_sex char(2) default 'M', 默认约束
s_age int check(age >= 18 and age <=40), /检查约束 mysql没有作用/
primary key(s_pk_id) /*主键约束的第二种写法
);

创建班级表
create table t_class(
c_pk_id int primary key auto_increment,
c_name varchar(20) not null
);

创建功课表
create table t_subject(
sub_pk_id int primary key auto_increment,
sub_name varchar(20) not null,
sub_publish_time date
);

创建学生和功课的中间表 分数表

create table t_scores(
sc_pk_id int primary key auto_increment,
sc_student_id int not null,
sc_subject_id int not null,
sc_score float,
constraint fk_scores_student foreign key(sc_student_id) references t_student(s_pk_id),
constraint fk_scores_subject foreign key(sc_subject_id) references t_subject(sub_pk_id)
);

修改表,修改数据类型,添加自增和主键

alter table t_food_bak modify pk_id int auto_increment primary key;

自增默认从1开始,如果想手动设置从哪里开始,使用下面的语句

alter table t_food_bak auto_increment=1000;

关联关系

一对一  不常用

一对多(多对一)  在数据库中的做法就是在"多"的这一端加上一个外键列和"一"这一端的主键进行对应

多对多 其实就是特殊的一对多,处理的方式,都是多加一张中间表,这个中间表分别和另外两张表示多对一的关系

关联约束

如果表已经建好了,我们需要修改表添加外键约束

修改   表     表名    添加   约束              外      键(外键列名)   关联       主键表(主键列名)

alter table t_student add constraint [外键名] foreign key(s_class_id) references t_class(c_pk_id);

在建表的时候,直接写好关联约束

可以直接在建表语句的最后写上

constraint foreign key(外键列名) references t_class(主键列名);

 

DML 语句

增 insert into 表名([列名,列名,列名....]) values ([值,值,值....])
insert into t_student(s_pk_id,s_name,s_tel) values(1,'张三','13111111111');

自增列,可以不用插入
insert into t_student(s_name,s_tel) values('张三','13111111111');

注意一个问题,列名和值必须一一对应,如果字段名写出来,那么value就必须对应

insert into t_student(s_pk_id,s_name,s_tel,s_sex) values(2,'王五','13111111111','F');

insert into t_student(s_pk_id,s_name,s_tel,s_sex) values(null,'王五','13111111111',default);

可以默认不写列名,意思是后面的值就要和列名顺序对应,不推荐这种写法
insert into t_student values(null,'赵六','13111111115',default,19);

一次加入多行数据

insert into  t_student(s_name,s_tel,s_age)values("张飞","13811111111",30),("赵云","13811111112",28),("关羽","13811111113",32);

 

改 update 表名 set 列名=新的值,列名=新的值...[where 条件]

把t_student的s_class_id全部改为1

update t_student set s_class_id=1

把学生id=2的班级外键改为3

update t_student set s_class_id=3 where s_pk_id=2;

把学生id大于2并且小于5的班级全部改为F66班

update t_student set s_class_id=4 where s_pk_id > 2 and s_pk_id < 5;

如果没有主外键约束,外键可以随便写,但是有了主键外键约束之后,这里就不能随便写外键的值

update t_student set s_class_id = 99 where s_pk_id=5;

update语句更新多个值

update t_student set s_tel="13711111111",s_age=18 where s_pk_id=1;

在...之间

使用 >= and <=

update t_student set s_age = s_age + 1 where s_age >= 18 and s_age <= 30;

btween and

update t_student set s_age = s_age + 1 where s_age between 18 and 30;

在...范围内

= and <=   > and <     or or or

update t_student set s_age = s_age - 2 where s_class_id=1 or s_class_id=3 or s_class_id=4;

in    update t_student set s_age = s_age - 2 where s_class_id in(1,3,4);

not 取反 update t_student set s_age = s_age - 2 where s_class_id not in(1,3,4);

判断为null 注意: 不是用的=null在mysql中null和任意的值比较都是false  而是使用 is null,

update t_student set s_age = 50 where s_age is null and s_class_id=1;

取反 update t_student set s_age = 50 where s_age is not null and s_class_id=1;

 

删除 delete from 表名 [where 条件]

删除所有数据   delete from t_student;

按照条件删除   删除年龄为null的数据  delete from t_student where s_age is null;

delete删除语句,就算删除全部的数据,之前自增的id,还是会继续往下自增

删除数据还可以使用truncate,这个语句,大家知道就可以了,千万别用

 

模糊匹配 关键字 like

替代符 _ 替代一个字符

替代符 % 替代0个或多个字符

 

比较下面四个替代符的区别,到底模糊匹配的是什么

update t_student set s_age=20 where s_name like '张%';
update t_student set s_age=s_age+2 where s_name like '张_';
update t_student set s_age=s_age+5 where s_name like '%张%';
update t_student set s_age=s_age-5 where s_name like '%五';

 

DQL 语句

简单查询 select 列名,列名,列名...(简单查询全部列名 *) from 表名

select * from t_student;

单词
DML
insert(新增)
update(修改)
delete(删除)

DDL
select(查询)

where(哪里 匹配条件) set(设置) like(像 模糊匹配) from(来自...)

primary key(主键)
unique(唯一)
constraint(约束)
references(引用,关联)

posted @ 2019-12-19 17:44  现在不晓得  阅读(479)  评论(0)    收藏  举报