定义
对一个表中的属性操作的限制叫做约束。
分类
1. 主键约束 primary key
不允许重复元素,避免了数据的冗余。
2. 外键约束 foreign key
通过外键约束从语法上保证了本事物所关联的其它事物一定时存在的。也就是说,事物和事物之间的关系是通过外键来体现的。
3. check 约束
保证事物的取值在合法的范围内。
sql server:
create table student
(
stu_id int primary key,
stu_sal int check (stu_sal >= 1000 and stu_sal < 8000)
)
- check (stu_sal >= 1000 and stu_sal < 8000):学生工资范围 [1000,8000)。
4. default 默认约束
default:保证事物的属性一定会有一个值。
sql server:
create table student
(
stu_id int primary key,
stu_sal int check (stu_sal >= 1000 and stu_sal < 8000),
stu_sex nchar(1) default ('男')
)
插入数据:
insert into student (stu_id,stu_sal) values (1,5000)
stu_sex 列默认为男。
5. unique 唯一约束
保证了事物的取值不允许重复,但允许为空。
sql server:
create table student
(
stu_id int primary key,
stu_sal int check (stu_sal >= 1000 and stu_sal < 8000),
stu_sex nchar(1) default ('男') ,
stu_name nchar(200) unique
)
insert into student (1,6000,'男','张三'); -- ok
insert into student (2,6000,'男','张三'); -- error,违反了唯一约束
insert into student (3,6000,'男','李四'); -- ok
insert into student (null,6000,'男','王五'); -- error,主键不能为空
insert into student (4,6000,'男',null); -- ok,说明唯一键可以为空
唯一约束 unique 和主键 primary key 区别
create table student
(
stu_id int primary key,
stu_name nvarchar(50) unique not null,
stu_email nvarchar(50) not null,
stu_address nvarchar(50)
)
使用没有意义的编号当主键,如 stu_id
。
业务上有实际含义不允许重复的当唯一键,如 stu_name
。
6. not null 非空
要求用户必须为该属性附一个值,否则语法出错。
表和约束的区别
- 数据库是通过表来解决事物的存储问题的;
- 数据库是通过约束来解决事物取值的有效性和合法性的问题;
- 建表的过程就是指定事物属性及其事物属性各种约束的过程;
修改约束(删除、添加)
删除约束
alter table 表名 drop constraint 约束名
添加约束(check)
alter table 表名 add constraint 约束名 check(表达式)
添加约束(主键)
alter table 表名 add constraint 约束名 primary key(列名)
添加约束(唯一)
alter table 表名 add constraint 约束名 unique(列名)
添加约束(默认值)
alter table 表名 add constraint 约束名 default 默认值 for 列名
添加约束(外键)
alter table 表名 add constraint 约束名 foreign key(列名)
references 关联表名(列名)
网友评论