SQL 约束
来源:互联网 发布:网络机房建设报价单 编辑:程序博客网 时间:2024/05/16 05:47
主键:唯一标识表中的所有行
主键强制实体完整性,也就是说必须是明确的和唯一的。
创建有主键的表:
CREATE TABLE Product
(
ID int NOT NULL PRIMARY KEY,
...
)
为既有表增加主键约束
ALTER TABLE Product
ADD CONSTRAINT PK_Id
PRIMARY KEY (ID)
外键:在表之间发起和强制一些关系来帮助保持参照完整性。
CREATE TABLE EmployeeCrediting
(
EmployeeCreditRating int NOT NULL PRIMARY KEY,
EmployeeID int NOT NULL,
CreditRatingID int NOT NULL,
CONSTRAIN FK_EmployeeCreditRating_Employee
FOREIGN KEY(EmployeeID)
REFERENCES Employe(EmployeeID),
)
为既有表增加外键:
ALTER TABLE EmployeeCrediting
ADD CONSTRAIN FK_EmployeeCreditRating_Employee
FOREIGN KEY(EmployeeID)
REFERENCES Employe(EmployeeID),
创建唯一结束:强制唯一性
CREATE TABLE TABLEA(
Column3 int not null UNIQUE --创建一列结束
...
CONSTRAIN UNQ_Column1_Column2 --创建多列结束
UNIQUE(Column1,Column2)
为既有表增加UNIQUE约束:
ALTER TABLE TableA
ADD CONSTRAIN UNQ_Culture_Name
UNIQE(Name)
DEFAULT约束
DEFAULT用于设置某一列的默认值。
CREATE TABLE TableA
(
SchoolName varchar(20) NOT NULL DEFAULT 'GYU'
)
为既有表增加DEFAULT约束:
ALTER TABLE TableA
ADD CONSTRAINT DF_ShcoolName
DEFAULT 'GYU'
FOR SchoolName
CHECK约束:用于定义列允许的格式和值:
CHECK (规定的格式)
如:
CREATE TABLE TableA
(
columnA int NOT NULL CHECK(columnA .>0 AND columnA <10)
)
在CHECK约束中引用多个列时:
CONSTRAINT CK_EmployeeType
CHECK (educationID>1 AND GPA>2.5 AND GPA<4.0)
为既有表增加CHECK约束
ALTER TABLE TableA WITH NOCHECK
ADD CONSTRAIN CK_STUDENT
CHECK(Name NOT LIKE '%张三%'
增加 WITH NOCHECK,表示既有值会被忽略,只有新的值才会使用CHECK约束进行校验。
禁止和启用约束
要向数据库中插入违反约束的数据时,可以使用NOCHECK。
NOCHECK能用来禁止CHECK或FORGIEN KEY约束,允许你插入违反约束规则的行。
禁用约束:
ALTER TABE TableA
NOCHECK CONSTRAINT FK_TableA_TableB
...
插入数据操作
...
重新启用约束:
ALTER TABE TableA
CHECK CONSTRAINT FK_TableA_TableB
还可以使用ALL关键字来禁止所有的外键和检查约束
NOCHECK CONSTRAINT ALL
启用所有的约束
CHECK CONSTRAINT
从表删除约束
ALTER TABLE TableA
DROP CONSTRAINT FK_TableA_TableB
临时表和表变量
临时表像普通表那样定义,只是它们保存在tempdb数据库中。创建临时表可以:
替代游标。例如:你可以生成一个临时表来替代使用T-SQL游标的方式来遍历结果集,根据每一行执行任务。使用WHILE循环,你能遍历表中的每一行,为某执行操作,然后从临时表中删除行。
作为结果集额外的存储空间。
作为一个临时的,低开销的查找表。
临时表有两种不同的表类型:本地和全局。本地临时表有一个#前缀,全局临时表有##前缀。
本地临时表对于创建它们的当前用户连接可用。多个连接能创建多个名字相同的临时表,而不会引起冲突。本地临时表可以通过DROP语句来删除,或者当用户连接关闭后自动删除
和本地临时表不同,你不能创建相同版本的全局临时表因为这样会产生命名冲突。全局临时表需要显示的使用DROP TABLE来从SQL SERVER中移除。
CREATE TABLE #TABLE
(
ID INT,
NAME VARCHAR(12)
)
INSERT INTO #TABLE
VALUES
(1,'1')
SELECT * FROM #TABLE
表变量:表变更和创建表的语法相似,不同的是使用DECLARE来声明:
DECLARE @TABLE TABLE
(
ID INT,
NAME VARCHAR(12)
)
INSERT INTO @TABLE
VALUES
(1,'1')
SELECT * FROM @TABLE
表变更的语句必须同时执行。如上面三个语句必须一次性同时执行才能有效。如果先执行第一条声明表变更,再执行插入会报错:必须声明表变量"@TABLE"。
- sql约束
- SQL 约束
- SQL约束
- SQL 约束
- sql 约束
- sql约束
- SQL约束
- SQL-约束
- SQL约束
- SQL约束
- SQL 约束
- sql约束
- sql约束
- SQL 约束
- SQL 约束
- SQL 约束
- SQL 约束 (Constraints)、SQL NOT NULL 约束、SQL UNIQUE 约束
- SQL CHECK 约束、SQL DEFAULT 约束
- 嵌入式学习网站
- 第十六~第二十章:全排列,跳台阶,奇偶排序,第一个只出现一次等问题
- 中签概率,IP访问次数,回文等问题
- 程序员编程艺术:第九章、闲话链表追赶问题
- 【毕业生】资历与跳槽
- SQL 约束
- 基于移动平台的多媒体框架——用VLC搭建简单的流媒体服务器
- 第二章、字符串是否包含及相关问题扩展
- 开通博客
- hdu 1398
- Windows Azure 之 Storage Blob 常见操作
- windows xp系统的IIS系统asp.net网站部署
- 第八章、从头至尾漫谈虚函数
- ASP.NET自定义错误页面