非空约束:
alter table stu modify name varchar(10) not null;
# 限定为非空约束,表结构的修改是用 modify
唯一约束:
唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过UNIQUE定义的
基本语法规则:
字段名 数据类型 UNIQUE;
alter table stu add unique key(id);
主键约束:
(可以快速找到表中的某条信息。通过PRIMARY KEY定义)
基本语法规则:
字段名 数据类型 PRIMARY KEY;
每一个数据表中只能有一个主键约束,非空且唯一。
没有申明主键,有唯一约束和非空约束,就会默认为主键。
alter table stu add primary key(id);
自增约束:
自增约束必须与主键组合使用,默认情况下,起始值为1,每次的增量为1。通过AUTO_INCREMENT定义的。
基本语法规则:
字段名 数据类型 AUTO_INCREMENT;
alter table stu change id id tinyint AUTO_INCREMENT;
insert into stu(name,age) values("东离",68);
实现自增长为“1”,但是如果自增长重复则报错
编号可以跳过 e.g. 1 2 6
这时,再次插入为编号 7
1.插入已有的,数值编号重复,报错
2.插入值大于已有值,可以正常进行
3.删除最大值,再次插入数值时,依然会从已经删除的最大值的下一位开始插入
默认约束:
alter table stu alter age set default 18;
# defalut 后面需要添加默认值
表关系:
外键约束:
(一对一)
mysql> create table college(
-> d_id int PRIMARY KYE AUTO_INCRMENT,
-> d_name varchar(20) not null
-> );
外键约束无法添加没有的数据
外键约束的外键无法添加关联上对应表主键的数据,这就是一对多。 设置方法:
constraint c_s foreign key(dept_id) references college(d_id);
常见外键约束,指定当前表为外键,关联上某个表的主键,实现一对多
删除外键约束:
在实际开发中,根据业务逻辑的需求,需要解除两个表之间的关联关系时,就需要删除外键约束。
基本语法规则: ALTER TABLE 表名 DROP FOREIGN KEY 外键名。
一对多关系:
表中某条数据与另外一个表中的多个数据有关联关系。
一对一关系:
表中某条数据与另外一个表中的一条数据有关联关系。
多多对多关系:
表A的数据对应表B的多个数据,同时表B的数据也同样对应当前表A的多个数据。
数据库三范式
第一范式-1NF
第一范式(1NF):数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。 不可多表头
只能这样的
第二范式-2NF
第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖) 依赖分离,形成表关系
第三范式-3NF
第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖) 在二的基础上实现非主属性在整个数据库中只出现一次
事务:
数据库事务(transaction): 针对数据库的一组操作,它可以由一条或多条SQL语句组成,同一个事务的操作具有同步的特点,如果其中一条语句无法执行,那么所有语句都不会执行。
BEGIN --- 开始一个事务 ROLLBACK --- 事务回滚 COMMIT --- 事务确认