1. 键值约束与扩展属性
键值约束: 约束表中指定字段的数据必须符合某种规则
种类:
非空约束: NOT NULL -- 约束指定字段的数据不能为NULL
唯一约束: UNIQUE -- 约束指定字段的数据不能出现重复
主键约束: primary key -- 数据非空且唯一, 一张表只能有一个主键
外键约束: foreign key -- 表中指定字段的数据受父表数据约束
默认值: DEFAULT -- 为指定字段设置默认值
自增属性: AUTO_INCREMENT -- 整形字段数据自动+1
create table if not exists class(
id int primary key auto_increment,
name varchar(32)
);
create table if not exists student(
id int primary key auto_increment,
sn int not null unique,
name varchar(32),
class_id int,
sex varchar(1) default('男'),
foreign key (class_id) references class(id)
);
2. 分组查询: group by
分组查询的字段只能是分组依据字段以及聚合函数.
分组查询中不能使用where, 用having替换where
表中一个组名: role 表中另一个组名: salary
select role,sum(salary) from emp group by role;
select role,sum(salary) , max(salary), min(salary), avg(salary)from emp group by role;
select role,sum(salary) , max(salary), min(salary), avg(salary)from emp group by role having avg(salary)>15000;
3.数据库中表的设计
ER关系图: 根据实体与实体之间的关系决定数据库表如何设计
一对一: 每个实体设计表的时候都应该具有一个唯一主键
一对多: 多的一方表中应该具有单一一方的id
多对多: 创建一个中间表关联两个实体
三大范式:数据表的设计规范
1nf: 表中每个字段都应该是不可分割的原子数据
第一范式是其他范式的前提
不遵循: 降低查询效率, 只能模糊匹配
2nf: 表中每个字段都应该完整关联主键, 而不能部分关联
不遵循: 表中可能存在冗余数据
3nf: 表中每个字段都应该直接与主键关联, 而不能间接关联
不遵循: 表中可能存在冗余数据

浙公网安备 33010602011771号