命令建表和约束实例
TIP:可以给任一的约束起名。
例:
emp_id int constraint pk_emp_id_haha primary key(主键取名)
dept_id int constraint fk_dept_id_heihei foreign key references dept(dept_id)(外键取名)
在create table中最后一个字段建议不要写逗号(保持与Oracle相同的语法规定,提高代码的移植性)
代码展示:
create table dept
(
dept_id int primary key,
dept_name nvarchar(100) not null,
dept_address nvarchar(100)
)
create table emp
(
emp_id int constraint pk_emp_id_haha primary key,
emp_name nvarchar(20) not null,
emp_sex nchar(1),
dept_id int constraint fk_dept_id_heihei foreign key references dept(dept_id)
)
执行结果:
什么是约束?
定义:
对一个表中的属性操作的限制叫约束。
分类:
主键约束(实体完整性,主键不能为空):
不允许重复元素,避免了数据冗余。
外键约束(引用完整性):
通过外键约束从语法上保证了本事物所关联的其他事物一定是存在的。
check约束:
保证事物属性的取值在合法范围之内。
default约束:
保证事物的属性一定会有一个值。
unique唯一约束(unique和not null可以组合使用):
保证了事物属性的取值不允许重复,但允许其中有且仅有一列为空。
提问:unique键是否允许多列为空?
答:SQL Server仅允许一个unique列为空;Oracle允许多个unique列为空。