SQL service数据表 定义约束

x33g5p2x  于2021-11-27 转载在 其他  
字(2.3k)|赞(0)|评价(0)|浏览(291)

SQL service数据表 定义约束

主码约束

在SSMS工具中定义主键的方法为:
设计器可视化

sql语句也可以定义主键
在建表的时候
后面写个

primary key(Cno),

或者

Cno char(10) not null primary key,

或者修改添加主码约束

use StudntDB
go
alter table Student 
add constraint PK_Student primary key(Sno)

sql server给表新建约束提示 表不存在或者没有权限#找不到对象“dbo.Student”,因为它不存在或者你没有所需的权限

SQL Server2008 解决:无法对 用户 ‘xxx‘ 执行 查找,因为它不存在,或者您没有所需的权限

定义外键约束

右键–关系

在上面添加关系
在“选定的关系”列表框中列出了系统提供的默认关系名称(这里是:FK_Course_Course),名称格式为FK_< tablename>_< tablename>,其中tablename是外键表的名称。选中该关系。

展开窗口右边的“表和列规范”,然后单击右边出现的按钮(如图所示)

设计主键表和外键表
举例子如图

Course中的Cno被SC表引用
SC中的Cno为外码
保存

也可以在创建表的时候,定义外码
例如

create table 图书销售表(
书号 nchar(6) not null ,
书店编号 nchar(6) not null,
销售日期 smalldatetime not null,
销售数量 smallint check(销售数量 >= 1),
primary key(书号, 书店编号, 销售日期),
foreign key(书号) references 图书表(书号),
foreign key(书店编号) references 书店表(书店编号)

或者添加外键约束
比如:

--选课表 SC
create table SC(
Sno char(12),
Cno char(10),
Grade int check(Grade>=0 and Grade<=100) ,
primary key(Sno,Cno),
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
);

这些外码约束可以这样添加

use StudntDB
go
alter table SC 
add constraint PK_Sno foreign key(Sno) references Student(Sno)
alter table SC 
add constraint PK_Cno foreign key(Cno) references Course(Cno)

定义UNIQUE 约束

这个约束是防止重复值的
运用管理索引和键工具

点击左下角的“添加”按钮,然后在右边“常规”下的“类型”列表框中,选择“唯一键”,如图10-22所示。实际上,数据库管理系统是用唯一索引来实现UNIQUE约束的,因此,定义UNIQUE约束,实际上就是建立了一个唯一索引。

在“名称”框中可以修改UNIQUE约束的名字,也可以采用系统提供的名字(这里是:IX_Student),我们这里不进行修改。
单击“关闭”按钮,关闭创建唯一值约束窗口,回到SSMS,在SSMS上单击保存按钮,然后在弹出的“保存”提示窗口中,单击“保存”按钮保存新定义的约束。

如果运用
sql 语句添加UNIQUE约束:

use StudntDB
go
alter table Student
add constraint IX_Sname UNIQUE(Sname)

定义DEFAULT约束

DEFAULT约束用于指定列的默认值。
现在假设我们要为Student表的Sdept列定义默认值:计算机系。

在SSMS中图形化地设置DEFAULT约束的步骤为:
1)在SSMS的对象资源管理器中展开“学生数据库”并展开其下的“表”节点,在
Student表上右击鼠标,在弹出的菜单中选择“设计”命令,弹出student的表设计器标签页。

2)选中要设置DEFAULT约束的Sdept列,然后在设计器下边的“默认值或绑定”框
中输人本列的默认值:计算机系,如图所示。

3)单击“保存”按钮,即设置好了Sdept列的默认值约束。

或者sql 语句定义:
比如定义Sdept默认都是数学系

use StudntDB
go
alter table Student
add constraint De_Sdept DEFAULT'数学系' for Sdept

定义CHECK约束

用于约束范围
CHECK约束用于限制列的取值在指定范围内,即约束列的值符合应用语义。

这里假设我们要为Student表的Sage列添加取值大于等于15的约束。

在SSMS中图形化地设置CHECK约束的步骤为:

1)在Student的表设计器标签页上,在该表的任意一个列上右击鼠标,然后从弹出的菜
单中选择“CHECK约束”命令(可参见图10-12所示),弹出如图10-24所示的CHECK约
束窗口。

2)在图10-24所示窗口上单击“添加”按钮,CHECK约束窗口成为如图10-25所示形
式。可以在“名称”框中输入约束的名字(也可以采用系统提供的默认名)。

3)在“表达式”框中输人约束的表达式(如图10-25中的:Sage>=15),也可以单
击“表达式”右边的按钮,然后在弹出的“CHECK约束表达式”窗口中输入CHECK
约束表达式,如图10-26所示。

4)单击“关闭”按钮,回到SSMS窗口,单击“保存”按钮,保存所做的修改。

或者sql 语句

use StudntDB
go
alter table Student
add constraint LS_Sage check(Sage>=15)

相关文章