一.约束
概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性,更准确说约束的是列。
分类:
1. 主键约束:primary key
2. 非空约束:not null
3. 唯一约束:unique
4. 外键约束:foreign key
1 非空约束:not null,某一列的值不能为null
1创建表的时候添加 create table 表名( 列名 数据类型 not null )
创建表完后,添加非空约束
Alter table 表名 modefy 列名 数据类型 NOT NULL;
3. 删除非空约束
Alter table 表名 modefy 列名 数据类型;
2唯一约束:unique,某一列的值不能重复
1 在创建表时,添加唯一约束 create table 表名(列名 数据类型 unique)
2 删除唯一约束
Alter table 表名 drop index 列名;
3 在表创建完后,添加唯一约束
Alter table表名modefy 列名 数据类型 unique;
注意:唯一约束可以有null值,但是只能有一条记录为null
3 主键约束:primary key:非空且唯一,一张表只能有一个字段为主键,也是表中数据唯一标识
1 在创建表时,添加主键约束
create table stu(列名 数据类型 primary key, );
2 删除主键
alter table 表名 drop primary key;
3 创建完表后,添加主键
alter table 表名 modify 列名 数据类型 primary key
4 自动增长:概念:如果某一列是数值类型的,使用auto_increment 可以来完成 1 在创建表时,添加主键约束,并且完成主键自增长
create table stu(列名 数据类型 primary key auto_increment);
2 删除自动增长
alter table表名modify 列名 数据类型;
3 添加自动增长
alter table表名 modify列名 数据类型 AUTO_INCREMENT;
注意:删除自动生长之前,要先删除主键,添加随意
4 外键约束:foreign key,让表于表产生关系.
- 在创建表时,可以添加外键 create table 表名(....外键列,
constraint 外键 名称foreign key (外键列名称) references 主表名称(主表列名称)
- 删除外键alter table 表名 drop foreign key 外键名称;
3. 创建表之后,添加外键: alter table 表名 add constraint 外键名称foreign key (外键列名称) references 主表名称(主表列名称)
4. 级联操作
1. 添加级联操作(级联更新+级联删除)
语法:Aalter table 表名 add constraint 外键名称foreign key (外键列名称) references 主表名称(主表列名称)on update cascade on delete cascade
2. 分类:
级联更新:on update cascade (一个更改都更改)
级联删除:on delete cascade(一个删除,与之相关的全部删除)
- 关系
数据库中,表与表之间的关系分为三种
1 一对一(不常用):一对一的关系,是创建一个外键,对应另一个表中的主键,因为是一对一,所以要保证创建的外键是唯一的(用唯一约束)。
这种关系之所以不常用,是因为不如创建一个新的列了。
2 一对多:就是正常操作,创建一个外键,去对应另一个表的主键,数据多的一方对应数据少的一方,一个表的主键可以对应另一个表的多个外键。
3 多对多:需要一个中间表,创建两个外键,分别对应其他两个表的主键,这两个外键也叫做主键对(必须是唯一的,使用主键约束),中间表可以设置很多主键对,与相连接的表的主键是一(外表)对多(中间表)。
- 范式
范式就是数据库表的设计,需要遵循的规则,可以优化数据的存储,并看起来更为清晰。
常规设计,只需要满足三大范式即可。
1 第一范式:每一个列都是不可以再次拆分的,这是设计的基础(因为想拆分可能也做不到)。
第二范式和第三范式,之间有一些模糊,又是每一个列必须完全依赖主键(第二范式),又是不得间接传递(第三范式)。
个人总结:表中的设计,我一个表只叙述一件事情,首先不能有重复的主键,其次不能有带有含主键性质的其他数据。
主键性质:通过这个数据,可以确定其他数据。
- 数据库备份和还原
备份: mysqldump -u用户名 -p密码 数据库名称 > 保存的路径
还原:1. 登录数据库
2. 创建数据库
3. 使用数据库
4. 执行文件。source 文件路径