删除表
在删除表的时候,经常会遇到多个表关联的情况,多个表关联的时候不能随意删除,需要使用级联删除
cascade:如果A,B,A中的某一个字段做关联,那么再删除表A的时候,需要首先将表B删除
set null:在删除的时候,把表的关联字段设置为空
约束constraint
创建表的时候可以给表中的数据添加数据校验规则,这些规则称之为约束
约束分为五大类
not null:非空约束,插入数据的时候某些列不允许为空
unique key:唯一键约束,可以限定某一个列的值是唯一的,唯一键的列一般被用作索引列
primary key:主键:非空唯一,任何一张表一般情况下最好有主键,用来唯一的标识一行记录
foreign key:外键,当多个表之间有关联关系(一个表的某一个列的值依赖于另外一张表的某个值)的时候,需要使用外键 foreign key (column) peferences table_name(column)
check约束:可以根据用户的需求去限定某些列的值
创建表的时候直接在类型的后面添加约束
个人建议:在创建表的时候直接将各个表的约束条件添加好,如果包含外键的话,最好把外键关联表的数据优先插入
约束的添加和撤销
可增加或删除约束,但不能直接修改
alter table tablename + 增加/删除
增加: add constraint con_name unique(col)
删除: drop constraint con_name[cascade]
索引
索引是为了加快数据的搜索速度而设立的
索引的作用:在数据库中用来加速对表的查询,通过使用快速访问方法快速定位数据
创建索引
create index 索引名 on 表(字段);
删除索引
drop index 索引名;
数据库设计三范式
第一范式:确保每列保持原子性
列不可分
第二范式:确保表中的每列都和主键相关
第三范式:传递依赖,表里面的列不能出现其他表的非主键字段
推荐文章:数据库三范式 - 五月的仓颉 - 博客园