sql _约束

sql _约束
sql _约束

SQL Server 2005 联机丛书

ALTER TABLE (Transact-SQL) 发送反馈

请参阅

全部折叠全部展开语言筛选器: 全部语言筛选器: 多语言语言筛

选器: Visual Basic语言筛选器: C#语言筛选器: C++语言筛选器:

J#语言筛选器: JScript

通过更改、添加或删除列和约束,重新分配分区,或者启用或禁用约束和触发器,从而修改表的定义。

Transact-SQL 语法约定

语法

ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name

{

ALTER COLUMN column_name

{

[ type_schema_name. ] type_name [ ( { precision [ , scale ]

| max | xml_schema_collection } ) ]

[ NULL | NOT NULL ]

[ COLLATE collation_name ]

| {ADD | DROP } { ROWGUIDCOL | PERSISTED }

}

| [ WITH { CHECK | NOCHECK } ] ADD

{

|

|

} [ ,...n ]

| DROP

{

[ CONSTRAINT ] constraint_name

[ WITH ( [ ,...n ] ) ]

| COLUMN column_name

} [ ,...n ]

| [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT

{ ALL | constraint_name [ ,...n ] }

| { ENABLE | DISABLE } TRIGGER

{ ALL | trigger_name [ ,...n ] }

| SWITCH [ PARTITION

source_partition_number_expression ]

TO [ schema_name. ] target_table

[ PARTITION

target_partition_number_expression ]

}

[ ; ]

::=

{

MAXDOP = max_degree_of_parallelism

| ONLINE = {ON | OFF }

| MOVE TO { partition_scheme_name ( column_name ) | filegroup

| "default"}

}

备注

若要添加新数据行,请使用INSERT。若要删除数据行,请使用DELETE或TRUNCATE TABLE。若要更改现有行中的值,请使用UPDATE。

如果过程缓存中存在引用表的执行计划,ALTER TABLE 会将这些执行计划标记为下次执行时重新编译。

锁和ALTER TABLE

ALTER TABLE 语句指定的更改将立即实现。如果这些更改需要修改表中的行,ALTER TABLE 将更新这些行。ALTER TABLE 将获取表上

的架构来修改锁,以确保在更改期间没有其他连接引用(甚至是该表上的元数据,也不引用),但可在结束时执行需要一个极短的SCH-M 锁的联机索引操作。ALTER TABLE…SWITCH 操作中,源表和目标表都需要锁。对表进行的更改将记录于日志中,并且可以完整恢复。影响超大型表中所有行的更改,比如删除列或者用默认值添加NOT NULL 列,可能需要较长时间才能完成,并将生成大量日志记录。如同影响许多行的INSERT、UPDATE 或者DELETE 语句一样,应谨慎执行这些ALTER TABLE 语句。

并行计划执行

在SQL Server 2005 Enterprise Edition 中,根据max degree of parallelism 配置选项和当前工作负荷,确定运行单个ALTER TABLE ADD(基于索引)CONSTRAINT 或DROP(聚集索引)CONSTRAINT 语句采用的处理器数。如果数据库引擎检测到系统正忙,则在语句执

行开始之前将自动降低操作并行度。可以通过指定MAXDOP 选项,

手动配置用于运行此语句的处理器数。

已分区表

除了执行涉及到已分区表的SWITCH 操作外,ALTER TABLE 可用于更改已分区表的列、约束和触发器的状态,就像它用于非分区表一样。但是,该语句不能用于更改表本身进行分区的方式。若要对已分区表进行重新分区,请使用ALTER PARTITION SCHEME和ALTER PARTITION FUNCTION。此外,不能更改已分区表中列的数据类型。对包含架构绑定视图的表的限制

应用于包含架构绑定视图的表的ALTER TABLE 语句的限制,与当前修改包含简单索引的表时应用的限制相同。允许添加列。但是,不允许删除或更改参与任何架构绑定视图的列。如果ALTER TABLE 语句要求更改用于架构绑定视图中的列,ALTER TABLE 将失败,并且数据库引擎将引发错误消息。有关架构绑定和索引视图的详细信息,请参阅CREATE VIEW (Transact-SQL)。

创建引用表的架构绑定视图不会影响为基表添加或删除触发器。

索引和ALTER TABLE

删除约束时,作为约束的一部分而创建的索引也将被删除。由CREATE INDEX 创建的索引必须使用DROP INDEX 删除。ALTER INDEX 语句可用于重新生成约束定义的索引部分;而不必再使用ALTER TABLE 来删除和添加约束。

必须删除所有基于列的索引和约束后,才能删除列。

如果删除了创建聚集索引的约束,则存储在聚集索引叶级别的数据行将存储在非聚集表中。在SQL Server 2005 中,可以删除聚集索引,然后通过指定MOVE TO 选项,在单个事务中将生成的表移至另一个文件组或分区架构。MOVE TO 选项有以下限制:

?MOVE TO 对索引视图或非聚集索引无效。

?分区方案或文件组必须已经存在。

?如果没有指定MOVE TO,则表将位于为聚集索引定义的同一分区方案或文件组中。

删除聚集索引时,可以指定ONLINE = ON 选项,这样DROP INDEX 事务就不会阻塞对基础数据和相关的非聚集索引的查询和修改。ONLINE = ON 具有下列限制:

?ONLINE = ON 对于也被禁用的聚集索引无效。必须使用ONLINE = OFF 删除禁用的索引。

?一次只能删除一个索引。

?ONLINE = ON 对于索引视图、非聚集索引或本地临时表的索引无效。

删除聚集索引时,需要大小等于现有聚集索引的大小的临时磁盘空间。操作完成后,即可释放此额外空间。

注意:

参数

database_name

创建表时所在的数据库的名称。

schema_name

表所属架构的名称。

table_name

要更改的表的名称。如果表不在当前数据库中,或者不包含在当前用户所拥有的架构中,则必须显式指定数据库和架构。ALTER COLUMN

指定要更改命名列。如果兼容级别等于或低于65,则不允许使

用ALTER COLUMN。有关详细信息,请参阅sp_dbcmptlevel (Transact-SQL)。

更改后的列不能为以下任意一种情况:

?数据类型为timestamp 的列。

?表的ROWGUIDCOL 列。

?计算列或用于计算列的列。

?用在索引中的列,除非该列数据类型为varchar、nvarchar 或varbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。

?用于由CREATE STATISTICS 语句生成的统计信息中的列。

首先,用DROP STATISTICS 语句删除统计信息。由查询优化器自动生成的统计信息将被ALTER COLUMN 自动删除。?用于PRIMARY KEY 或[FOREIGN KEY] REFERENCES 约束中的列。

?用于CHECK 或UNIQUE 约束中的列。但是,允许更改用于CHECK 或UNIQUE 约束中的长度可变的列的长度。

?与默认定义关联的列。但是,如果不更改数据类型,则可以更改列的长度、精度或小数位数。

仅能通过下列方式更改text、ntext 和image 列的数据类型:

?text 更改为varchar(max)、nvarchar(max) 或xml ?ntext 更改为varchar(max)、nvarchar(max) 或xml ?image 更改为varbinary(max)

某些数据类型的更改可能导致数据的更改。例如,如果将

nchar 或nvarchar 列更改为char 或varchar,则可能导

致转换扩展字符。有关详细信息,请参阅CAST 和

CONVERT (Transact-SQL)。降低列的精度或减少小数位数

可能导致数据截断。

无法更改已分区表的列的数据类型。

column_name

要更改、添加或删除的列的名称。column_name 最多可以包含128 个字符。对于新列,如果创建列时使用的数据类型为

timestamp,则可以省略column_name。对于数据类型为

timestamp 的列,如果未指定column_name,则使用名称

timestamp。

[ type_schema_name. ] type_name

更改后的列的新数据类型或添加的列的数据类型。不能为已分区表的现有列指定type_name。type_name 可以为下列任意一种类型:

SQL Server 2005 系统数据类型。

?基于SQL Server 系统数据类型的别名数据类型。用CREATE TYPE 语句创建了别名数据类型,才能将其用于表定义。

?.NET Framework 用户定义类型及其所属的架构。只有在使用CREATE TYPE 语句创建了 .NET Framework 用户定义类型后,才能将其用于表定义。

更改后的列的type_name 应符合下列条件:

?以前的数据类型必须可以隐式转换为新数据类型。

?type_name 不能为timestamp。

?对于ALTER COLUMN,ANSI_NULL 默认值始终为ON;

如果没有指定,列可为空。

?对于ALTER COLUMN,ANSI 填充始终为ON。

?如果修改后的列是标识列,则new_data_type 必须是支持标识属性的数据类型。

?当前的SET ARITHABORT 设置将被忽略。ALTER TABLE 的操作方式与ARITHABORT 设置为ON 时相同。

注意:

precision

指定的数据类型的精度。有关有效精度值的详细信息,请参阅精

度、小数位数和长度(Transact-SQL)。

scale

指定的数据类型的小数位数。有关有效小数位数值的详细信息,

请参阅精度、小数位数和长度(Transact-SQL)。

max

仅应用于varchar、nvarchar 和varbinary 数据类型,以便

存储2^31-1 个字节的字符、二进制数据以及Unicode 数据。xml_schema_collection

仅应用于xml 数据类型,以便将XML 架构与类型相关联。在

架构集合中键入xml 列之前,必须首先使用CREATE XML

SCHEMA COLLECTION在数据库中创建架构集合。COLLATE < collation_name >

指定更改后的列的新排序规则。如果未指定,则为该列分配数据

库的默认排序规则。排序规则名称既可以是Windows 排序规则

名称,也可以是SQL 排序规则名称。有关列表及详细信息,请

参阅Windows 排序规则名称(Transact-SQL)和SQL 排序

规则名称(Transact-SQL)。

COLLATE 子句只能用来更改数据类型为char、varchar、

nchar 和nvarchar 的列的排序规则。若要更改用户定义别名

数据类型列的排序规则,必须执行单独的ALTER TABLE 语句,将列更改为SQL Server 系统数据类型,并更改其排序规则,

然后重新将列更改为别名数据类型。

如果出现以下一种或多种情况,则ALTER COLUMN 不能更改

排序规则:

?CHECK 约束、FOREIGN KEY 约束或计算列引用了更改后的列。

?已为列创建了索引、统计信息或全文索引。如果更改了列的排序规则,则将删除为更改后的列自动创建的统计信息。

?架构绑定视图或函数引用了列。

有关详细信息,请参阅COLLATE (Transact-SQL)。

NULL | NOT NULL

指定列是否可接受空值。如果列不允许空值,则只有在指定了默

认值或表为空的情况下,才能用ALTER TABLE 语句添加该列。

只有同时指定了PERSISTED 时,才能为计算列指定NOT

NULL。如果新列允许空值,但没有指定默认值,则新列在表中的

每一行都包含一个空值。如果新列允许空值,并且指定了新列的

默认值,则可以使用WITH VALUES 将默认值存储到表中每个

现有行的新列中。

如果新列不允许空值,并且表不为空,那么DEFAULT 定义必须

与新列一起添加;并且,加载新列时,每个现有行的新列中将自

动包含默认值。

在ALTER COLUMN 语句中指定NULL,可以强制NOT NULL

列允许空值,但PRIMARY KEY 约束中的列除外。只有列中不

包含空值时,才可以在ALTER COLUMN 中指定NOT NULL。

必须将空值更新为某个值后,才允许执行ALTER COLUMN

NOT NULL 语句,例如:

复制代码

UPDATE MyTable SET NullCol = N'some_value' WHERE NullCol IS NULL

ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL

如果用CREATE TABLE 或ALTER TABLE 语句创建或更改表,

则数据库或会话设置将影响并且可能覆盖用于列定义的数据类型

的为空性。建议您始终将列显式定义为NULL 或NOT NULL(对

于非计算列);或者,如果使用用户定义的数据类型,则建议您

允许该列使用此数据类型的默认为空性。有关详细信息,请参阅CREATE TABLE (Transact-SQL)。

注意:

[ {ADD | DROP} ROWGUIDCOL ]

指定在指定列中添加或删除ROWGUIDCOL 属性。

ROWGUIDCOL 指示列为行GUID 列。每个表中只有一个

uniqueidentifier 列能指定为ROWGUIDCOL 列,并且只能为

uniqueidentifier 列分配ROWGUIDCOL 属性。不能将

ROWGUIDCOL 分配给用户定义数据类型的列。

ROWGUIDCOL 不强制要求列中存储的值的唯一性,也不为插

入到表中的新行自动生成值。若要为每列生成唯一值,则可以在

INSERT 语句中使用NEWID 函数,也可以将NEWID 函数指

定为列的默认值。

[ {ADD | DROP} PERSISTED ]

指定在指定列中添加或删除ROWGUIDCOL 属性。该列必须是

由确定性表达式定义的计算列。对于指定为PERSISTED 的列,SQL Server 2005 Database Engine 将以物理方式在表中存

储计算值;并且,当更新了计算列依赖的任何其他列时,这些值

也将被更新。通过将计算列标记为PERSISTED,可以对确定(但

不精确)的表达式中定义的计算列创建索引。有关详细信息,请

参阅为计算列创建索引。

用作已分区表的分区依据列的任何计算列必须显式标记为

PERSISTED。

WITH CHECK | WITH NOCHECK

指定表中的数据是否用新添加的或重新启用的FOREIGN KEY

或CHECK 约束进行验证。如果未指定,对于新约束,假定为

WITH CHECK,对于重新启用的约束,假定为WITH NOCHECK。

如果不想根据现有数据验证新的CHECK 或FOREIGN KEY

约束,请使用WITH NOCHECK。除极个别的情况外,建议不

要进行这样的操作。在以后所有数据更新中,都将计算该新约束。

如果添加约束时用WITH NOCHECK 禁止了约束冲突,则将来

使用不符合该约束的数据来更新行时,可能导致更新失败。

查询优化器不考虑使用WITH NOCHECK 定义的约束。在使用

ALTER TABLE table CHECK CONSTRAINT ALL 语句重新启

用这些约束之前,将忽略这些约束。

ADD

指定添加一个或多个列定义、计算列定义或者表约束。

DROP { [ CONSTRAINT ] constraint_name | COLUMN

column_name }

指定从表中删除constraint_name 或column_name。可以

列出多个列或约束。如果兼容级别等于或小于65,则不允许

DROP COLUMN。有关详细信息,请参阅sp_dbcmptlevel

(Transact-SQL)。

可通过查询sys.check_constraint、

sys.default_constraints、sys.key_constraints 和

sys.foreign_keys 目录视图来确定约束的用户定义名称或系统

提供的名称。

如果表中存在XML 索引,则不能删除PRIMARY KEY 约束。

无法删除以下列:

?用于索引的列。

?用于CHECK、FOREIGN KEY、UNIQUE 或PRIMARY KEY 约束的列。

?与默认值(由DEFAULT 关键字定义)相关联的列,或绑定到默认对象的列。

?绑定到规则的列。

注意删除列并不回收列所占的磁盘空间。当表的行大小接近或超过其限额时,必须回收已删除的列占用的磁盘空间。通过创建表的聚集索引或使用ALTER INDEX重新生成现有的聚集索引,

可以回收空间。

WITH

指定设置一个或多个删除聚集约束选项。

MAXDOP = max_degree_of_parallelism

只在操作期间覆盖max degree of parallelism 配置选项。有

关详细信息,请参阅max degree of parallelism 选项。

使用MAXDOP 选项来限制执行并行计划时所用的处理器数量。

最大数量为64 个处理器。

max_degree_of_parallelism 可以是:

1

取消生成并行计划。

>1

将并行索引操作中使用的最大处理器数量限制为指定数量。

0(默认值)

根据当前系统工作负荷使用实际的处理器数量或更少数量的处理

器。

有关详细信息,请参阅配置并行索引操作。

注意并行索引操作只在SQL Server 2005 Enterprise

Edition 中可用。

ONLINE = { ON | OFF }

指定在索引操作期间基础表和关联的索引是否可用于查询和数据修改操作。默认值为OFF。

ON

在索引操作期间不持有长期表锁。在索引操作的主要阶段,源表上只使用意向共享(IS) 锁。这使得能够继续对基础表和索引进行查询或更新。操作开始时,将对源对象保持极短时间的共享(S) 锁。操作结束时,如果创建非聚集索引,将在短期内对源获取S (共享)锁;当联机创建或删除聚集索引时,以及重新生成聚集或非聚集索引时,将在短期内获取SCH-M(架构修改)锁。对本地临时表创建索引时,ONLINE 不能设置为ON。

OFF

在索引操作期间应用表锁。创建、重新生成或删除聚集索引或者重新生成或删除非聚集索引的脱机索引操作将对表获取架构修改(Sch-M) 锁。这样可以防止所有用户在操作期间访问基础表。创建非聚集索引的脱机索引操作将对表获取共享(S) 锁。这样可以防止更新基础表,但允许读操作(如SELECT 语句)。

有关详细信息,请参阅联机索引操作的工作方式。有关锁的详细信息,请参阅锁模式。

注意:

MOVE TO ( partition_scheme_name ( column_name [ 1, ... n] ) | filegroup | "default"}

指定一个位置以移动聚集索引的叶级别中的当前数据行。表被移

至新位置。

注意在此上下文中,默认值不是关键字。它是默认文件组的标识

符,必须对其进行分隔,就像在MOVE TO "default" 或MOVE TO [default] 中一样。如果指定了"default",则当前会话的

QUOTED_IDENTIFIER 选项必须为ON。这是默认设置。有关

详细信息,请参阅SET QUOTED_IDENTIFIER

(Transact-SQL)。

{ CHECK | NOCHECK} CONSTRAINT

指定启用或禁用constraint_name。此选项只能与FOREIGN KEY 和CHECK 约束一起使用。如果指定了NOCHECK,则将

禁用约束,从而在将来插入或更新列时,不根据约束条件进行验

证。无法禁用DEFAULT、PRIMARY KEY 和UNIQUE 约束。ALL

指定使用NOCHECK 选项禁用所有约束,或者使用CHECK 选

项启用所有约束。

{ENABLE | DISABLE} TRIGGER

指定启用或禁用trigger_name。禁用触发器时,仍会为表定义该触发器;但是,当对表执行INSERT、UPDATE 或DELETE 语句时,除非重新启用触发器,否则不会执行触发器中的操作。ALL

指定启用或禁用表中的所有触发器。

trigger_name

指定要启用或禁用的触发器的名称。

SWITCH [ PARTITION source_partition_number_expression ] TO [ schema_name.] target_table [ PARTITION target_ partition_number_expression ]

用下列方式之一切换数据块:

?将表的所有数据作为分区重新分配给现有的已分区表。

?将分区从一个已分区表切换到另一个已分区表。

?将已分区表的一个分区中的所有数据重新分配给现有的未分区的表。

如果table 为已分区表,则必须指定

source_partition_number_expression。如果target_table 已进行分区,则必须指定

target_partition_number_expression。如果要将表的数据作

为分区重新分配给现有的已分区表,或者将分区由一个已分区表

切换到另一个已分区表,则目标分区必须存在,并且必须为空。

如果重新分配一个分区的数据以组成单个表,则必须已经创建了

目标表,并且该表必须为空。源表或分区以及目标表或分区必须

在同一个文件组中。对应的索引或索引分区也必须在同一个文件

组中。切换分区还有许多其他限制。有关详细信息,请参阅使用

分区切换高效传输数据。table 不能与target_table 相同。

source_partition_number_expression 和

target_partition_number_expression 为常量表达式,可以

引用变量和函数,其中包括用户定义类型变量和用户定义函数。

它们不能引用Transact-SQL 表达式。

权限

需要对表的ALTER 权限。

ALTER TABLE 权限适用于ALTER TABLE SWITCH 语句涉及的两个表。任何已切换的数据都将继承目标表的安全性。

如果将ALTER TABLE 语句中的任何列定义为公共语言运行时(CLR) 用户定义类型或别名数据类型,都需要对该类型有REFERENCES 权限。

示例

常用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 --检索查询结果打开一个游标

相关文档
最新文档