MYSQL表的增删改查(进阶)

数据库约束

1.约束类型
1)NOT NULL:指示某列不能存储NULL值
2)UNIQUE:保证某列得每行必须拥有唯一的值
3)DEFAULT:规定没有给列赋值时的默认值
4)PRIMARY KEY:NOT NULL和UNIQUE的结合,确保某列(或两个列多个列的结合)有唯一标识
5)FORIENGN KEY:保证一个表中的数据匹配另一个表中的值的参照完整性
6)CHECK:保证列中的值符合指定的条件
2.NULL约束
创建表时,可以指定某列不为空:

create table student(
  id int not null,
  sn int,
  name varchar(20),
  qq_mail varchar(20)
  );
  

3.UNIQUE:唯一约束
指定sn列为唯一的,不重复的:
在这里插入图片描述
4.DEFAULT:默认值约束
指定插入时,name列为空,默认值为unkown
在这里插入图片描述
5.PRIMARY KEY:主键约束
指定id列为主键:
在这里插入图片描述
对于整数类型的主键,常搭配自增长auto_increment来使用,插入数据时对应字段不给值时,使用最大值+1

--主键是not null和unique的结合,可以不用not null--
id int primary key auto_increment,

6.FOREIGN KEY:外键约束
外键用于关联其他表的主键或唯一键,语法:
foreign key (字段名) reference 主表(列)
举例:创建学生表student,一个学生对应一个班级,一个班级对应多个学生,使用id为主键,classes-id为外键,关联班级表id
在这里插入图片描述

表的设计

有三大类,一对一,一对多,多对多
一对一
在这里插入图片描述
一对多
在这里插入图片描述
多对多
在这里插入图片描述

新增

插入查询结果
语法:insert into 表名 [列名1,列名2…] select …
在这里插入图片描述

查询

聚合查询
1、常见的聚合函数:Count,Sum,Avg,Max,Min
例如:1)统计班级收集得qq_mail有多少个,qq_mail为null的数据不会计入结果

select count(qq_mail) from student

2)统计数学成绩不及格(<60)的总分,没有返回null

select sum(math) from exam_result where math<60;

2.group子句
select中使用group by 子句可以对指定列进行分组查询时,select指定的字段必须是‘分组依据字段’,其他字段若想出现在select中则必须包含在聚合函数中
语法:在这里插入图片描述
3.Having
Group By字句进行分组以后,需要对分组结果再进行条件过滤时,不能使用Where语句,而需要用Having
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章