约束总结

来源:互联网 发布:mmd舞蹈动作数据 编辑:程序博客网 时间:2024/04/30 10:56

数据库中的五大约束:

        1.primary key 主键约束

保证实体唯一,主键不允许空,主键必须唯一

        2.foregin key 外键约束

保证表与表之间的参照完整性,外键可以空,外键和主键的名称可以不一致,外键和主键的数据类型必须严格匹配

        3.default 默认约束

当一个列值为常量值全同的时候,此时可以添加默认约束,注意:当字段数据类型为timestamp,具有identity属性不能添加默认约束

        4.unique 唯一约束

如果主键以外的字段要保证取值不重复,则可以考虑添加唯一约束

        5.check 检查约束

实现域值完整性,当一些字段取值范围有限制的时候,比如工资,年龄等字段取值范围有限制均可以考虑用check约束


/*-------------------------约束-------------------------*/--主键约束(primary key)--例 在sales数据库中创建一个新表department,其中包含两个字段:depart_id为char(10);depart_name为char(20)。在depart_id字段上设置主键约束。--场景一:创建表时定义主键约束create database salesgouse salesgocreate table department( depart_id char(10) constraint pk_depart_id primary key ,    depart_name char(20))--场景二:对已存在的表添加约束语法:alter table 表名add constraint 约束名primary key(字段名列表)use studentdbgo--将xscj表中的(学号,课程编号)设置为组合主键alter table xscjadd constraint pk_sno_cnoprimary key(学号,课程编号) --设置主键时学号,课程编号不能为空--外键约束(foreign key)--场景一:创建表时定义外键约束注意:外键引用的字段必须是具有主键约束--例 在sales数据库中创建一个新表employee_new,其中包含4个字段:emp_id为char(10),emp_name为char(10),emp_departid为char(10),emp_sex为char(2)。为该表创建一个外键约束,使emp_departid与表department中的depart_id关联。use salesgocreate table employee_new( emp_id char(10), emp_name char(10), emp_departid char(10) constraint fk_departid foreign key references department(depart_id) , emp_sex char(2))--场景二:对已存在的表添加外键约束语法:alter table 表名add constraint 约束名foreign key(外键列表) references 主表名(字段列表)--以xscj表为例,使xscj表中的学号引用xsqk表中的学号,xscj表中的课程编号引用xskc表中的课程编号alter table xscjadd constraint fk_snoforeign key(学号) references xsqk(学号)alter table xscjadd constraint fk_cnoforeign key(课程编号) references  xskc(课程编号)--默认约束(default)--场景一:创建表时定义默认约束create table test(id int identity(1,1),  --identity(seed,increasement)  seed表示起始值,increasement表示增长值 sname varchar(10))drop table testcreate table test(id int , sname varchar(10), loc varchar(10) constraint df_loc default '上海')--场景二:对已存在的表添加默认约束语法:alter table 表名 add constraint 约束名 default 默认值 for 字段名 --为xscj表添加默认约束df_grade默认值为60alter table xscjadd constraint df_gradedefault 60 for 成绩--唯一约束(unique)--场景一:创建表时定义唯一约束create table teacher( tid int primary key,  --主键自动创建聚集索引 tname varchar(20), telphone_number int constraint uq_tel unique )--场景二:对已存在的表添加唯一约束语法:alter table 表名add constraint 约束名unique(字段列表)--例 为goods_unit的code字段添加一个名为UK_code的唯一约束。 create table goods_unit( code int)alter table goods_unitadd constraint UK_codeunique(code)--检查约束(check)--场景一 :创建表时定义检查约束--  例 在sales数据库中创建一个新表employee,其中包含3个字段:emp_id为char(10),emp_name为char(10),emp_gender为char(2)。在emp_gender上设置检查约束,限制只能接受“男”或“女”的数据,而不能接受其他数据,约束名为CHK_gender。create table employee( emp_id char(10), emp_name char(10), emp_gender char(2) constraint chk_gender check(emp_gender='男' or emp_gender='女'))--场景二 :对已存在的表定义检查约束定义检查约束语法:ALTER TABLE 表名 ADD Constraint 约束名 CHECK(约束条件表达式) --关系运算符,算术运算符,逻辑运算符--限制xscj表中的成绩字段取值范围在0-100之间,约束名为chk_gradeuse studentdbgoalter table xscjadd constraint chk_gradecheck(成绩>=0 and 成绩<=100)


0 0
原创粉丝点击