一、数据库表的约束
1、分类
约束名
关键字
含义
非空约束
not null
值不能为空
唯一约束
unique
值不能重复
主键约束
primary key
值非空且唯一
外间约束
foreign key
让表于表产生关系,从而保证数据的正确性
2、详细使用
非空约束
创建表时,添加非空约束
create table 表名( 字段名 字段类型 not null -- 对该字段添加了非空约束);
创建后,如何添加非空约束
alter table 表名 modify 字段名 字段类型 not null;
创建后,如何删除非空约束
alter table 表名 modify 字段名 字段类型;
唯一约束
创建表时,添加唯一约束
create table 表名( 字段名 字段类型 unique);
创建后,如何添加唯一约束
alter table 表名 modify 字段名 字段类型 unique;
创建后,如何删除唯一约束
alter table 表名 drop index 字段名;
主键约束
注意:
1、一张表只能有一个字段为主键。
2、主键就是表中记录的唯一标识。
3、自增长只能用在主键上
创建表时,添加主键约束
create table 表名( 字段名 字段类型 primary key);
创建后,如何添加主键约束
alter table 表名 modify 字段名 字段类型 primary key;
创建后,如何删除主键约束
alter table 表名 drop primary key;
自动增长
如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长
创建表时,添加主键约束,并且完成主键自增长create table 表名( 字段名 字段类型 primary key auto_increment);
创建后,如何添加自动增长alter table 表名 modify 字段名 字段类型 auto_increment;
创建后,如何删除自动增长alter table 表名 modify 字段名 字段类型;
设置默认值
create table 表名( 字段名 字段类型 default 默认值);
外键约束
简单例子
-- 部门表 和 员工表 (1 对 多的关系)-- 部门表(主表:一方,用来约束别人的表)create table department( id int primary key auto_increment, dep_name varchar(20), dep_location varchar(20));-- 员工表(从表:多方,被别人约束的表)create table employee( id int primary key auto_increment, name varchar(20), age int, dep_id int, -- 外键对应主表的主键 -- 创建外键约束 foreign key (dep_id) references department(id))
创建表时,添加外键约束
create table 从表名( 外键字段名 字段类型, -- 外键对应主表的主键 [constraint] [外键名称] foreign key (外键列名称) references 主表名称(主表列名称));
创建后,如何添加外键约束
alter table 从表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
创建后,如何删除外键约束
alter table 表名 drop foreign key 外键名称;
级联操作
在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作
注意:只能是创建表的时候创建级联关系。
-- 员工表create table employee4( id int primary key auto_increment, name varchar(20), age int, dep_id int, -- 外键对应主表的主键 -- 创建外键约束 constraint emp_depid_fk2 foreign key (dep_id) references department(id) on update cascade on delete cascade)
级联操作语法
描述
on update cascade
级联更新,更新主表中的主键,从表中的外键列也自动同步更新
on delete cascade
级联删除
二、数据库的设计
1、表与表之间的关系
表与表之间的三种关系:
1、一对多:最常用的关系 部门和员工
键表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
2、多对多:学生选课表 和 学生表, 一门课程可以有多个学生选择,一个学生选择多门课程
键表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。
3、一对一:相对使用比较少,可以创建成一张表。公民表 护照表
建表原则:可以在任意一方添加唯一外键指向另一方的主键
2、数据规范化(三大范式)
设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
范式
特点
1NF
原子性:表中每列不可再拆分。
2NF
不产生局部依赖,一张表只描述一件事情
3NF
不产生传递依赖,表中每一列都直接依赖于主键。而不是通过其它列间接依赖于主键。
三、数据库的备份和还原
命令行方式:
备份: mysqldump -u用户名 -p密码 需要备份的数据库名称 > 保存的路径
还原:登录-->创建-->使用(use 数据库名称)--->执行文件( source 文件路径)
图形化工具
四、多表查询
笛卡尔积
有两个集合A,B 取这两个集合的所有组成情况
要完成多表查询,需要消除无用的数据
1、多表查询的分类graph LRA[多表查询] -->B[内.........