数据库--保证数据完整型
2016-01-10 19:54
302 查看
1.实体完整性:实体完整性将定义为特定的表的唯一实体。实体完整性强直表的标识列或主键的完整性,它可以通过在表中设置主键约束、唯一约束或标识列属性来实现。
2.域完整性:域完整性是指给定列的输入有效性。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过检查约束)、或可能值的范围(通过外键约束、检查约束、默认值定义、非空约束)。
3.应用完整性:我们必须在有关联的表中,确保一个表的外键的值来源于另一个表中的主键值。引用完整性一般通过外键约束来记录。
4.用户自定义完整性:用户自定义完整性使我们可以定义不属于其他任何完整性分类的特定业务规则。用户自定义完整性可以通过触发器、存储过程等实现。
创建非空约束:如:不允许在Name和PhoneNo列输入NULL值的语法为:
CREATE TABLE Friend (Name VARCHAR(50) NOT NULL,
PhoneNo VARCHAR(15) NOT NULL);
设置主键约束:主键约束是应用于表的列的一个约束。
下面的代码创建Friend表,并将一个名为My PrimaryKey的主键约束与列Name关联:
CREATE TABLE Friend(
Name VARCHAR(50) NOT NULL,
PhoneNo VARCHAR(15) DEFAULT‘不知道电话号码’NOT NULL,
CONSTRATNT MyprimaryKey PRIMARY KEY (NULL));
对于符合主键,我们只需要列出都好分隔的参与复合主键所有列即可。
如果我们不想给主键约束提供一个名字,也可以使用如下的语法:
CREATE TABLE Friend(
Name VARCHAR(50) NOT NULL,
PhoneNo VARCHAR(15) DEFAULT‘不知道电话号码’NOT NULL,
PRIMARY KEY (NULL));
另外还可以使用跟简单的方法:
CREATE TABLE Friend(
Name VARCHAR(50) PRIMARY KEY NOT NULL,
PhoneNo VARCHAR(15) DEFAULT‘不知道电话号码’NOT NULL);
为测试上面创建的表,我们可以试着先向该表中添加一个姓名为NULL的记录,然后是两个相同的姓名的记录:
INSERT INTO Friend (PhoneNo) VALUES ('555 2323');
INSERT INTO Friend(Name,PhoneNo) VALUES ('ohn Doe','12345678');
INSERT INTO Friend(Name,PhoneNo) VALUES ('ohn Doe','87654321');
设置唯一约束:指给定列的所有的值必须是唯一的。该列在表中每一行的值必须唯一。表可以有多个唯一约束。
以上一个PhoneNo为例,我们可以将其作为唯一列,以确保没有朋友有相同的电话号码。实例
CREATE TABLE Friend(
Name VARCHAR(50) PRIMARY NOT NULL,
PhoneNo VARCHAR(15) UNIQE);
设定默认值:DROP TABLE Friend;
设置检查约束:检查约束是最灵活的约束类型,它允许我们在更改或插入行到数据库时有一个较宽范围的限制。
下面的语句创建Friend表,表中有一个名为Age的列,以及一个名为AgeGonstraint的检查约束,用于防止小于10以及大于100的值进入Age列:
CREATE TABLE Friend(
Name VARCHER(50) PRIMARY KEY NOT NULL,
PhoneNo VARCHER(15) DEFAULT '不知道电话号码',
Age INT,
CONSTRAINT checkAge CHECK (Age BETWEEN 10 and 100));
使用自动编号列:
CREATE TABLE Friend(
Friend INT IDENTITY PRIMARY KEY NOT NULL,
Name VARCHER(50),
PhoneNo VARCHER(15) DEFAULT 'Unknown Phone');
下面的代码如何向一个已存在的表中删除一个UNIQUE约束,同时添加一个主键约束。在这个列子中,我们同时为主键约束提供一个名字:
CREATE TABLE Friend(
Name VARCHER(50) NOT NULL,
PhoneNo VARCHER(15),
CONSTRAINT unq_name UNIQUE(name);
ALTER TABLE Friend DROP CONSTRAINT unq_name;
ALTER TABLE Friend ADD CONSTRAINT pk_FriendName PRIMARY KEY (Name);
2.域完整性:域完整性是指给定列的输入有效性。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过检查约束)、或可能值的范围(通过外键约束、检查约束、默认值定义、非空约束)。
3.应用完整性:我们必须在有关联的表中,确保一个表的外键的值来源于另一个表中的主键值。引用完整性一般通过外键约束来记录。
4.用户自定义完整性:用户自定义完整性使我们可以定义不属于其他任何完整性分类的特定业务规则。用户自定义完整性可以通过触发器、存储过程等实现。
创建非空约束:如:不允许在Name和PhoneNo列输入NULL值的语法为:
CREATE TABLE Friend (Name VARCHAR(50) NOT NULL,
PhoneNo VARCHAR(15) NOT NULL);
设置主键约束:主键约束是应用于表的列的一个约束。
下面的代码创建Friend表,并将一个名为My PrimaryKey的主键约束与列Name关联:
CREATE TABLE Friend(
Name VARCHAR(50) NOT NULL,
PhoneNo VARCHAR(15) DEFAULT‘不知道电话号码’NOT NULL,
CONSTRATNT MyprimaryKey PRIMARY KEY (NULL));
对于符合主键,我们只需要列出都好分隔的参与复合主键所有列即可。
如果我们不想给主键约束提供一个名字,也可以使用如下的语法:
CREATE TABLE Friend(
Name VARCHAR(50) NOT NULL,
PhoneNo VARCHAR(15) DEFAULT‘不知道电话号码’NOT NULL,
PRIMARY KEY (NULL));
另外还可以使用跟简单的方法:
CREATE TABLE Friend(
Name VARCHAR(50) PRIMARY KEY NOT NULL,
PhoneNo VARCHAR(15) DEFAULT‘不知道电话号码’NOT NULL);
为测试上面创建的表,我们可以试着先向该表中添加一个姓名为NULL的记录,然后是两个相同的姓名的记录:
INSERT INTO Friend (PhoneNo) VALUES ('555 2323');
INSERT INTO Friend(Name,PhoneNo) VALUES ('ohn Doe','12345678');
INSERT INTO Friend(Name,PhoneNo) VALUES ('ohn Doe','87654321');
设置唯一约束:指给定列的所有的值必须是唯一的。该列在表中每一行的值必须唯一。表可以有多个唯一约束。
以上一个PhoneNo为例,我们可以将其作为唯一列,以确保没有朋友有相同的电话号码。实例
CREATE TABLE Friend(
Name VARCHAR(50) PRIMARY NOT NULL,
PhoneNo VARCHAR(15) UNIQE);
设定默认值:DROP TABLE Friend;
设置检查约束:检查约束是最灵活的约束类型,它允许我们在更改或插入行到数据库时有一个较宽范围的限制。
下面的语句创建Friend表,表中有一个名为Age的列,以及一个名为AgeGonstraint的检查约束,用于防止小于10以及大于100的值进入Age列:
CREATE TABLE Friend(
Name VARCHER(50) PRIMARY KEY NOT NULL,
PhoneNo VARCHER(15) DEFAULT '不知道电话号码',
Age INT,
CONSTRAINT checkAge CHECK (Age BETWEEN 10 and 100));
使用自动编号列:
CREATE TABLE Friend(
Friend INT IDENTITY PRIMARY KEY NOT NULL,
Name VARCHER(50),
PhoneNo VARCHER(15) DEFAULT 'Unknown Phone');
下面的代码如何向一个已存在的表中删除一个UNIQUE约束,同时添加一个主键约束。在这个列子中,我们同时为主键约束提供一个名字:
CREATE TABLE Friend(
Name VARCHER(50) NOT NULL,
PhoneNo VARCHER(15),
CONSTRAINT unq_name UNIQUE(name);
ALTER TABLE Friend DROP CONSTRAINT unq_name;
ALTER TABLE Friend ADD CONSTRAINT pk_FriendName PRIMARY KEY (Name);
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle数据库执行脚本常用命令小结
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马
- Oracle 手动创建数据库步骤详解