您的当前位置:首页正文

数据库表的约束

2022-08-03 来源:客趣旅游网
数据库表的约束

在设计数据库时。为了确保数据库表中数据的质量。须要考虑数据的完整性(数据的完整性是指数据的正确性和⼀致性)。

举个样例:当你要为学⽣建⽴⼀个基本信息表StudentInfo时,这个表中学⽣的名字能够同样可是学号必须不⼀样,⽽他的年龄也得限制在⼀定范围内,像这样类似的“限制”有⾮常多,假设违反了这些限制就制造了与现实不符的失真数据即破坏了数据的完整性。由于数据库不能⾃⾏推断哪些数据失真,所以须要觉得加⼊⼀些约束来保证数据的完整性。

数据库中对表的约束有五种:

1.主键约束(Primary Key constraint):主键列数据唯⼀。⽽且不同意为空。

语法:Constraint 主键约束名 Primary Key [ Clustered | Nonclustered ] ( 列名1,[ 列名2。……。列名n ] ) 主键是表中的⼀列或⼀组列,它们的值能够唯⼀地标识表中的每⼀⾏。

2.唯⼀约束(Unique constraint):该列数据唯⼀,同意为空。但仅仅能出现⼀个空值(不反复性)。

语法:Constraint 约束名 Unique [ Clustered | Nonclustered ] ( 列名1。[ 列名2,…… 列名n] ) 唯⼀性约束保证了除主键外的其他⼀个或⼀组列的数据具有唯⼀性。以防⽌在列中输⼊反复的值。(⼀个表仅仅能够有⼀个主键约束。假设其他列也不希望有反复就能够使⽤唯⼀性约束。)

3.检查约束(Check constraint):范围限制、格式限制

语法:Constraint 约束名 Check [ Not For Replication ] ( 逻辑表达式 ) 检查约束使指定表中⼀列或⼀组列能够接受的数据值或格式。

4.默认约束(Default constraint):

语法:Constraint 约束名 Default 约束表达式 [ For 列名 ]

为指定列定义⼀个默认值。在输⼊数据时。假设没有输⼊该列的值,则将该列的值设置为默认值。

5.外键约束(Foreign Key constraint):表间约束。确保数据的參照完整性

语法:Constraint 约束名 Foreign Key ( 列名1。[ 列名2,……列名n ] ) References 关联表 ( 关联列名1。[ 关联列名2,……关联列名n ])

将当前表中的某⼀列或⼀组列关联到还有⼀个表的主键列。可创建两个表之间的连接。当前表中的列就成为外键。

外键涉及到两个表,⼀个主表。⼀个从表 。主表中的外键是从表中的主键

以下以“学⽣信息”表为例。加⼊约束

Create table StudentInfo(

StudentNo int not null, StudentID int,

StudentName nvarchar(50) , Sex varchar(2) ,

Score float Default(0), --为学⽣的成绩设定默认值0,在没有数据输⼊时。系统⾃⼰主动分配为0. DepartmentNo varchar(10),

Constraint PK_Student Primary Key (StudentNo), --⽤“学号”作主键。仅仅要有学号就能够唯⼀确定⼀位学⽣

Constraint IX_Student Unique(StudentID), --'为“⾝份证”加⼊唯⼀性约束,当输⼊的⾝份证号有反复时会⾃⼰主动检查出错误 Constraint CK_Student Check (Sex In ('男','⼥')), --'检查学⽣的性别是否为男或⼥

--'“学⽣信息”表与“院系”表建⽴外键约束,外键为学⽣信息表的\"所属院系\从表的主键或候选键列为“院系”表的“记录编号” Constraint FK_Student Foreign Key(DepartmentNo) References Department(RecordNo) )

约束的创建主要有两种,以加⼊主键为例:

(1)创建表的时候创建约束,即在CreateTable中定义约束 Create StudentInfo(StudentNo vchar Primary Key。……) 或者

Create StudentInfo(StudentNo vchar,……Constraint PK_Student Primary Key(StudentNo)……) (2)是向已经创建 好的表中加⼊约束,即在Alter Table中创建约束

Alter Table StudentInfo add Constraint PK_Student Primary Key (StudentNo)删除约束:对于存在外键约束的表,假设进⾏删除⾮空的外键,可能会出现错误 Alter Table StudentInfo Drop Constraint PK_Student

约束是SQL Server提供的⾃⼰主动保持数据库完整性的⼀种⽅法,定义了可输⼊表或表的单个列中的数据的限制条件。

对于数据库来说,约束也可分为列约束(Column Constraint)和表约束(Table Constraint)。列约束作为列定义的⼀部分仅仅作⽤于此列本⾝。表约束作为表定义的⼀部分能够作⽤于多个列。约束仅仅是数据库对表管理的⼀种,这些在曾经学过。可是不太会⽤,所以对约束先做⼀个⼩结。

因篇幅问题不能全部显示,请点此查看更多更全内容