sql 约束

2021-06-14  本文已影响0人  Vergil_wj

定义

对一个表中的属性操作的限制叫做约束。

分类

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)
)

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 关联表名(列名)
上一篇 下一篇

猜你喜欢

热点阅读