删除表
-
drop table tb_name;
-
drop table if exists tb_name;
- oracle不支持该语法
约束(constraint)
- 什么是约束?作用?常见约束有那些?
- 约束:根据实际情况和业务需求,对字段加一些条件限制
- 作用:保证数据的完整性,合法性,有效性
- 常见约束
- 非空约束(not null)
- 唯一约束(unique)
- 主键约束(primary key):既不能为空也不能重复,简称PK
- 外键约束(foreign key)
- 检查约束(check):oracle数据库有check约束,mysql暂时不支持该约束
唯一性约束
-
unique:字段不能重复,但可以为NULL
- 都为NULL,不代表重复,不具有可比性
-
给两个或多个字段添加unique
-
--在列后面加约束 create table tb_user( id int, usercode varchar(255) unique, --列级约束 username varchar(255) unique );
-
--添加联合约束 create table tb_user( id int, usercode varchar(255), username varchar(255), unique(usercode, username) --表级约束 );
-
-
列级约束和表级约束
- not null没有表级约束
主键约束
- 一张表的主键只能有一个
- primary key
- 非空且不能重复
- 在字段后面加,列级约束
- 相关术语
- 主键约束
- 主键字段
- 主键值
- 作用
- 表的设计三范式中:第一范式就要求,任何一张表都要有主键
- 主键值是这行记录在这张表当中的唯一标识
- 主键分类
- 根据主键字段的字段数量
- 单一主键(推荐,常用)
- 复合主键(多个字段联合起来,添加一个主键,不建议使用,违背三范式)
- primary key(name1, name2);
- 根据主键性质
- 自然主键(和业务无关的自然数,推荐使用)
- 业务主键(主键值和系统的业务挂钩,例如:拿着银行卡的卡号做主键,拿着身份证的号码做主键,不建议使用)
- 最好主键不要与业务挂钩,能完成自身的基本职责即可
- 业务变化时,可能导致主键值改变,肯能导致主键重复
- 根据主键字段的字段数量
- 表级约束,列级约束形式
- 列级:字段名后加
- 表级:单独起一行
- mysql提供了主键自增
- 字段名后加上:auto_increment
- 自动维护一个自增的数字,从1开始,以1递增
- oracle 也提供了一个自增机制,叫做:序列(sequence)对象
外键约束
- 相关术语
- 外键约束:foreign key
- 外键字段:添加有外键约束的字段
- 外建值:外键字段中的每一个值
- 作用
- 减少数据冗余
- 形成数据约束(值不能随便写了,必须参考外键所在字段里的数据)
- 语法:foreign key (子表字段名) references 父表名(被参考的父表字段名);
- 某个表的字段,被另外一张表引用参考
- 被参考的字段不一定是主键,但是必须保证唯一性(至少有unique约束)
- 外键所在表为父表,有父子表之分
- 删除表时,先删除字表
- 删除数据时,先删除字表
- 添加数据时,先添加父表
- 创建表时,先创建父表
- 某个表的字段,被另外一张表引用参考
- 外键值可以为NULL?
- 可以为NULL
相关文章
暂无评论...