数据库约束
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