SQL约束讲解

SQL约束讲解
SQL约束讲解

SQL约束讲解

编辑人:星辰·樱

一.约束的类型

SQL Server 系统提供了6种约束类型,即not null非空约束,primary key主键约束,Foreign key外键约束,unique唯一约束,check检查约束和default 默认约束。

约束与完整性之间的关系

域完整性:default ,check。实体完整性:primary key ,unique。

参照完整性:foreign key。

二.定义约束的方式

定义约束可以使用create table语句或alter table语句完成。前者表示创建表的同时定义约束,后者表示在已有表中定义约束。

定义约束时,即可以所约束放在一个列上,也可以约束放在多个列上。前者称为列级约束,后者称为表级约束。

定义约束和修改约束时,要考虑以下几个因素:

1.不必删除表,就可以直接创建、修改表和删除约束的定义。

2.应该在应用程序中增加错误检查机制,测试数据是否与约束相冲突。

3.当在表上增加约束时,SQL Server系统将检查表中的数据是否与约束冲突。

4.一般情况,约束的名称应该符合,约束类型简名_表名_列名_代号这样的形式。

1.主键约束

主键约束用来强制数据的实体完整性,它是在表中定义一个主建来唯一标识表中的每行记录。

--T-SQL语句

Create table 表名

(列名数据类型constraint 主键约束名primary key [,···n] ---列级主键Constraint 主键约束名primary key (列名[,···n]) ---表级主键——alter table命令

Alter table 表名

Add constraint 列名primary key [clustered|nonclustered] {(列名[,···n])} ·clustered:表示在该列上建立聚集索引。

·nonclustered:表示在该列上建立非聚焦索引。

2.NUIQUE约束

Unique约束主要用来限制表的非主键列中允许输入重复值,用来强调数据的

实体完整性。

——在创建表的时候创建惟一约束:

Create table 表名

(列名数据类型constraint 惟一约束名unique

[,···n]

[,constraint 惟一约束名unique(列名[,···n])])

——为已存在的表创建惟一约束:

Alter table 表名

Add constraint 列名unique [clustered|nonclustered] {(列名)[,···n]}

注意:主键与unique约束的区别主要如下

1.unique约束,主要用在非主键的一列或多列上要求数据惟一的情况。

2.Unique约束,允许该列上存在null值,而主键决不允许出现这种情况。

3.可以在一个表上设置多个unique约束,而在一个表中只能设置一个主键约束。

3.外键约束

外键是指一个表中的一列或列组合,它虽不是该表的主键,但却是另一个表的主键。

为已经存在的表创建惟一约束:

Alter table 表名

Add constraint 外键的约束名称foreign key {(列名)[,···]}

references 主键表名称[(主键表的主键列的名称[,···])]

4.DEFAULI约束

默认约束用来强制数据的域完整性,当设置列没有为该列提供输入值,则系统会自动将默认值赋给该列。

为已经存在的表创建惟一约束:

Alter table 表名

Add constraint 默认约束名称default 默认值[for 列名]

注意:(1)定义的常量值必须与该列的数据类型和精度是一致的。

(2)default约束只能应用于insert语句。

(3)每个列只能定义一个default约束。

(4)default约束不能放在有identity属性的列上或者数据类型为timestamp 的列上,因为这些列系统都会自动提供数据。

(5)default约束允许指定一些由系统函数提供的值。

5.CHECK约束

Check约束即检查约束,用来强制数据域的完整性,它使用逻辑表达式来限

制表中的列可以接受哪些数据值。

Alter table 表名

Add constraint check约束名称check (check约束的条件表达式)[,···n]

注意:

(1)一个列上可以定义多个CEHCK约束。

(2)当执行INSERT语句或UPDATE语句时,该约束验证相应的数据是否满足CHECK约束的条件,但是执行DELETE语句时不检查CEHCK约束。

(3)每个列只能定义一个DEFAULE约束。

(4)CHECK约束不能放在有IDENTITY属性的列上或者数据类型为timestamp 的列上,因为这些列系统都会自动提供数据。

(5)CHECK约束不能包含子查询语句。

三.约束管理

1.查看约束

[exec] sp_help 约束名称

如果约束存在文本信息,也可以用sp_helptext来查看

[exec] sp_helptext 约束名称

2.删除约束

Alter table 表名

Drop constraint 约束名称

四.默认值

默认约束与默认对象的不同:默认对象是独立于表中,需要先创建对象,然后将其绑定到一个列或多个列上,定义一次可以使用多次。

1.语法格式

Create default

Create default 默认值名称

As

常量表达式

2.需要注意的问题

(1)不能将create default语句与其他T-SQL语句放在同一个批处理中。

(2)只能在当前数据库中创建默认值对象,且名称必须惟一。

(3)默认值必须与其要绑定有列的数据类型兼容否则生成错误信息。

(4)如果默认值对于它所绑定的列而言太长,由该值会被截断。

(5)如果要绑定的列同时有相关联的规则,默认值不能违反相应的规则,如果违反同一列的规则,则也会出现错误信息。

3.使用默认值

Exec sp_bindefault ‘默认值名称’,‘表名.字段名’

注意:(1)默认值不能绑定到text、ntext、image、varchar(max)、

nvarchar(max)、varbinary(max)、xml和timestamp,也不能绑定到具有identity属性的列、计算列或已经具有default约束的列。

(2)可以使用sp_bindefault在不取消绑定现有默认值的情况下,将新的默认值绑定到指定列,覆盖原有的默认值。

(3)不能将默认值绑定到SQL Server2005的系统数据类型。

4.解除默认值

Exec sp_unbindefault ‘表名。字段名’

5.删除默认值

Drop default 默认值对象

五.规则

规则:在向表中的某列插入或更新数据时,用它来限制输入值的取值范围。与check检查约束不同的是,规则对象是独立于表的,需要先创建对象,然后将其绑定到一个列或多个列上,定义一次可以使用多次。

区别:(1)规则是一种数据库对象,它的作用与check约束相同,用来限制输入值的取值范围,实现强制数域的完整性。

(2)规则与check约束相比较,规则比check约束更复杂,规则需要单独创建,然后绑定到列上,而check可以在建表时由check table 语句将其作为表的一部分进行指定。

(3)在一个列上只能应用一个规则,但是却可以应用多个check约束。

(4)一个规则只需定义一次就可以被多次应用,可以应用于多个表或多个列,还可以应用到用户定义的数据类型上。而check则不能。

1.语法格式

Create rule 规则名称

As 定义规则的条件(第一个局部变量的前面都有一个@符号)

2.需要注意到的问题

(1)不能将create rule 语句与其他T-SQL语句放在同一个批处理中。

(2)只能在当前数据库中创建规则对象,且名称必须惟一。

(3)规则必须与其要绑定列的数据类型兼容,否则会生成错误信息。

3.绑定规则

Exec sp_bindrule ‘规则名称’,‘表名。字段名’

4.解除规则

Exec sp_unbindrule ‘表名。字段名’

5.删除规则

Drop rule 规则名称

常用SQL语句大全

常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 DROP database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 DROP table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname DROP primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:DROP index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:DROP view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词

SQL常用命令汇总

SQL常用命令汇总 SQL是结果化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据定义、数据操纵和数据控制四个部分。SQL简洁、功能齐全,已成为目前应用最广的关系数据库语言。 一、SQL的发展及标准化 1.SQL的发展 SQL是当前最为成功、应用最为广泛的关系数据库语言,其发展主要经历了以下几个阶段; (1)1974年,由Chamberlin和Boyce提出,当时称为SEQUEL(Structured English Query Language); (2)1976年,IBM公司对SEQUEL进行了修改,并将其用于本公司的SYSTEM R关系数据库系统中; (3)1981年,推出了商用关系数据库SQL/DS,并将其名字改为SQL,由于SQL功能强大,简洁易用,因此得到了广泛的应用; (4)今天,SQL广泛应用于各种大型数据库,如Sybase,INFORMIX,SQL Server,Oracle,DB2,INGRES等,也用于各种小型数据库,如FoxPro,Access等。 2.SQL标准化 随着关系数据库系统和日益广泛,SQL的标准化工作也在紧张地进行着,二十多年来已制订了多个SQL标准:SQL-86,SQL-89,SQLL2和SQL-99。 二、SQL的基本概念 1.基本表——一个关系对应一个表。基本表是独立存在的表,不是由其他的表导出的 表。 2.视图——是一个或几个基本表导出的表,是一个虚拟的表。它本身不独立存在于数 据中,数据库中只存放视图对应的数据,这些数据仍存放在导出视图的基本表中。 当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。 三、SQL的主要特点 SQL有如下几个特点。 (1)SQL是类似于英语的自然语言,简洁易用。 (2)SQL是一种非过程语言。 (3)SQL是一种面向集合的语言。 (4)SQL既是自含式语言,又是嵌入式语言;可独立使用,也可以嵌入到宿主语言中。 (5)SQL是数据库查询(Query)、数据定义(Definition)、数据操纵(Manipulation)和数据控制(Control)四种功能。 创建数据表 语法格式:CREA TE TABLE<表名>(<列定义>[{,<列定义>|<表约束>}]) 例:create table s(xingm c(8),xueh c(8),chengj c(3)) 结果:

SQL建表语句约束

一、基础(建表、建约束、关系) 约束(constraint)是microsoft sql server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。在sql server 中有5 种约束:主关键字约束(primary key constraint)、外关键字约束(foreign key constraint)、惟一性约束(unique constraint)、检查约束(check constraint)和缺省约束(default constraint)。 (最后几页介绍sql基础约束) 1、说明:创建数据库 create database database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device use master exec sp_addumpdevice disk, testback, c:\mssql7backup\mynwind_1.dat --- 开始备份 backup database pubs to testback 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) --建表、建约束、关系 create table tableok ( col1 int, col2_notnull int not null, col3_default nchar(1) not null default(男), --默认男 col4_default datetime not null default(getdate()), --默认得到系统时间 col5_checkintnot null check(col5_check>=18 and col5_check<=55), --添加约束,数据值在18到55之间 col6_checknchar(9) not null check(col6_check like msd0902[0-9][^6-9]), --添加约束,数据值前7位必须是?msd0902?,倒数第两位可以是0-9中任意一个数字,最后一位不是6-9之间的数字。 cola_primary nchar(5) not null primary key, --建立主键 colb_unique int unique, --唯一约束 col7_identity int not null identity(100,1), --自增长,从100开始,每列值增加1个 col8_identity numeric(5,0) not null identity(1,1) --自增长,从1开始,每列值增加1个,最大值是5位的整数 col9_guid uniqueidentifier not null default(newid()) --使用newid()函数,随机获取列值 ) --alter

SQL命令大全-中英文对照

[code=SQL][/code] --语句功能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征--程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标 FETCH --检索一行查询结果 CLOSE --关闭游标 PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句

经典SQL语句大全_主外键_约束

一、基础(建表、建约束、关系) 约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)。 (最后几页介绍SQL基础约束) 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) --建表、建约束、关系 create table tableok ( col1 int, col2_notnull int not null, col3_default nchar(1) not null default('男'), --默认男 col4_default datetime not null default(getdate()), --默认得到系统时间 col5_check int not null check(col5_check>=18 and col5_check<= 55),--添加约束,数据值在18到55之间 col6_check nchar(9) not null check(col6_check like 'msd0902[0-9][^ 6-9]'), --添加约束,数据值前7位必须是‘msd0902’,倒数第两位可以是0-9中任意一个数字,最后一位不是6-9之间的数字。 cola_primary nchar(5) not null primary key, --建立主键 colb_unique int unique, --唯一约束 col7_Identity int not null identity(100,1), --自增长,从100开始,每列值增加1个

数据库(SQL)操作命令大全

下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ?%value1%? ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count * as totalcount from table1 求和:select sum(field1) as sumvalue from table1

SQL约束讲解

SQL约束讲解 编辑人:星辰·樱 一.约束的类型 SQL Server 系统提供了6种约束类型,即not null非空约束,primary key主键约束,Foreign key外键约束,unique唯一约束,check检查约束和default 默认约束。 约束与完整性之间的关系 域完整性:default ,check。实体完整性:primary key ,unique。 参照完整性:foreign key。 二.定义约束的方式 定义约束可以使用create table语句或alter table语句完成。前者表示创建表的同时定义约束,后者表示在已有表中定义约束。 定义约束时,即可以所约束放在一个列上,也可以约束放在多个列上。前者称为列级约束,后者称为表级约束。 定义约束和修改约束时,要考虑以下几个因素: 1.不必删除表,就可以直接创建、修改表和删除约束的定义。 2.应该在应用程序中增加错误检查机制,测试数据是否与约束相冲突。 3.当在表上增加约束时,SQL Server系统将检查表中的数据是否与约束冲突。 4.一般情况,约束的名称应该符合,约束类型简名_表名_列名_代号这样的形式。 1.主键约束 主键约束用来强制数据的实体完整性,它是在表中定义一个主建来唯一标识表中的每行记录。 --T-SQL语句 Create table 表名 (列名数据类型constraint 主键约束名primary key [,···n] ---列级主键Constraint 主键约束名primary key (列名[,···n]) ---表级主键——alter table命令 Alter table 表名 Add constraint 列名primary key [clustered|nonclustered] {(列名[,···n])} ·clustered:表示在该列上建立聚集索引。 ·nonclustered:表示在该列上建立非聚焦索引。 2.NUIQUE约束 Unique约束主要用来限制表的非主键列中允许输入重复值,用来强调数据的

SQL Server外关键字约束的定义

SQL Server外关键字约束的定义 SQL Server外关键字约束的重要性不言而喻,下面就让我们一起来了解一下应该如何定义SQL Server外关键字约束. 兰州中研SQL Server外关键字约束定义了表之间的关系.当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它适合哪个表中哪些列相关联.这样,当在定义SQL Server主关键字约束的表中更新列值,时其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新.外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联的表的列中无与插入的外关键字列值相同的值时,系统会拒绝插入数据.与主关键字相同,不能使用一个定义为TEXT或IMAGE数据类型的列创建外关键字.外关键字最多由16个列组成. 定义外关键字约束的语法如下: CONSTRAINT constraint_name FOREIGN KEY(column_name1[,column_name2,…,column_name16]) REFERENCES ref_table[(ref_column1[,ref_column2,…,ref_column16])] [ON DELETE{CASCADE|NO ACTION}] [ON UPDATE{CASCADE|NO ACTION}]] [NOT FOR REPLICATION] 各参数说明如下: REFERENCES 指定要建立关联的表的信息. ref_table 指定要建立关联的表的名称. ref_column 指定要建立关联的表中的相关列的名称. ON DELETE{CASCADE|NO ACTION} 指定在删除表中数据时,对关联表所做的相关操作.在子表中有数据行与父表中的对应数

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk','testBack', 'c:mssql7backupMyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2? from tab_old definition only 5、说明: 删除新表: tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col?.) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

sql server约束

对于SQL Server中的约束,想必大家并不是很陌生。但是约束中真正的内涵是什么,并不是很多人都很清楚的。本文以详细的文字来介绍了什么是约束,以及如何在数据库编程中使用和使用这些约束,来达到更好的编程效果。(本文部分内容参考了SQL Server联机手册) 内容 数据完整性分类 实体完整性 域完整性 引用完整性 用户定义完整性 PRIMARY KEY约束 DEFAULT约束 CHECK约束 UNIQUE约束 FOREIGN KEY约束 正文 在数据库管理系统中,保证数据库中的数据完整性是非常重要的。所谓数据完整性,就是指存储在数据库中数据的一致性和正确性。约束定义关于列中允许值的规则,是强制完整性的标准机制。使用约束优先于使用触发器、规则和默认值。查询优化器也使用约束定义生成高性能的查询执行计划。 SQL Server联机丛书中,将数据完整性解释如下:“存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。”强制数据完整性可确保数据库中的数据质量。 例如,如果输入了employee_id 值为123 的职员,那么该数据库不应允许其他职员使用同一ID 值。如果计划将employee_rating 列的值范围设定为从1 到5,则数据库不应接受6。如果表有一dept_id 列,该列存储职员的部门编号,则数据库应只允许接受公司中的有效部门编号。 数据完整性分类 在SQL Server中,根据数据完整新措施所作用的数据库对象和范围不同,可以将数据完整性分为以下几种。

实体完整性 域完整性 引用完整性 用户定义完整性 SQL Server联机丛书中指明:“对表进行计划有两个重要步骤:标识列的有效值和确定如何强制列中的数据完整性。” 实体完整性 实体完整性简单的说,就是将表中的每一行看作一个实体。实体完整性要求表的标示符列或主键的完整性。可以通过建立唯一索引、PRIMARY KEY约束、UNIQUE约束,以及列的IDENTITY属性来实施实体完整性。 域完整性 域完整性是指给定列的输入有效性。要求表中指定列的数据具有正确的数据类型、格式和有效的数据范围。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过CHECK 约束和规则)或可能值的范围。域完整性通过FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则来实现。 引用完整性 引用完整性又称参照完整性。引用完整性维持被参照表和参照表之间的数据一致性,他通过主键(PRIMARY KEY)约束和外键(FOREIGN KEY)约束来实现。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。在被参照表中,当其主键值被其他表所参照时,该行不能被删除也不允许改变。在参照表中,不允许参照不存在的主键值。 强制引用完整性时,SQL Server 禁止用户进行下列操作: 当主表中没有关联的记录时,将记录添加到相关表中。 更改主表中的值并导致相关表中的记录孤立。 从主表中删除记录,但仍存在和该记录匹配的相关记录。

SQL命令大全(可编辑修改word版)

下列语句部分是Mssql 语句,不可以在access 中使用。 SQL 分类: DDL 类型包括数据库、表的创建,修改,删除,声明—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML 类型包括数据表中记录的查询,删除,修改,插入—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL 类型包括数据库用户赋权,废除用户访问权限,提交当前事务,中止当前事务—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE db1(db1 代表数据库表,可自命名) 2、说明:删除数据库 drop database db1(db1 代表数据库表,可自命名) 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表

create table tb1(Id int not null primary key,name varchar,..)(tb1 为数据表名,ID 为字段,int 为数据类型整型,not null 为数据是否可为空,Primary Key 为主键设置,其中not null,primary key 为可选项,字段,数据类型自定义。) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明: 删除新表:drop table tb1 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2 中列加上后数据类型也不能改变,唯一能改变的是增加varchar 类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(ID)(设置某字段为主键,ID 可自由设置,主键数据不可重复) 说明: 删除主键:Alter table tabname drop primary key(ID)(删除某字段主键) 8、说明: 创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:

SQL命令大全 中文翻译

SQL命令大全--中文翻译 2009-05-2413:25:39浏览次数:0 - SQL语句功能 --数据操作 SELECT--从数据库表中检索数据行和列INSERT--向数据库表添加新数据行 DELETE--从数据库表中删除数据行 UPDATE--更新数据库表中的数据 --数据定义 CREATE TABLE--创建一个数据库表 DROP TABLE--从数据库中删除表 ALTER TABLE--修改数据库表结构 CREATE VIEW--创建一个视图 DROP VIEW--从数据库中删除视图 CREATE INDEX--为数据库表创建一个索引DROP INDEX--从数据库中删除索引 CREATE PROCEDURE--创建一个存储过程DROP PROCEDURE--从数据库中删除存储过程CREATE TRIGGER--创建一个触发器 DROP TRIGGER--从数据库中删除触发器CREATE SCHEMA--向数据库添加一个新模式DROP SCHEMA--从数据库中删除一个模式CREATE DOMAIN--创建一个数据值域 ALTER DOMAIN--改变域定义 DROP DOMAIN--从数据库中删除一个域 --数据控制 GRANT--授予用户访问权限 DENY--拒绝用户访问 REVOKE--解除用户访问权限 --事务控制 COMMIT--结束当前事务 ROLLBACK--中止当前事务 SET TRANSACTION--定义当前事务数据访问特征--程序化SQL DECLARE--为查询设定游标 EXPLAN--为查询描述数据访问计划 OPEN--检索查询结果打开一个游标 FETCH--检索一行查询结果

sql约束例子

约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)。 7.2.1 主关键字约束 主关键字约束指定表的一列或几列的组合的值在表中具有惟一性,即能惟一地指定一行记录。每个表中只能有一列被指定为主关键字,且IMAGE 和TEXT 类型的列不能被指定为主关键字,也不允许指定主关键字列有NULL 属性。 定义主关键字约束的语法如下: CONSTRAINT constraint_name PRIMARY KEY [CLUSTERED | NONCLUSTERED] (column_name1[, column_name2,…,column_name16]) 各参数说明如下: constraint_name 指定约束的名称约束的名称。在数据库中应是惟一的。如果不指定,则系统会自动生成一个约束名。 CLUSTERED | NONCLUSTERED 指定索引类别,CLUSTERED 为缺省值。其具体信息请参见下一章。 column_name 指定组成主关键字的列名。主关键字最多由16 个列组成。 例7-3:创建一个产品信息表,以产品编号和名称为主关键字 create table products ( p_id char(8) not null, p_name char(10) not null , price money default 0.01 , quantity smallint null , constraint pk_p_id primary key (p_id, p_name) ) on [primary] 7.2.2 外关键字约束 外关键字约束定义了表之间的关系。当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它适合哪个表中哪些列相关联。这样,当在定义主关键字约束的表中更新列值,时其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新。外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联的表的列中无与插入的外关键字列值相同的值时,系统会拒绝插入数据。与主关键字相同,不能使用一个定义为 TEXT 或IMAGE 数据类型的列创建外关键字。外关键字最多由16 个列组成。 定义外关键字约束的语法如下: CONSTRAINT constraint_name FOREIGN KEY (column_name1[, column_name2,…,column_name16]) REFERENCES ref_table [ (ref_column1[,ref_column2,…, ref_column16] )] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] ] [ NOT FOR REPLICATION ] 各参数说明如下: REFERENCES 指定要建立关联的表的信息。 ref_table 指定要建立关联的表的名称。 ref_column 指定要建立关联的表中的相关列的名称。 ON DELETE {CASCADE | NO ACTION}

oracle set命令大全

oracle set命令详解 SET命令参数详解 我好如容易录入的,希望对大家有帮助,如果有错误也请指正.有更好的也请分享. SQL*PLUS维护系统变量,也称SET变量,利用它可为SQL*PLUS交互建立一个特殊的环境,如:设 置NUMBER数据的显示宽度;设置每页的行数;设置列的宽度等。可用SET命令改变这些系统变 量,也可用SHOW命令列出它们. 使用set命令的语法如下: SET 系统变量值 其中系统变量及其可选值如下: ARRAY[SIZE] {20(默认值)|n} AUTO[COMMIT] {OFF(默认值)|ON|IMM[EDIATE]} BLO[CKTERMINATOR] {.(默认值)|C} CMDS[EP] {;|C|OFF(默认值)|ON} COM[PATIBILITY] {V5|V6|V7|NATIVE(默认值)} CON[CAT] {.(默认值)|C|OFF|ON(默认值)} COPYC[OMMIT] {0(默认值)|n} CRT crt DEF[INE] {&|C|OFF|ON(默认值)} ECHO {OFF|ON} EMBEDDED {OFF(默认值)|ON} ESC[APE] { (默认值)|C|OFF(默认值)|ON} FEED[BACK] {6(默认值)|n|OFF|ON} FLU[SH] {OFF|ON(默认值)} HEA[DING] {OFF|ON(默认值)} HEADS[EP] {|(默认值)|C|OFF|ON(默认值)} LIN[ESIZE] {80(默认值)|n} LONG {80(默认值)|n} LONGC[HUNKSIZE] {80(默认值)|n} MAXD[ATA] n NEWP[AGE] {1(默认值)|n} NULL text NUMF[ORMAT] 格式 NUM[WIDTH] {10(默认值)|n}

SQL Server约束和触发器的区别

SQL Server约束和触发器的区别 作者:夏果果出处:博客2011-12-30 06:15 SQL Server约束相信大家都比较了解了,那么,SQL Server约束和触发器的区别在哪里呢…… SQL Server约束相信大家都比较了解了,那么,SQL Server约束和触发器的区别在哪里呢? 在SQL Server数据库中提供了两种主要机制来强制使用业务规则和数据完整性,他们是SQL Server约束和触发器。触发器其实就是一个特殊类型的存储过程,可在在执行某个操作时自动触发。触发器与约束都可以实现数据的一致性。那么他们在使用的过程中,有哪些差异呢?简单的来说,触发器可以实现约束的一切功能。但是在考虑数据一致性问题的时候,首先要考虑通过约束来实现。如果约束无法完成的功能,则再通过触发器来解决。两者从功能上来说,他们的关系如下图所示: 触发器可以包含使用SQL代码的复杂处理逻辑。如果单从功能上来说,触发器可以实现约束的所有功能。但是由于其自身的种种缺陷,其往往不是实现数据一致性等特定功能的首选解决方案。总的来说,只有在约束无法实现特定功能的情况下,才考虑通过触发器来完成。这只是在处理约束与触发器操作过程中的一个基本原则。对于他们两个具体的差异笔者在下面也进行了比较详细的阐述。欢迎大家进行补充。 差异一:错误信息的管理上。 当违反系统的SQL Server约束规则时,需要向用户返回一定的错误信息,方便用户进行排错。约束与触发器在遇到问题时都可以返回给用户一定的错误信息。但是,约束只能够通过标准化的系统错误信息来传递错误消息。如果应用程序需要使用自定义消息和较为复杂的错误处理机制,则必须要使用触发器才能够完成。如现在数据库中有一张产品信息表。为了保证产品的唯一性,要求产品的编号必须唯一。如果用户输入的产品编号跟企业现有的产

oracle 经典SQL语句大全

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1

SQL数据库语句大全大全(完全整理版)

SQL语句大全--语句功能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 -数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引 DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器 CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征 --程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标

相关文档
最新文档