文章目录
1. 约束
mysql对于数据的插入/修改进行一些限制和校验.
1.1 约束类型
NOT NULL | - 指示某列不能存储 NULL 值。 |
UNIQUE | - 保证某列的每行必须有唯一的值。 |
DEFAULT | - 规定没有给列赋值时的默认值。 |
PRIMARY KEY | - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 |
FOREIGN KEY | - 保证一个表中的数据匹配另一个表中的值的参照完整性。 |
CHECK | - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。 |
1.2 null 约束
创建表时,指定某列不为空
create table student(
id int not null,
name varchar(20),
qq_mail varchar(20)
);
1.3 unique 唯一约束
指定某列是唯一 不重复的
1.4 default 默认值约束
指定插入时, name默认值为 unkown :
create table student(
id int not null,
name varchar(20) default 'unkown',
qq_mail varchar(20)
);
1.5 primary key 主键约束
指定 id 列为主键
create table student(
id int not null primary key,
name varchar(20) default ‘unkown’,
qq_mail varchar(20)
);
对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大
值+1。
主键是 NOT NULL 和 UNIQUE 的结合,可以不用 NOT NULL
1.6 foreign key 外键约束
外键用于关联其他表的主键或唯一键
create table classes (
id nt primary key auto_increment,
name VARCHAR(20),
);
create table student (
id int primary key auto_increment,
name varchar(20) default 'unkown',
qq_mail varchar(20),
classes_id int,
foreign key (classes_id) references classes(id)
);
此处classes表负责约束 称为 父表
student表被约束 称为 子表
子表中的class_id 必须是父表中存在的数据
在父表为空的情况下 无法对子表进行插入
父表对子表的限制时不能随意插入/修改
子表对父表的限制时不能随意修改删除
2.聚合查询
2.1 聚合函数
常见的计算可以使用 mysql的聚合函数来实现 :
函数 | 说明 |
---|---|
count | 返回查询到的数据的 数量 |
sum | 返回查询到的数据的 总和,不是数字没有意义 |
avg | 返回查询到的数据的 平均值,不是数字没有意义 |
max | 返回查询到的数据的 最大值,不是数字没有意义 |
min | 返回查询到的数据的 最小值,不是数字没有意义 |
2.2.1 count
返回列所拥有的行数.(null不计入行数)
2.2.2 sum
其他用法类似.
2.3 group by
对指定列进行分组查询
select role,max(salary),min(salary),avg(salary) from emp group by role;
2.4 having
因为 group by 之后 无法使用where条件 固有having条件从句.
按角色查询平均工资<1500的信息