T-SQL 学习之路之数据库完整性之域完整性
2015-10-22 19:46
330 查看
数据库完整性是指对数据库的一致性和准确性强制数据完整性可靠性保证数据库中数据的质量。
CHECK约束通过显示输入到列中的值来实现域完整性。
例如:对于stsc数据库score表,grade规定为0分到100分之间,可用CHECK约束表示。
实体完整性要求表中有一个主键,其值不能为空且能唯一地标识对应的记录,又称为行完整性,通过PRIMARY KEY 约束、UNIQUE约束、索引或IDENTITY
属性等实现数据的实体完整性。
例如,对于stsc数据库中student表,stno列作为主键,每一个学生的stno列能唯一地标识该学生对应的行记录信息,通过stno列建立主键约束实现student表的实体完整性。
主键:表中能唯一标识每个数据行的一个或多个列。
外键:一个表中的一个或多个列的组合是另一个表的主键。
A, 使用T-SQL 语句在创建表时创建CHECK约束。
语法格式如下:
例如:在stsc数据库中创建表goods,包含有关域完整性的定义。
B,使用T-SQL 语句在修改表时创建CHECK约束
使用ALTER TABLE 的ADD 子句在修改表时创建CHECK约束,其语法格式如下:
使用 ALTER TABLE 语句的 DROP 子句删除CHECK约束。其语法格式如下:
DEFAULT约束。
默认值可以是常量,也可以是表达式,还可以为NULL值。
创建表时创建DEFALUT约束的语法格式如下:
---------------------数据库完整性分类
数据完整性一般分为域完整性,实体完整性,参照完整性,用户自定义完整性。1,域完整性
域完整性指列数据输入的有效性,又称列完整性,通过CHECK约束、DEFALUT约束、NOT NULL约束、数据类型和规则等实现域完整性。CHECK约束通过显示输入到列中的值来实现域完整性。
例如:对于stsc数据库score表,grade规定为0分到100分之间,可用CHECK约束表示。
2,实体完整性
实体完整性要求表中有一个主键,其值不能为空且能唯一地标识对应的记录,又称为行完整性,通过PRIMARY KEY 约束、UNIQUE约束、索引或IDENTITY属性等实现数据的实体完整性。
例如,对于stsc数据库中student表,stno列作为主键,每一个学生的stno列能唯一地标识该学生对应的行记录信息,通过stno列建立主键约束实现student表的实体完整性。
3,参照完整性
参照完整性保证主表中的数据与从表中数据的一致性,又称为引用完整性,在SQL Server 2008中,通过定义主键(主码)与外键(外码)之间的对应关系实现参照完整性,参照完整性确保键值在所有表中一致。主键:表中能唯一标识每个数据行的一个或多个列。
外键:一个表中的一个或多个列的组合是另一个表的主键。
4,用户自定义完整性
用户自定义完整性不属于其他任何完整性类别的特定业务规则,所有完整性类别都支持用户定义完整性,包括CREATE TABLE 中所有的列级约束和表级约束,存储过程和触发器。-------------------------域完整性
1,check约束
CHECK约束用于对输入列或者整个表中的值设置检查条件,以限制输入值,从而保证数据库的完整性。A, 使用T-SQL 语句在创建表时创建CHECK约束。
语法格式如下:
CREATE TABLE table_name /*指定表名*/ (column_name datatype { NOT NULL | NULL /*指定为空性*/ | [ DEFAULT co nstraint_expression ] /*指定默认值 | [ CONSTRAINT constraint_name ] CHECK ( logical_expression )] /*CHECK约束表达式*/ }[,…n] [ CONSTRAINT constraint_name ] CHECK ( logical_expression )][, )其中,关键字CHECK表示CHECK约束。logial_expression为CHECK约束表达式。
例如:在stsc数据库中创建表goods,包含有关域完整性的定义。
USE stsc CREATE TABLE goods ( gid int NOT NULL, /*商品号*/ gname varchar(100) NOT NULL, /*商品名*/ gprice float NOT NULL CHECK(gprice<=500), /*价格*/ gclass varchar(60) DEFAULT 'articles of everyday use', /*类型*/ gamount int NOT NULL, /*数量*/ gdate date NULL, /*上架日期*/ trade_price float NOT NULL /*批发价格*/ )注意:如果在指定的一个月书中涉及多个列,则该约束必须定义为表的约束。
B,使用T-SQL 语句在修改表时创建CHECK约束
使用ALTER TABLE 的ADD 子句在修改表时创建CHECK约束,其语法格式如下:
ALTER TABLE table_name ADD [<column_definition>] [CONSTRAINT constraint_name] CHECK (logical_expression)例如: 通过修改stsc数据库的goods表,增加批发价格列的CHECK约束。
USE stsc ALTER TABLE goods ADD CONSTRAINT CK_trade_price CHECK(trade_price<=500)C,使用T-SQL语句删除CHECK约束
使用 ALTER TABLE 语句的 DROP 子句删除CHECK约束。其语法格式如下:
ALTER TABLE table_name DROP CONSTRAINT check_name例如:删除stsc数据库的goods表批发价格列的CHECK约束
USE stsc ALTER TABLE goods DROP CONSTRAINT CK_trade_price
2,DEFAULT约束
DEFALUT约束通过定义列的默认值或使用数据库的默认值对象绑定表的列,当没有为某列指定数据时,自动指定列的值。在创建表时,可以创建DEFAULT约束作为表定义的一部分。如果某个表已经存在,则可以为其添加DEFAULT约束,表中的每一列都可以包含一个DEFAULT约束。
默认值可以是常量,也可以是表达式,还可以为NULL值。
创建表时创建DEFALUT约束的语法格式如下:
[CONSTRAINT constraint_name] DEFAULT constant_expression [FOR column_name]例如:在stsc数据库中创建st表时建立DEFALUT约束。
USE stsc CREATE TABLE st ( stno char(4) NOT NULL PRIMARY KEY, stname char(8) NOT NULL, stsex char(2) NOT NULL DEFAULT '男', /* 定义stsex列DEFALUT约束值为'男' */ stbirthday date NOT NULL, specialist char(12) NULL DEFAULT '计算机', /* 定义specialist列DEFALUT约束值为'计算机' */ tc int NULL ) GO
相关文章推荐
- SqlServer 2005 T-SQL Query 学习笔记(3)
- SQL Server中的T-SQL的基本对象
- SqlServer 2005 T-SQL Query 学习笔记(2)
- SqlServer 2005 T-SQL Query 学习笔记(4)
- t-sql/mssql用命令行导入数据脚本的SQL语句示例
- SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
- T-SQL跨库查询
- SQL查询语句大全
- T-SQL WITH AS
- T-SQL触发器
- T-SQL 存储过程Transaction
- sum(cast req_num as float) 用发
- 搜索数据库表对象中包含特定字符串
- Transact-SQL 调试器配置(帮助文档)
- SQLServer通用的CRUD存储过程
- T-SQL判断物理文件是否存在
- SQL Server之视图
- T-SQL学习之索引
- SQL Server数据类型转换
- sql 数据库(database)