SQL---------表的约束
表的约束
防止同一条数据完全重复:主键约束(primary key)唯一键约束(unique),自增长;
防止数据为空: 非空约束(not noll),默认值;
防止乱填数据: 外键, 定义数据类型,check;
1 主键约束(Primary key constraint)要求主键能够唯一区分每一行数据,主键可以是一列也可是几列组合成主键,并且不允许为空,表中的数据按照主键有序排列,
l 语句操作: alter table stuinfo add constraint pk-sruno primary key(stuno)
l 表格操作:在表的设计界面,在相应的列上,右击-"设为主键"/"删除主键";
2 唯一约束(unique constraint)要求该列唯一,允许为空,但只能出现一个空值
l 语句操作:alter table stuinfo add constraint unique(stuid)
l 表格操作:在表的设计界面上,右击--“索引/键”在弹出窗口上,点击左下角“添加”,右侧属性列表,修改类型——唯一键,设置列
例子 qq 号与qq邮箱的关系
3 检查约束(check constraint)某列取值范围 格式限制等 例如 有关年龄的限制
4 默认约束(default constraint)某列的默认值
语句操作:sxex varchar(2) default('男'),
表格操作:在表的设计界面,选择相应的列,在下面的属性面版中——默认值
例子insert into Studente(sno,sname,sbirthday,class) values('201','小王','1974-06-03','95031')
5 外键约束(foreeign key constraint)用于建立两表之间的关系,需要制定引用主表的那一列
三、自增长列:标识列,Identity列
1.不能手动向里面填值。如果要写insert语句的话,则语句应当把这一列忽略
2.自增长列主要用于整型、长整型,Decimal类型。
3.不要随便把自增长列作为主键。
--
操作:在表的设计界面中,选中相应的列,在下面的属性面版——“标识规范”--选择是
防止有些该填的没有填:
一、非空约束
不能为NULL。
操作:在表的设计界面中“允许NULL值”中的复选框去掉。
二、默认值。
如果不给列赋值的话,会使用默认值填上。
操作:在表的设计界面,选择相应的列,在下面的属性面版中——默认值
防止乱填:
一、Check约束。
按照某种规则对数据进行检查。
操作:在表的设计界面中,右击相应的列,选择“CHECK约束”在弹出的对话框中,设置约束的名称和表达式。
二、外键约束。主表,从表。
主表是用来约束从表的。外键应当建在从表上。
使用主表的主键来约束从表外键。
从表中的外键列是不能随便乱填内容的,它只能填写主表主键中存在的数据。
一旦建立起外键关系来,从表的外键不能乱填,反过主表中的主键列也不能乱删除乱改。
级联删除的设置——整理
操作:先建好主表,在从表的设计界面上,右击-“关系”,在弹出的对话框中选择“添加”,在右边属性列表中设“表和列的规范”
三、类型。
完整性包括
1 实体完整性
数据行不能存在重复
2 域完整性
实现了对输入到特定列的数值的限制
3 引用的完整性
1 要求子表中的相关项必训在主表中也存在
2 如果建立了主表和子表 则 子表中的相关项目的数据,在主表中必须存在
3主表中相关的项数据更改了,则子表中的数据也要相应的更改
4在删除子表前主表不能删除
四 自定义完整性
创建表包括选择字段的名称 数据类型 定义是否为空 设置默认值 主键 外键关系 检查约束等 。表中没有合适的列作为主键可以创建标示列。
sql 中存在的5中约束
添加约束的方法: alter table 表名 add constraint 约束名 约束类型
具体的约束说明
约束名取名规则 :
主键 pk-stuno
唯一 uq
默认 de
检查 ck
外键 fk
代码添加约束书写方法(以表格stuinfo)
添加主键约束:
添加唯一键约束:alter table stuinfo add constraint unique(stuid)
添加默认约束键: alter table stuinfo add constraint df-stuadddress default(‘地址不详’)for stuaddress
添加检查约束:alter table stuinfo add constraint ck-stuage check(stuage between 13 and 40 )
添加外约束键: ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)