约束:
约束是数据库用来确保数据满足业务规则的手段。具体需要根据业务需求进行相应设置。
常见约束分类:
检查约束(Check):可限制条件,如name>4
唯一约束(Unique):id:1 2 3 4 5
主键约束(Primary key):类似唯一约束
外键约束(Foreign key):两张表关联
非空约束(Not null):不能为空
默认约束(Default):默认某值
约束命名规范:
规范:约束类型_字段名
主键:PK_stuno
检查约束:CK_字段名
唯一约束:UQ_字段名
非空约束:NN_字段名
外键约束:FK_字表_父表,通过外键关联表格;
默认约束:一般不需要命名;
加约束名:constraint约束名
主键和唯一的区别:
a 主键不能为Null,唯一可以为null。
b 主键可以是复合主键,也可以是单值主键(id)
c 一张表中只能有一个主键或者复合主键;但是唯一键设置多次;
比如学生表中的id address两个都可以设置为唯一键;
大致分类:
a) 列级约束:
- 作用于一个列;
- 放在列的后面;
- 可以有多个约束,全部6个约束;
- 多个约束直接用空格隔开,一般顺序可以交换,如果有default,则default必须放在前面;
--创建表格student
create table student(
stuno number(3) primary key,---主键约束
stuname varchar2(10) not null unique,--非空约束
stuaddress varchar2(20) default '陕西西安' check(length(stuaddress)>2),
--默认以及检查约束;
stuid number(2)
)
b) 表级约束
- 作用于一个列/多列;
- 放在表的后面;
- 4个(主、外、唯一、检查)
create table student1(
stuno number(3),
stuname varchar2(10) ,
stuaddress varchar2(20),
stuid number(2),
constraint PK_sno primary key(stuno),
constraint UQ_sname_stuid unique(stuname,stuid),
constraint CK_saddress check(length(stuaddress)>2)
);
外键约束:
A表中的a列->B表中的b列;则a成为外键;
通过外键连接多个表格;
--创建表格student
create table student
(
stuno number(2),
stuname varchar2(10),
subid number(2)
)
--创建表格sub
create table sub
(
sid number(2),
sname varchar2(20)
);
--分别插入数据
insert into sub values(1,'数学');
insert into student values(11,'qinjiali',1);
insert into student values(12,'qinliman',2);
创建表格后,增加约束的操作
1 增加主键约束
alter table tablename add constraint pk_tablename primary key (column1,column2,…);
2 增加外键约束
alter table 从表表名 add constraint 外键约束名称 foreign key(列名) references 主表名称(主键列名)