sql数据库完整性约束
删除方法与建立的步骤类似。
2.利用T-SQL语句定义(删除)唯一性约束 (1)在创建表时创建唯一性约束 其语法格式如下。
语法格式1:(只有一个字段作为唯一约束) CREATE TABLE 数据表名 (列名 数据类型 CONSTRAINT 约束名 UNIQUE ) 【例5.3】创建和kc表结构相同的kc_new表,设置课程 名为唯一约束,约束名为ix_kcm1。
语法格式2:(有多个字段结合作为唯一约束,主键也类似) CREATE TABLE 数据表名
( …… CONSTRAINT 约束名 UNIQUE (列名1[,…n]) )
例:创建和cj表结构相同的cj_new表,设置学号和课程 号为唯一约束,约束名为IX_xhkch。
create table cj_new
1.利用Management Studio定义(删除)唯一性约束
步骤1:右键要建立唯一约束的表选择“修改” 。 步骤2:右击要设置唯一约束的字段(列)选择“索引/键”。 步骤3:在弹出的窗口中点击“添加”,在右边窗口的“名称” 处输入约束名,在类型中选择“唯一键”,点击“列”的浏览按钮 选中要设置为唯一约束的字段(如出生日期)。 步骤4:点击“关闭”按钮,保存即可。
字段名 部门编号 部门名称 电话号码
数据类型 char(5) varchar(10) char(13)
允许空 否,主键 否 是
CREATE TABLE bm
(5-1)
(
部门编号 CHAR(5) NOT NULL CONSTRAINT pk_bh
PRIMARY KEY,
部门名称 VARCHAR(10) NOT NULL,
第5章 数据完整性
5.1 数据完整性的基本概念
数据完整性包括实体完整性、域完整性、参照完整性和 用户定义的完整性。
1.实体完整性(Entity Integrity) 实体完整性用于保证数据库中数据表的每一个特定实体 都是唯一的。它可以通过主键约束(PRIMARY KEY)、唯 一键约束(UNIQUE)、索引或标识属性(IDENTITY)来 实现。 2.域完整性(Domain Integrity) 域完整性就是保证数据库中的数据取值的合理性,即保 证指定列的数据具有正确的数据类型、格式和有效的数据范 围。通过为表的列定义数据类型以及检查约束(CHECK)、 默认定义(DEFAULT)、非空(NOT NULL)和规则实现 限制数据范围,保证只有在有效范围内的值才能存储到列中。
5.2.2 唯一键(UNIQUE)约束
可使用UNIQUE约束确保在非主键列中不输入重复值。 在允许空值的列上保证唯一性时,应使用UNIQUE约束而不 是PRIMARY KEY约束,不过在该列中只允许有一个NULL 值。一个表可以定义多个UNIQUE约束,但只能定义一个 PRIMARY KEY约束。
1.利用Management Studio定义(删除)主键
2.利用T-SQL语句定义(删除)主键 (1)在创建表时创建主键约束
其语法格式如下 CREATE TABLE 数据表名 (列名 数据类型 [CONSTRAINT 约束名] PRIMARY KEY)
例:用命令方式新建如下所示的bm表,设置主键名为pk_bh。
4.用户定义的完整性(User-defined Integrity) 这是由用户定义的完整性。用户可以根据自己的业务规 则定义不属于任何完整性分类的完整性。
5.2 约束
约束是通过限制列中数据、行中数据以及表之间数据取 值从而保证数据完整性的非常有效和简便的方法。
5.2.1 主键(PRIMARY KEY)约束 PRIMARY KEY约束在表中定义一个主键,唯一的标 识表中的行。一个表只能有一个PRIMARY KEY约束。 当向表中的现有列添加PRIMARY KEY约束时,SQL Server将检查列中现有的数据以确保现有数据遵从主键的 规则,即无空值、无重复值。 每个表都应有一个主键。主键可以是一列或列组合。
电话号码 CHAR(13)
)
(2)向已有表中添加主键约束 其语法格式如下。
ALTER TABLE 表名 ADD [CONSTRAINT 约束名] PRIMARY KEY(列名1[,…n]))
例:先用图形方式删除cj表中的主键,然后用命令方式添 加主键为学号和课程号,主键名为pk_xhkch。
ALTER TABLE cj
CREATE TABLE kc_new
(5-4)
(课程号 CHAR(4) NOT NULL CONSTRAINT pk_kch1 PRIMARY KEY,
课程名 CHAR(16) NOT NULL CONSTRAINT ix_kcm1 UNIQUE,
学分 SMALLINT,
学时数 SMALLINT)
(5-5)
(
学号char(10) not null ,
课程号char(4) not null,
成绩numeric(5,2)
CONSTRAINT IX_xhkch UNIQUE (学号,课程号)
)
(2)向已有表中添加唯一约束,其语法格式如下。 ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列名1[,…n]))
3.参照完整性(Referential Integrity) 参照完整性定义了一个关系数据库中,不同的表中列之 间的关系(父键与外键)。要求一个表中(参照表)的一列 或列组合的值必须与另一个表(被参照表)中的相关一列或 列组合的值相匹配。被引用的列或列组合称为父键,父键必 须是主键或唯一键,通常父键为主键,主键表(被参照表) 是主表。引用父键的一列或列组合称为外键,外键表(参照 表)是子表。子表的外键必须与主表的主键相匹配,只要依 赖某一主键的外键存在,主表中包含该主键的行就不能被删 除。
(5-2)
ADD CONSTRAINT pk_xhkch PRIMARY KEY(学号,课程号)
(3)删除主键约束 其语法格式如下: ALTER TABLE 表名 DROP CONSTRAINT 约束名 cj
(5-3)
DROP CONSTRAINT pk_xhkch