高分悬赏sql语句大全(特别是alter语句)(200分)

  • 主题发起人 主题发起人 knmfkr
  • 开始时间 开始时间
K

knmfkr

Unregistered / Unconfirmed
GUEST, unregistred user!
高分悬赏sql语句大全(特别是alter语句)<br>高分悬赏sql语句大全(特别是alter语句)<br>高分悬赏sql语句大全(特别是alter语句)<br><br>急急!!!
 
ALTER TABLE mytable ADD mynewcolumn INT NULL<br><br>&nbsp; &nbsp; 这个语句向表mytable中增加了一个新字段mynewcolumn。当你增加新字段时,你必须允许它接受空值,因为表中原来可能已经有了许多记录。<br>
 
装sql server 2000中文版;帮助死中文的给你一段<br>&nbsp;Transact-SQL 参考 <br><br>&nbsp;<br>ALTER TABLE<br>通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。<br><br>语法<br>ALTER TABLE table <br>{ [ ALTER COLUMN column_name <br>&nbsp; &nbsp; { new_data_type [ ( precision [ , scale ] ) ]<br>&nbsp; &nbsp; &nbsp; &nbsp; [ COLLATE &lt; collation_name &gt; ]<br>&nbsp; &nbsp; &nbsp; &nbsp; [ NULL | NOT NULL ]<br>&nbsp; &nbsp; &nbsp; &nbsp; | {ADD | DROP } ROWGUIDCOL }<br>&nbsp; &nbsp; ] <br>&nbsp; &nbsp; | ADD<br>&nbsp; &nbsp; &nbsp; &nbsp; { [ &lt; column_definition &gt; ]<br>&nbsp; &nbsp; &nbsp; &nbsp; | column_name AS computed_column_expression<br>&nbsp; &nbsp; &nbsp; &nbsp; } [ ,...n ]<br>&nbsp; &nbsp; | [ WITH CHECK | WITH NOCHECK ] ADD<br>&nbsp; &nbsp; &nbsp; &nbsp; { &lt; table_constraint &gt; } [ ,...n ] <br>&nbsp; &nbsp; | DROP<br>&nbsp; &nbsp; &nbsp; &nbsp; { [ CONSTRAINT ] constraint_name <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | COLUMN column } [ ,...n ] <br>&nbsp; &nbsp; | { CHECK | NOCHECK } CONSTRAINT<br>&nbsp; &nbsp; &nbsp; &nbsp; { ALL | constraint_name [ ,...n ] }<br>&nbsp; &nbsp; | { ENABLE | DISABLE } TRIGGER<br>&nbsp; &nbsp; &nbsp; &nbsp; { ALL | trigger_name [ ,...n ] } <br>}<br><br>&lt; column_definition &gt; ::=<br>&nbsp; &nbsp; { column_name data_type }<br>&nbsp; &nbsp; [ [ DEFAULT constant_expression ] [ WITH VALUES ]<br>&nbsp; &nbsp; | [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]<br>&nbsp; &nbsp; &nbsp; &nbsp; ] <br>&nbsp; &nbsp; [ ROWGUIDCOL ]<br>&nbsp; &nbsp; [ COLLATE &lt; collation_name &gt; ]<br>&nbsp; &nbsp; [ &lt; column_constraint &gt; ] [ ...n ]<br><br>&lt; column_constraint &gt; ::=<br>&nbsp; &nbsp; [ CONSTRAINT constraint_name ]<br>&nbsp; &nbsp; { [ NULL | NOT NULL ]<br>&nbsp; &nbsp; &nbsp; &nbsp; | [ { PRIMARY KEY | UNIQUE }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ CLUSTERED | NONCLUSTERED ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ WITH FILLFACTOR = fillfactor ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ ON { filegroup | DEFAULT } ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ] <br>&nbsp; &nbsp; &nbsp; &nbsp; | [ [ FOREIGN KEY ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; REFERENCES ref_table [ ( ref_column ) ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ ON DELETE { CASCADE | NO ACTION } ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ ON UPDATE { CASCADE | NO ACTION } ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ NOT FOR REPLICATION ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ] <br>&nbsp; &nbsp; &nbsp; &nbsp; | CHECK [ NOT FOR REPLICATION ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ( logical_expression ) <br>&nbsp; &nbsp; }<br><br>&lt; table_constraint &gt; ::=<br>&nbsp; &nbsp; [ CONSTRAINT constraint_name ]<br>&nbsp; &nbsp; { [ { PRIMARY KEY | UNIQUE }<br>&nbsp; &nbsp; &nbsp; &nbsp; [ CLUSTERED | NONCLUSTERED ]<br>&nbsp; &nbsp; &nbsp; &nbsp; { ( column [ ,...n ] ) } <br>&nbsp; &nbsp; &nbsp; &nbsp; [ WITH FILLFACTOR = fillfactor ]<br>&nbsp; &nbsp; &nbsp; &nbsp; [ ON { filegroup | DEFAULT } ]<br>&nbsp; &nbsp; &nbsp; &nbsp; ] <br>&nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp;FOREIGN KEY<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ ( column [ ,...n ] ) ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ ON DELETE { CASCADE | NO ACTION } ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ ON UPDATE { CASCADE | NO ACTION } ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ NOT FOR REPLICATION ]<br>&nbsp; &nbsp; &nbsp; &nbsp; | DEFAULT constant_expression<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ FOR column ] [ WITH VALUES ]<br>&nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp;CHECK [ NOT FOR REPLICATION ]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ( search_conditions ) <br>&nbsp; &nbsp; }<br><br>参数<br>table<br><br>是要更改的表的名称。如果表不在当前数据库中或者不属于当前用户所拥有,可以显式指定数据库和所有者。<br><br>ALTER COLUMN<br><br>指定要更改给定列。如果兼容级别是 65 或小于 65,将不允许使用 ALTER COLUMN。有关更多信息,请参见 sp_dbcmptlevel。 <br><br>要更改的列不能是: <br><br>数据类型为 text、image、ntext 或 timestamp 的列。<br><br><br>表的 ROWGUIDCOL 列。<br><br><br>计算列或用于计算列中的列。<br><br><br>被复制列。<br><br><br>用在索引中的列,除非该列数据类型是 varchar、nvarchar 或 varbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。<br><br><br>用在由 CREATE STATISTICS 语句创建的统计中的列。首先用 DROP STATISTICS 语句删除统计。由查询优化器自动生成的统计会由 ALTER COLUMN 自动除去。<br><br><br>用在 PRIMARY KEY 或 [FOREIGN KEY] REFERENCES 约束中的列。<br><br><br>用在 CHECK 或 UNIQUE 约束中的列,除非用在 CHECK 或 UNIQUE 约束中的可变长度列的长度允许更改。<br><br><br>有相关联的默认值的列,除非在不更改数据类型的情况下允许更改列的长度、精度或小数位数。 <br>有些数据类型的更改可能导致数据的更改。例如,将数据类型为 nchar 或 nvarchar 的列更改为 char 或 varchar 类型,将导致扩展字符的转换。有关更多信息,请参见 CAST 和 CONVERT。降低列的精度和小数位数可能导致数据截断。<br><br>column_name<br><br>是要更改、添加或除去的列的名称。对于新列,如果数据类型为 timestamp,column_name 可以省略。对于 timestamp 数据类型的列,如果未指定 column_name,将使用名称 timestamp。<br><br>new_data_type<br><br>是要更改的列的新数据类型。要更改的列的 new_data_type 应符合下列准则: <br><br>原来的数据类型必须可以隐式转换为新数据类型。<br><br><br>new_data_type 类型不能为 timestamp。<br><br><br>对 ALTER COLUMN,ANSI 空默认值始终打开;如果没有指定,列将可为空。<br><br><br>对 ALTER COLUMN,ANSI 填充始终打开。<br><br><br>如果要更改的列是标识列,new_data_type 必须是支持标识属性的数据类型。<br><br><br>将忽略 SET ARITHABORT 的当前设置。ALTER TABLE 语句的行为如同 ARITHABORT 选项为 ON 时一样。 <br>precision<br><br>是指定数据类型的精度。有关有效精度值的更多信息,请参见精度、小数位数和长度。 <br><br>scale<br><br>是指定数据类型的小数位数。有关有效小数位数值的更多信息,请参见精度、小数位数和长度。<br><br>COLLATE &lt; collation_name &gt;<br><br>为更改列指定新的排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。有关列表及更多信息,请参见 Windows 排序规则名称 和 SQL 排序规则名称。<br><br>COLLATE 子句只能用于更改数据类型为 char、varchar、text、nchar、nvarchar 和 ntext 的列的排序规则。如果未指定,则此列采用数据库的默认排序规则。<br><br>若满足下列条件,则 ALTER COLUMN 不能更改排序规则: <br><br>检查约束、外键约束或计算列引用了更改列。 <br><br><br>在此列上创建了索引、统计或全文索引。更改列的排序规则时,该列上自动创建的统计将除去。<br><br><br>SCHEMABOUND 视图或函数引用了此列。 <br>有关 COLLATE 子句的更多信息,请参见 COLLATE。<br><br>NULL | NOT NULL<br><br>指定该列是否可接受空值。不允许空值的列只有在指定了默认值的情况下,才能用 ALTER TABLE 语句向表中添加。添加到表中的新列要么允许空值,要么必须指定默认值。<br><br>如果新列允许空值,而且没有指定默认值,那么新列在表中每一行都包含空值。如果新列允许空值并且指定了新列的默认值,那么可以使用 WITH VALUES 选项在表中所有现有行的新列中存储默认值。<br><br>如果新列不允许空值,那么新列必须具有 DEFAULT 定义,而且新列的所有现有行中将自动装载该默认值。<br><br>可在 ALTER COLUMN 语句中指定 NULL 以使 NOT NULL 列允许空值,但 PRIMARY KEY 约束中的列除外。只有列中不包含空值时,ALTER COLUMN 中才可指定 NOT NULL。必须将空值更新为非空值后,才允许执行 ALTER COLUMN NOT NULL 语句,比如:<br><br>UPDATE MyTable SET NullCol = N'some_value' WHERE NullCol IS NULL<br><br>ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL<br><br>如果 ALTER COLUMN 中指定了 NULL 或 NOT NULL,那么必须同时指定 new_data_type [(precision [, scale ])]。如果不更改数据类型、精度和小数位数,请指定列的这些值的当前值。<br><br>[ {ADD | DROP} ROWGUIDCOL ]<br><br>指定在指定列上添加或除去 ROWGUIDCOL 属性。ROWGUIDCOL 是一个关键字,表示列是行全局唯一标识符列。对于每个表只能指派一个 uniqueidentifier 列作为 ROWGUIDCOL 列。ROWGUIDCOL 属性只能指派给 uniqueidentifier 列。<br><br>ROWGUIDCOL 属性并不强制列中所存储值的唯一性。该属性也不会为插入到表中的新行自动生成值。若要为每列生成唯一值,那么或者在 INSERT 语句中使用 NEWID 函数,或者将 NEWID 函数指定为该列的默认值。<br><br>ADD<br><br>指定要添加一个或多个列定义、计算列定义或者表约束。<br><br>computed_column_expression<br><br>是一个定义计算列的值的表达式。计算列是并不物理地存储在表中的虚拟列,该列用表达式计算得出,该表达式使用同一表中的其它列。例如,计算列的定义可以是:cost AS price * qty。表达式可以是非计算列的列名、常量、函数、变量,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。<br><br>计算列可用于选择列表、WHERE 子句、ORDER BY 字句或其它任何可以使用常规表达式的位置,但下列情况除外: <br><br>计算列不能用作 DEFAULT 或 FOREIGN KEY 约束定义,也不能与 NOT NULL 约束定义一起使用。但是,如果计算列由具有确定性的表达式定义,并且索引列中允许计算结果的数据类型,则可将该列用作索引中的键列,或用作 PRIMARY KEY 或 UNIQUE 约束的一部分。 <br>例如,如果表中有整数列 a 和 b,那么计算列 a+b 上可建立索引,而计算列 a+DATEPART(dd, GETDATE()) 上则不能,因为该值将在后续调用时更改。<br><br>计算列不能作为 INSERT 或 UPDATE 语句的目标。 <br><br><br>说明 &nbsp;由于表中计算列所用列中的各行可能有不同的值,所以计算列的每一行可能有不同的值。<br><br>n<br><br>是表示前面的项可重复 n 次的占位符。<br><br>WITH CHECK | WITH NOCHECK<br><br>指定表中的数据是否用新添加的或重新启用的 FOREIGN KEY 或 CHECK 约束进行验证。如果没有指定,对于新约束,假定为 WITH CHECK,对于重新启用的约束,假定为 WITH NOCHECK。<br><br>WITH CHECK 和 WITH NOCHECK 子句不能用于 PRIMARY KEY 和 UNIQUE 约束。<br><br>如果不想用新 CHECK 或 FOREIGN KEY 约束对现有数据进行验证,请用 WITH NOCHECK,除了个别情况,不建议这样使用。新约束将在以后的所有更新中生效。任何在添加约束时由 WITH NOCHECK 抑制的约束违规都可能导致将来的更新失败,如果这些更新操作要更新的行中包含不符合约束条件的数据。<br><br>查询优化器不考虑用 WITH NOCHECK 定义的约束。将忽略这些约束,直到使用 ALTER TABLE table CHECK CONSTRAINT ALL语句重新启用这些约束为止。<br><br>DROP { [CONSTRAINT] constraint_name | COLUMN column_name }<br><br>指定从表中删除 constraint_name 或者 column_name。如果兼容级别小于或等于 65,将不允许 DROP COLUMN。可以列出多个列或约束。下面的列不能除去: <br><br>被复制列。<br><br><br>用在索引中的列。<br><br><br>用在 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 约束中的列。<br><br><br>有相关联的默认值(由 DEFAULT 关键字定义)的列,或绑定到默认对象的列。<br><br><br>绑定到规则的列。 <br>{ CHECK | NOCHECK} CONSTRAINT<br><br>指定启用或禁用 constraint_name。如果禁用,将来插入或更新该列时将不用该约束条件进行验证。此选项只能与 FOREIGN KEY 和 CHECK 约束一起使用。 <br><br>ALL <br>指定使用 NOCHECK 选项禁用所有约束,或者使用 CHECK 选项启用所有约束。 <br>{ENABLE | DISABLE} TRIGGER<br><br>指定启用或禁用 trigger_name。当一个触发器被禁用时,它对表的定义依然存在;然而,当在表上执行 INSERT、UPDATE 或 DELETE 语句时,触发器中的操作将不执行,除非重新启用该触发器。 <br><br>ALL <br>指定启用或禁用表中所有的触发器。<br><br>trigger_name <br>指定要启用或禁用的触发器名称。 <br>column_name data_type<br><br>新列的数据类型。data_type 可以是任何 Microsoft&amp;reg; SQL Server&amp;#8482; 数据类型或用户定义数据类型。<br><br>DEFAULT<br><br>是指定列默认值的关键字。DEFAULT 定义可用于为表中现有行的新列提供值。DEFAULT 定义不能添加到具有 timestamp 数据类型、IDENTITY 属性、现有 DEFAULT 定义或绑定默认值的列。如果列已有默认值,必须除去旧默认值后才能添加新默认值。为同 SQL Server 先前版本保持兼容性,向 DEFAULT 赋予约束名是可能的。<br><br>IDENTITY<br><br>指定新列是标识列。在表中添加新行时,SQL Server 为列提供一个唯一的增量值。标识列通常与 PRIMARY KEY 约束一起用作表的唯一行标识符。IDENTITY 属性可赋予 tinyint、smallint、int、bigint、decimal(p,0) 或者 numeric(p,0) 列。对于每个表只能创建一个标识列。DEFAULT 关键字和绑定默认值不能用于标识列。要么种子和增量都同时指定,要么都不指定。如果二者都未指定,则取默认值 (1,1)。 <br><br>Seed <br>是用于表中所装载的第一行的值。<br><br>Increment <br>是添加到前一行的标识值的增量值。 <br>NOT FOR REPLICATION<br><br>指定当复制登录(如 sqlrepl)向表中插入数据时,不强制 IDENTITY 属性。也可对约束指定 NOT FOR REPLICATION。当复制登录向表中插入数据时,不检查约束条件。<br><br>CONSTRAINT<br><br>指定 PRIMARY KEY、UNIQUE、FOREIGN KEY 或 CHECK 约束的开始,或者指定 DEFAULT 定义的开始。<br><br>constrain_name<br><br>是新约束。约束的名称必须符合标识符规则,但其名称的首字符不能为 #。如果没有提供 constraint_name,约束使用系统生成的名称。<br><br>PRIMARY KEY<br><br>是通过唯一索引对给定的一列或多列强制实体完整性的约束。对每个表只能创建一个 PRIMARY KEY 约束。<br><br>UNIQUE<br><br>是通过唯一索引为给定的一列或多列提供实体完整性的约束。<br><br>CLUSTERED | NONCLUSTERED<br><br>指定为 PRIMARY KEY 或 UNIQUE 约束创建聚集或非聚集索引。PRIMARY KEY 约束默认为 CLUSTERED;UNIQUE 约束默认为 NONCLUSTERED。<br><br>如果表中已存在聚集约束或索引,那么在 ALTER TABLE 中就不能指定 CLUSTERED。如果表中已存在聚集约束或索引,PRIMARY KEY 约束默认为 NONCLUSTERED。<br><br>WITH FILLFACTOR = fillfactor<br><br>指定 SQL Server 存储索引数据时每个索引页的充满程度。用户指定的 fillfactor 取值范围从 1 到 100。如果没有指定,那么默认值为 0。创建索引时,fillfactor 值越低,不必分配新空间即可添加的新索引条目的可用空间就越多。有关详细信息,请参见 CREATE INDEX。 <br><br>ON {filegroup | DEFAULT}<br><br>指定为约束创建的索引的存储位置。如果指定了 filegroup,索引将在该文件组内创建。如果指定了 DEFAULT,索引将在默认文件组内创建。如果未指定 ON,索引将在表所在的文件组内创建。当为 PRIMARY KEY 或 UNIQUE 约束添加聚集索引时,如果指定了 ON,那么创建聚集索引时整个表都将移到指定的文件组中。<br><br>在这里,DEFAULT 不是一个关键字。DEFAULT 是默认文件组的标识符,必须用符号界定,如 ON "DEFAULT" 或 ON [DEFAULT]。<br><br>FOREIGN KEY...REFERENCES<br><br>是为列中数据提供引用完整性的约束。FOREIGN KEY 约束要求列中的每个值在被引用表的指定列中都存在。<br><br>ref_table<br><br>是 FOREIGN KEY 约束所引用的表。<br><br>ref_column<br><br>是新 FOREIGN KEY 约束所引用的一列或多列(置于括号中)。<br><br>ON DELETE {CASCADE | NO ACTION}<br><br>指定当表中被更改的行具有引用关系,并且该行所引用的行从父表中删除时,要对被更改行采取的操作。默认设置为 NO ACTION。 <br><br>如果指定 CASCADE,则从父表中删除被引用行时,也将从引用表中删除引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行删除操作。<br><br>如果表中已存在 ON DELETE 的 INSTEAD OF 触发器,那么就不能定义 ON DELETE 的CASCADE 操作。<br><br>例如,在 Northwind 数据库中,Orders 表和 Customers 表之间有引用关系。Orders.CustomerID 外键引用 Customers.CustomerID 主键。<br><br>如果对 Customers 表的某行执行 DELETE 语句,并且为 Orders.CustomerID 指定 ON DELETE CASCADE 操作,则 SQL Server 将在 Orders 表中检查是否有与被删除的行相关的一行或多行。如果存在相关行,那么 Orders 表中的相关行将随 Customers 表中的被引用行一同删除。<br><br>反之,如果指定 NO ACTION,若在 Orders 表中至少有一行引用 Customers 表中要删除的行,则 SQL Server 将产生一个错误并回滚 Customers 表中的删除操作。<br><br>ON UPDATE {CASCADE | NO ACTION}<br><br>指定当表中被更改的行具有引用关系,并且该行所引用的行在父表中更新时,要对被更改行采取的操作。默认设置为 NO ACTION。 <br><br>如果指定 CASCADE,则在父表中更新被引用行时,也将在引用表中更新引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行更新操作。<br><br>如果表中已存在 ON DELETE 的 INSTEAD OF 触发器,那么就不能定义 ON DELETE 的CASCADE 操作。<br><br>例如,在 Northwind 数据库中,Orders 表和 Customers 表之间有引用关系。Orders.CustomerID 外键引用 Customers.CustomerID 主键。<br><br>如果对 Customers 表的某行执行 UPDATE 语句,并且为 Orders.CustomerID 指定 ON UPDATE CASCADE 操作,则 SQL Server 将在 Orders 表中检查是否有与被更新行相关的一行或多行。如果存在相关行,那么 Orders 表中的相关行将随 Customers 表中的被引用行一同更新。<br><br>反之,如果指定了 NO ACTION,若在 Orders 表中至少存在一行引用 Customers 表中要更新的行,那么 SQL Server 将引发一个错误并回滚 Customers 表中的更新操作。<br><br>[ASC | DESC]<br><br>指定加入到表约束中的一列或多列的排序次序。默认设置为 ASC。<br><br>WITH VALUES<br><br>指定在添加到现有行的新列中存储 DEFAULT constant_expression 中所给定的值。只有在 ADD 列子句中指定了 DEFAULT 的情况下,才能使用 WITH VALUES。如果要添加的列允许空值且指定了 WITH VALUES,那么将在现有行的新列中存储默认值。如果没有指定 WITH VALUES 且列允许空值,那么将在现有行的新列中存储 NULL 值。如果新列不允许空值,那么不论是否指定 WITH VALUES,都将在现有行的新列中存储默认值。<br><br>column[,...n]<br><br>是新约束所用的一列或多列(置于括号中)。<br><br>constant_expression<br><br>是用作列的默认值的字面值、NULL 或者系统函数。<br><br>FOR column<br><br>指定与表级 DEFAULT 定义相关联的列。<br><br>CHECK<br><br>是通过限制可输入到一列或多列中的可能值强制域完整性的约束。<br><br>logical_expression<br><br>是用于 CHECK 约束的返回 TRUE 或 FALSE 的逻辑表达式。用于 CHECK 约束的 Logical_expression 不能引用其它表,但可引用同一表中同一行的其它列。<br><br>注释<br>若要添加新数据行,请使用 INSERT 语句。若要删除数据行,请使用 DELETE 或 TRUNCATE TABLE 语句。若要更改现有行中的值,请使用 UPDATE 语句。<br><br>ALTER TABLE 语句指定的更改将立即实现。如果这些更改需要修改表中的行,ALTER TABLE 将更新这些行。ALTER TABLE 将获取表上的架构修改锁,以确保在更改期间其它连接不能引用该表(甚至不能引用其元数据)。对表进行的更改将记录于日志中,并且可以完全恢复。影响非常大的表中所有行的更改,比如除去一列或者用默认值添加 NOT NULL 列,可能需要较长时间才能完成,并会生成大量日志记录。如同影响大量行的 INSERT、UPDATE 或者 DELETE 语句一样,这一类 ALTER TABLE 语句也应小心使用。<br><br>如果过程高速缓存中存在引用该表的执行计划,ALTER TABLE 会将这些执行计划标记为下次执行时重新编译。<br><br>如果 ALTER TABLE 语句指定更改其它表所引用的列值,那么根据引用表中 ON UPDATE 或者 ON DELETE 所指定的操作,将发生以下两个事件之一。 <br><br>如果在引用表中没有指定值或指定了 NO ACTION(默认值),那么 ALTER TABLE 语句导致的更改父表中被引用列的操作将回滚,并且 SQL Server 将引发一个错误。<br><br><br>如果在引用表中指定了 CASCADE,那么由 ALTER TABLE 语句导致的对父表的更改将应用于父表及其相关表。 <br>添加 sql_variant 列的 ALTER TABLE 语句会生成下列警告:<br><br>The total row size (xx) for table 'yy' exceeds the maximum number of bytes per row (8060). Rows that exceed the maximum number of bytes will not be added.<br>因为 sql_variant 的最大长度为 8016 个字节,所以产生该警告。当某 sql_variant 列所含值接近最大长度时,即会超过行长度的最大字节限制。<br><br>ALTER TABLE 语句对具有架构绑定视图的表执行时,所受限制与当前在更改具有简单索引的表时所受的限制相同。添加列是允许的。但是,不允许删除或更改参与架构绑定视图的表中的列。如果 ALTER TABLE 语句要求更改用在架构绑定视图中的列,更改操作将失败,并且 SQL Server 将引发一条错误信息。有关 SCHEMABINDING 和索引视图的更多信息,请参见 CREATE VIEW。<br><br>创建引用表的架构绑定视图不会影响在基表上添加或删除触发器。<br><br>当除去约束时,作为约束的一部分而创建的索引也将除去。而通过 CREATE INDEX 创建的索引必须使用 DROP INDEX 语句来除去。DBCC DBREINDEX 语句可用来重建约束定义的索引部分;而不必使用 ALTER TABLE 先除去再重新添加约束。<br><br>必须删除所有基于列的索引和约束后,才能删除列。<br><br>添加约束时,所有现有数据都要进行约束违规验证。如果发生违规,ALTER TABLE 语句将失败并返回一个错误。<br><br>当在现有列上添加新 PRIMARY KEY 或 UNIQUE 约束时,该列中的数据必须唯一。如果存在重复值,ALTER TABLE 语句将失败。当添加 PRIMARY KEY 或 UNIQUE 约束时,WITH NOCHECK 选项不起作用。<br><br>每个 PRIMARY KEY 和 UNIQUE 约束都将生成一个索引。UNIQUE 和 PRIMARY KEY 约束的数目不能导致表上非聚集索引的数目大于 249,聚集索引的数目大于 1。<br><br>如果要添加的列的数据类型为 uniqueidentifier,那么该列可以使用 NEWID() 函数作为默认值,以向表中现有行的新列提供唯一标识符值。<br><br>SQL Server 在列定义中并不强制以特定的顺序指定 DEFAULT、IDENTITY、ROWGUIDCOL 或列约束。<br><br>ALTER TABLE 的 ALTER COLUMN 子句并不会在列上绑定或取消绑定任何规则。必须分别使用 sp_bindrule 或 sp_unbindrule 来绑定或取消绑定规则。<br><br>可将规则绑定到用户定义数据类型。然后 CREATE TABLE 将自动在以该用户定义数据类型定义的列上绑定该规则。当用 ALTER COLUMN 更改列数据类型时,并不会取消绑定这些规则。原用户定义数据类型上的规则仍然绑定在该列上。在 ALTER COLUMN 更改了列的数据类型之后,随后执行的任何从该用户定义数据类型上取消绑定规则的 sp_unbindrule 都不会导致从更改了数据类型的列上取消绑定该规则。如果 ALTER COLUMN 将列的数据类型更改为绑定了规则的用户定义数据类型,那么绑定到新数据类型的规则不会绑定到该列。<br><br>权限<br>ALTER TABLE 权限默认授予表的所有者、sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员且不可转让。<br><br>示例<br>A. 更改表以添加新列<br>下例添加一个允许空值的列,而且没有通过 DEFAULT 定义提供值。各行的新列中的值将为 NULL。<br><br>CREATE TABLE doc_exa ( column_a INT) <br>GO<br>ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL<br>GO<br>EXEC sp_help doc_exa<br>GO<br>DROP TABLE doc_exa<br>GO<br><br>B. 更改表以除去列<br>下例修改表以删除一列。<br><br>CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR(20) NULL) <br>GO<br>ALTER TABLE doc_exb DROP COLUMN column_b<br>GO<br>EXEC sp_help doc_exb<br>GO<br>DROP TABLE doc_exb<br>GO<br><br>C. 更改表以添加具有约束的列<br>下例向表中添加具有 UNIQUE 约束的新列。 <br><br>CREATE TABLE doc_exc ( column_a INT) <br>GO<br>ALTER TABLE doc_exc ADD column_b VARCHAR(20) NULL <br>&nbsp; &nbsp;CONSTRAINT exb_unique UNIQUE<br>GO<br>EXEC sp_help doc_exc<br>GO<br>DROP TABLE doc_exc<br>GO<br><br>D. 更改表以添加未验证的约束<br>下例向表中的现有列上添加约束。该列中存在一个违反约束的值;因此,利用 WITH NOCHECK 来防止对现有行验证约束,从而允许该约束的添加。<br><br>CREATE TABLE doc_exd ( column_a INT) <br>GO<br>INSERT INTO doc_exd VALUES (-1)<br>GO<br>ALTER TABLE doc_exd WITH NOCHECK <br>ADD CONSTRAINT exd_check CHECK (column_a &gt; 1)<br>GO<br>EXEC sp_help doc_exd<br>GO<br>DROP TABLE doc_exd<br>GO<br><br>E. 更改表以添加多个带有约束的列<br>下例向表中添加多个带有约束的新列。第一个新列具有 IDENTITY 属性;表中每一行的标识列都将具有递增的新值。<br><br>CREATE TABLE doc_exe ( column_a INT CONSTRAINT column_a_un UNIQUE) <br>GO<br>ALTER TABLE doc_exe ADD <br><br>/* Add a PRIMARY KEY identity column. */ <br>column_b INT IDENTITY<br>CONSTRAINT column_b_pk PRIMARY KEY, <br><br>/* Add a column referencing another column in the same table. */ <br>column_c INT NULL &nbsp;<br>CONSTRAINT column_c_fk <br>REFERENCES doc_exe(column_a),<br><br>/* Add a column with a constraint to enforce that &nbsp; */ <br>/* nonnull data is in a valid phone number format. &nbsp;*/<br>column_d VARCHAR(16) NULL <br>CONSTRAINT column_d_chk<br>CHECK <br>(column_d IS NULL OR <br>column_d LIKE "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" OR<br>column_d LIKE<br>"([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"),<br><br>/* Add a nonnull column with a default. &nbsp;*/ <br>column_e DECIMAL(3,3)<br>CONSTRAINT column_e_default<br>DEFAULT .081<br>GO<br>EXEC sp_help doc_exe<br>GO<br>DROP TABLE doc_exe<br>GO<br><br>F. 添加具有默认值的可为空的列<br>下例添加可为空的、具有 DEFAULT 定义的列,并使用 WITH VALUES 为表中的各现有行提供值。如果没有使用 WITH VALUES,那么每一行的新列中都将具有 NULL 值。<br><br>ALTER TABLE MyTable <br>ADD AddDate smalldatetime NULL<br>CONSTRAINT AddDateDflt<br>DEFAULT getdate() WITH VALUES<br><br>G. 禁用并重新启用一个约束<br>下例禁用用于限制可接受的薪水数据的约束。WITH NOCHECK CONSTRAINT 与 ALTER TABLE 一起使用,以禁用该约束并使正常情况下会引起约束违规的插入操作得以执行。WITH CHECK CONSTRAINT 重新启用该约束。<br><br>CREATE TABLE cnst_example <br>(id INT NOT NULL,<br>&nbsp;name VARCHAR(10) NOT NULL,<br>&nbsp;salary MONEY NOT NULL<br>&nbsp; &nbsp; CONSTRAINT salary_cap CHECK (salary &lt; 100000)<br>)<br><br>-- Valid inserts<br>INSERT INTO cnst_example VALUES (1,"Joe Brown",65000)<br>INSERT INTO cnst_example VALUES (2,"Mary Smith",75000)<br><br>-- This insert violates the constraint.<br>INSERT INTO cnst_example VALUES (3,"Pat Jones",105000)<br><br>-- Disable the constraint and try again.<br>ALTER TABLE cnst_example NOCHECK CONSTRAINT salary_cap<br>INSERT INTO cnst_example VALUES (3,"Pat Jones",105000)<br><br>-- Reenable the constraint and try another insert, will fail.<br>ALTER TABLE cnst_example CHECK CONSTRAINT salary_cap<br>INSERT INTO cnst_example VALUES (4,"Eric James",110000)<br><br>H. 禁用并重新启用触发器<br>下例使用 ALTER TABLE 的 DISABLE TRIGGER 选项来禁用触发器,以使正常情况下会违反触发器条件的插入操作得以执行。然后下例使用 ENABLE TRIGGER 重新启用触发器。<br><br>CREATE TABLE trig_example <br>(id INT, <br>name VARCHAR(10),<br>salary MONEY)<br>go<br>-- Create the trigger.<br>CREATE TRIGGER trig1 ON trig_example FOR INSERT<br>as <br>IF (SELECT COUNT(*) FROM INSERTED<br>WHERE salary &gt; 100000) &gt; 0<br>BEGIN<br>print "TRIG1 Error: you attempted to insert a salary &gt; $100,000"<br>ROLLBACK TRANSACTION<br>END<br>GO<br>-- Attempt an insert that violates the trigger.<br>INSERT INTO trig_example VALUES (1,"Pat Smith",100001)<br>GO<br>-- Disable the trigger.<br>ALTER TABLE trig_example DISABLE TRIGGER trig1<br>GO<br>-- Attempt an insert that would normally violate the trigger<br>INSERT INTO trig_example VALUES (2,"Chuck Jones",100001)<br>GO<br>-- Re-enable the trigger.<br>ALTER TABLE trig_example ENABLE TRIGGER trig1<br>GO<br>-- Attempt an insert that violates the trigger.<br>INSERT INTO trig_example VALUES (3,"Mary Booth",100001)<br>GO<br><br><br>请参见<br><br>DROP TABLE<br><br>sp_help <br><br>&amp;copy;1988-2000 Microsoft Corporation。保留所有权利。<br>
 
再来一段<br><br>&nbsp;Transact-SQL 参考 <br><br>&nbsp;<br>ALTER DATABASE<br>在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。<br><br>ALTER DATABASE 支持数据库选项的设置。在早期版本的 Microsoft&amp;reg; SQL Server&amp;#8482; 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。<br><br>语法<br>ALTER DATABASE database <br>{ ADD FILE &lt; filespec &gt; [ ,...n ] [ TO FILEGROUP filegroup_name ] <br>| ADD LOG FILE &lt; filespec &gt; [ ,...n ] <br>| REMOVE FILE logical_file_name <br>| ADD FILEGROUP filegroup_name <br>| REMOVE FILEGROUP filegroup_name <br>| MODIFY FILE &lt; filespec &gt; <br>| MODIFY NAME = new_dbname <br>| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }<br>| SET &lt; optionspec &gt; [ ,...n ] [ WITH &lt; termination &gt; ] <br>| COLLATE &lt; collation_name &gt; <br>}<br><br>&lt; filespec &gt; ::=<br><br>( NAME = logical_file_name<br>&nbsp; &nbsp; [ , NEWNAME = new_logical_name ]<br>&nbsp; &nbsp; [ , FILENAME = 'os_file_name' ]<br>&nbsp; &nbsp; [ , SIZE = size ]<br>&nbsp; &nbsp; [ , MAXSIZE = { max_size | UNLIMITED } ]<br>&nbsp; &nbsp; [ , FILEGROWTH = growth_increment ] ) <br><br>&lt; optionspec &gt; ::=<br><br>&nbsp; &nbsp; &lt;state_option&gt;<br>&nbsp; &nbsp; | &lt; cursor_option &gt;<br>&nbsp; &nbsp; | &lt; auto_option &gt;<br>&nbsp; &nbsp; | &lt; sql_option &gt;<br>&nbsp; &nbsp; | &lt; recovery_option &gt;<br><br>&nbsp; &nbsp; &lt; state_option &gt; ::=<br>&nbsp; &nbsp; &nbsp; &nbsp; { SINGLE_USER | RESTRICTED_USER | MULTI_USER }<br>&nbsp; &nbsp; &nbsp; &nbsp; | { OFFLINE | ONLINE }<br>&nbsp; &nbsp; &nbsp; &nbsp; | { READ_ONLY | READ_WRITE } <br><br><br>&nbsp; &nbsp; &lt; termination &gt; ::=<br>&nbsp; &nbsp; &nbsp; &nbsp; ROLLBACK AFTER integer [ SECONDS ]<br>&nbsp; &nbsp; &nbsp; &nbsp; | ROLLBACK IMMEDIATE<br>&nbsp; &nbsp; &nbsp; &nbsp; | NO_WAIT<br><br>&nbsp; &nbsp; &lt; cursor_option &gt; ::=<br>&nbsp; &nbsp; &nbsp; &nbsp; CURSOR_CLOSE_ON_COMMIT { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | CURSOR_DEFAULT { LOCAL | GLOBAL } <br><br>&nbsp; &nbsp; &lt; auto_option &gt; ::=<br>&nbsp; &nbsp; &nbsp; &nbsp; AUTO_CLOSE { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | AUTO_CREATE_STATISTICS { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | AUTO_SHRINK { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | AUTO_UPDATE_STATISTICS { ON | OFF } <br><br>&nbsp; &nbsp; &lt; sql_option &gt; ::=<br>&nbsp; &nbsp; &nbsp; &nbsp; ANSI_NULL_DEFAULT { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | ANSI_NULLS { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | ANSI_PADDING { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | ANSI_WARNINGS { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | ARITHABORT { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | CONCAT_NULL_YIELDS_NULL { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | NUMERIC_ROUNDABORT { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | QUOTED_IDENTIFIER { ON | OFF }<br>&nbsp; &nbsp; &nbsp; &nbsp; | RECURSIVE_TRIGGERS { ON | OFF }<br><br>&nbsp; &nbsp; &lt; recovery_option &gt; ::=<br>&nbsp; &nbsp; &nbsp; &nbsp; RECOVERY { FULL | BULK_LOGGED | SIMPLE }<br>&nbsp; &nbsp; &nbsp; &nbsp; | TORN_PAGE_DETECTION { ON | OFF }<br><br>参数<br>database<br><br>是要更改的数据库的名称。<br><br>ADD FILE<br><br>指定要添加文件。<br><br>TO FILEGROUP<br><br>指定要将指定文件添加到的文件组。<br><br>filegroup_name<br><br>是要添加指定文件的文件组名称。<br><br>ADD LOG FILE<br><br>指定要将日志文件添加到指定的数据库。<br><br>REMOVE FILE<br><br>从数据库系统表中删除文件描述并删除物理文件。只有在文件为空时才能删除。<br><br>ADD FILEGROUP<br><br>指定要添加文件组。<br><br>filegroup_name<br><br>是要添加或除去的文件组名称。<br><br>REMOVE FILEGROUP<br><br>从数据库中删除文件组并删除该文件组中的所有文件。只有在文件组为空时才能删除。<br><br>MODIFY FILE<br><br>指定要更改给定的文件,更改选项包括 FILENAME、SIZE、FILEGROWTH 和 MAXSIZE。一次只能更改这些属性中的一种。必须在 &lt;filespec&gt; 中指定 NAME,以标识要更改的文件。如果指定了 SIZE,那么新大小必须比文件当前大小要大。只能为 tempdb 数据库中的文件指定 FILENAME,而且新名称只有在 Microsoft SQL Server 重新启动后才能生效。<br><br>若要更改数据文件或日志文件的逻辑名称,应在 NAME 选项中指定要改名的逻辑文件名称,并在 NEWNAME 选项中指定文件的新逻辑名称。 <br><br>示例如下:<br><br>MODIFY FILE (NAME = logical_file_name, NEWNAME = new_logical_name...)。<br><br>可同时运行几个 ALTER DATABASE database MODIFY FILE 语句以实现多个修改文件操作时性能最优。<br><br>MODIFY NAME = new_dbname<br><br>重命名数据库。<br><br>MODIFY FILEGROUP filegroup_name { filegroup_property | NAME = new_filegroup_name }<br><br>指定要修改的文件组和所需的改动。 <br><br>如果指定 filegroup_name 和 NAME = new_filegroup_name,则将此文件组的名称改为 new_filegroup_name。<br><br>如果指定 filegroup_name 和 filegroup_property,则表示给定文件组属性将应用于此文件组。filegroup_property 的值有: <br><br>READONLY <br>指定文件组为只读。不允许更新其中的对象。主文件组不能设置为只读。只有具有排它数据库访问权限的用户才能将文件组标记为只读。<br><br>READWRITE <br>逆转 READONLY 属性。允许更新文件组中的对象。只有具有排它数据库访问权限的用户才能将文件组标记为读/写。<br><br>DEFAULT <br>将文件组指定为默认数据库文件组。只能有一个数据库文件组是默认的。CREATE DATABASE 语句将主文件组设置为初始的默认文件组。如果在 CREATE TABLE、ALTER TABLE 或者 CREATE INDEX 语句中没有指定文件组,则新表及索引将在默认文件组—中创建。 <br>WITH &lt;termination&gt;<br><br>指定当数据库从一种状态转换到另一种状态时,何时回滚未完成的事务。只能指定一条 termination 子句,而且该子句应跟在 SET 子句后面。 <br><br>ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE <br>设定是在指定秒数之后回滚还是立即回滚。如果省略了 termination 子句,那么将允许事务自主提交或回滚。<br><br>NO_WAIT <br>指定如果请求的数据库语句或选项更改只有等待事务自主提交或回滚才能立即完成,该请求将失败。 <br>COLLATE &lt; collation_name &gt;<br><br>指定数据库的排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。<br><br>有关 Windows 和 SQL 排序规则名称的更多信息,请参见 COLLATE。<br><br>&lt;filespec&gt;<br><br>控制文件属性。 <br><br>NAME <br>指定文件的逻辑名称。<br><br>logical_file_name <br>是在 Microsoft SQL Server 中引用文件时所用的名称。该名称在数据库中必须唯一,并应遵循标识符规则。该名称可以是字符或 Unicode 常量、常规标识符或定界标识符。有关更多信息,请参见使用标识符。 <br><br>FILENAME <br>指定操作系统中的文件名。当和 MODIFY FILE一起使用时,只能对 tempdb 数据库中的文件指定 FILENAME。新 tempdb 文件名只有在 SQL Server 停止并重新启动后才能生效。<br><br>'os_file_name' <br>由操作系统使用的文件的路径和文件名。该文件必须驻留在安装 SQL Server 的服务器上。数据文件和日志文件不应置于压缩的文件系统中。 <br>如果文件位于原始分区上,那么 os_file_name 必须仅指定该原始分区的驱动器字母。每个原始分区上只能存放一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。 <br><br><br>SIZE <br>指定文件大小。<br><br>size <br>是文件的大小。后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值是 512 KB,如果 size 未指定,默认值是 1 MB。当随 ADD FILE 一起指定时,size 是文件的初始大小。当随 MODIFY FILE 一起指定时,size 是文件的新大小,而且必须大于文件的当前大小。<br><br>MAXSIZE <br>指定最大的文件大小。<br><br>max_size <br>是最大的文件大小。后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件大小将一直增长,直至磁盘填满为止。当磁盘即将填满时,Microsoft Windows NT&amp;reg; 应用程序日志将向管理员发出警告。<br><br>UNLIMITED <br>指定文件大小可一直增加直至磁盘已满。<br><br>FILEGROWTH <br>指定文件增长的增量。 <br><br>growth_increment <br>每次需要新的空间时为文件添加的空间大小。值为 0 表示不增长。该值可按 MB、KB 或 % 的形式指定。指定一个整数,不要包含小数位。如果指定了 %,那么文件增量为文件发生增长时文件大小的指定百分比。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果 FILEGROWTH 未指定,默认值为 10%,且最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。 <br>&lt;state_option&gt;<br><br>控制用户对数据库的访问,数据库是否处于联机状态,以及是否允许写操作。 <br><br>SINGLE_USER | RESTRICTED_USER | MULTI_USER <br>控制哪些用户可以访问数据库。如果指定为 SINGLE_USER,那么同一时间只能有一个用户访问数据库。如果指定为 RESTRICTED_USER,那么只有 db_owner、dbcreator 或 sysadmin 角色的成员可以使用数据库。MULTI_USER 使数据库返回到正常操作状态。<br><br>OFFLINE | ONLINE <br>控制数据库是联机还是脱机。<br><br>READ_ONLY | READ_WRITE <br>指定数据库是否处于只读模式。在只读模式下,用户可以从数据库中读取数据,但不能修改数据。当指定 READ_ONLY 时,数据库不能处于使用状态。master 数据库是一个例外,当该数据库设置为 READ_ONLY 时,只有系统管理员才能使用该数据库。READ_WRITE 使数据库返回到读写操作状态。 <br>&lt;cursor_option&gt;<br><br>控制游标选项。 <br><br>CURSOR_CLOSE_ON_COMMIT ON | OFF <br>如果指定为 ON,在事务提交或回滚时所有打开的游标都将关闭。如果指定为 OFF,那么在事务提交时打开的游标仍保持打开;而回滚事务时关闭所有除定义为 INSENSITIVE 或 STATIC 之外的游标。<br><br>CURSOR_DEFAULTLOCAL | GLOBAL <br>控制游标作用域默认为 LOCAL 还是 GLOBAL。 <br>&lt;auto_option&gt;<br><br>控制自动选项。 <br><br>AUTO_CLOSE ON | OFF <br>如果指定为 ON,那么最后一个用户退出后,数据库将干净地关闭,其占用的资源将释放。如果指定为 OFF,那么最后一个用户退出后数据库仍保持打开。<br><br>AUTO_CREATE_STATISTICS ON | OFF <br>如果指定为 ON,那么所有优化查询需要但缺少的统计信息都会在查询优化时自动生成。 <br><br>AUTO_SHRINK ON | OFF <br>如果指定为 ON,数据库文件将定期自动收缩。 <br><br>AUTO_UPDATE_STATISTICS ON | OFF <br>如果指定为 ON,所有查询优化所需的过时的统计信息在都将在优化时自动重建。如果指定为 OFF,统计信息必须手工更新。 <br>&lt;sql_option&gt;<br><br>控制 ANSI 遵从性选项。 <br><br>ANSI_NULL_DEFAULT ON | OFF <br>如果指定为 ON,CREATE TABLE 在确定列是否允许空值时遵从 SQL-92 规则。<br><br>ANSI_NULLS ON | OFF <br>如果指定为 ON,所有与空值的比较运算结果为 UNKNOWN。如果指定为 OFF,非 UNICODE 值与空值的比较运算在两者均为 NULL 时结果为 TRUE。<br><br>ANSI_PADDING ON | OFF <br>如果指定为 ON,在比较或插入前,字符串将填充为同一长度。如果指定为 OFF,字符串将不填充。<br><br>ANSI_WARNINGS ON | OFF <br>如果指定为 ON,当出现诸如被零除的情况时将产生错误或警告。 <br><br>ARITHABORT ON | OFF <br>如果指定为 ON,在执行查询时如果发生溢出或被零除,该查询将终止。<br><br>CONCAT_NULL_YIELDS_NULL ON | OFF <br>如果指定为 ON,当串联操作的两个操作数中任意一个为 NULL 时,结果也为 NULL。如果指定为 OFF,空值将按空字符串对待。默认设置为 OFF。 <br><br>QUOTED_IDENTIFIER ON | OFF <br>如果指定为 ON,双引号将可用于包含定界标识符。<br><br>NUMERIC_ROUNDABORT ON | OFF <br>如果指定为 ON,当表达式中出现精度损失时将产生错误。<br><br>RECURSIVE_TRIGGERS ON | OFF <br>如果指定为 ON,将允许递归激发触发器。RECURSIVE_TRIGGERS OFF(默认值)只禁止直接递归。若要也禁用间接递归,请使用 sp_configure 将 nested triggers 服务器选项设置为 0。 <br>&lt;recovery_options&gt;<br><br>控制数据库恢复选项。 <br><br>RECOVERY FULL | BULK_LOGGED | SIMPLE <br>如果指定为 FULL,系统将对介质错误提供完全保护。如果数据文件损坏,介质恢复可以还原所有已提交的事务。 <br>如果指定为 BULK_LOGGED,将在介质错误保护程度与某些大规模或大容量操作的最优性能及日志存储空间最少占用量之间进行权衡。这些操作包括 SELECT INTO、大容量装载操作(bcp 和 BULK INSERT)、CREATE INDEX 以及文本和图象操作(WRITETEXT 和 UPDATETEXT)。<br><br>在大容量日志记录恢复模型下,对整个类只做最少的日志记录,并且无法逐个操作地控制日志记录行为。<br><br>如果指定为 SIMPLE,系统将提供占用日志空间最小的备份策略。服务器故障恢复不再需要的日志空间可被自动重用。<br><br><br><br>重要 &nbsp;简单恢复模型比其它两种模型更容易管理,但数据文件损坏时造成数据丢失的可能性更大。最近的数据库备份或差异数据库备份之后的更改都将丢失,必须手工重新输入。<br><br>默认恢复模型由 model 数据库的恢复模型确定。若要更改新数据库的默认值,请用 ALTER DATABASE 设置 model 数据库的恢复选项。<br><br><br><br>TORN_PAGE_DETECTION ON | OFF <br>如果指定为 ON,将可以检测到未完成的页。默认设置为 ON。 <br>注释<br>若要删除数据库,请使用 DROP DATABASE 语句。若要更改数据库名称,请使用 sp_renamedb。有关减小数据库大小的更多信息,请参见 DBCC SHRINKDATABASE。 <br><br>在对数据库应用不同的或新的排序规则时,应确保符合以下条件: <br><br>您是当前数据库的唯一用户。<br><br><br>没有依赖数据库排序规则的架构绑定对象。 <br>如果数据库中存在以下依赖数据库排序规则的对象,则 ALTER DATABASE database COLLATE 语句将失败。SQL Server 将针对每一个阻塞 ALTER 操作的对象返回一个错误信息:<br><br>通过 SCHEMABINDING 创建的用户定义函数和视图。<br><br><br>计算列。<br><br><br>CHECK 约束。<br><br><br>表值函数返回包含字符列的表,这些列继承了默认的数据库排序规则。 <br>改变数据库的排序规则不会在任何数据对象的系统名称中产生重复名称。 <br>如果改变排序规则后出现重复的名称,则下列命名空间可能导致改变数据库排序规则的操作失败:<br><br>对象名(如过程、表、触发器或视图)。<br><br><br>架构名(如组、角色或用户)。<br><br><br>标量类型名(如系统和用户定义类型)。<br><br><br>全文目录名称。<br><br><br>对象内的列名或参数名。<br><br><br>表范围内的索引名。 <br>由新的排序规则产生的重复名称将导致改变操作失败,SQL Server 将返回错误信息,指出重复名称所在的命名空间。<br><br>当 BACKUP 语句正在执行时,不能添加或删除文件。<br><br>若要在 size 参数中指定兆字节的分数,应通过乘以数字 1024 将该值转换为千字节。例如,应指定 1536 KB 而不是 1.5MB(1.5 x 1024 = 1536)。<br><br>权限<br>ALTER DATABASE 权限默认授予 sysadmin 和 dbcreator 固定服务器角色成员以及 db_owner 固定数据库角色成员。这些权限是不可传递的。<br><br>示例<br>A. 向数据库中添加文件<br>下例创建数据库,并更改该数据库以添加一个 5 MB 大小的新数据文件。<br><br>USE master<br>GO<br>CREATE DATABASE Test1 ON<br>(<br>&nbsp;NAME = Test1dat1, <br>&nbsp;FILENAME = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/t1dat1.ndf',<br>&nbsp;SIZE = 5MB,<br>&nbsp;MAXSIZE = 100MB,<br>&nbsp;FILEGROWTH = 5MB<br>)<br>GO<br>ALTER DATABASE Test1 <br>ADD FILE <br>(<br>&nbsp;NAME = Test1dat2,<br>&nbsp;FILENAME = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/t1dat2.ndf',<br>&nbsp;SIZE = 5MB,<br>&nbsp;MAXSIZE = 100MB,<br>&nbsp;FILEGROWTH = 5MB<br>)<br>GO<br><br>B. 向数据库中添加由两个文件组成的文件组<br>下例在示例 A 中所创建的 Test1 数据库中创建一个文件组,并将两个 5 MB 的文件添加到该文件组。然后下例将 Test1FG1 设置为默认文件组。<br><br>USE master<br>GO<br>ALTER DATABASE Test1<br>ADD FILEGROUP Test1FG1<br>GO<br><br>ALTER DATABASE Test1 <br>ADD FILE <br>( NAME = test1dat3,<br>&nbsp; FILENAME = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/t1dat3.ndf',<br>&nbsp; SIZE = 5MB,<br>&nbsp; MAXSIZE = 100MB,<br>&nbsp; FILEGROWTH = 5MB),<br>( NAME = test1dat4,<br>&nbsp; FILENAME = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/t1dat4.ndf',<br>&nbsp; SIZE = 5MB,<br>&nbsp; MAXSIZE = 100MB,<br>&nbsp; FILEGROWTH = 5MB)<br>TO FILEGROUP Test1FG1<br><br>ALTER DATABASE Test1<br>MODIFY FILEGROUP Test1FG1 DEFAULT<br>GO<br><br>C. 向数据库中添加两个日志文件<br>下例向数据库中添加两个 5 MB 大小的日志文件。<br><br>USE master<br>GO<br>ALTER DATABASE Test1 <br>ADD LOG FILE <br>( NAME = test1log2,<br>&nbsp; FILENAME = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/test2log.ldf',<br>&nbsp; SIZE = 5MB,<br>&nbsp; MAXSIZE = 100MB,<br>&nbsp; FILEGROWTH = 5MB),<br>( NAME = test1log3,<br>&nbsp; FILENAME = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/test3log.ldf',<br>&nbsp; SIZE = 5MB,<br>&nbsp; MAXSIZE = 100MB,<br>&nbsp; FILEGROWTH = 5MB)<br>GO<br><br>D. 从数据库中删除文件<br>下例将示例 B 中添加到数据库 Test1 中的一个文件删除。<br><br>USE master<br>GO<br>ALTER DATABASE Test1 <br>REMOVE FILE test1dat4<br>GO<br><br>E. 更改文件<br>下例将示例 B 中添加到数据库 Test1 中的一个文件增加大小。<br><br>USE master<br>GO<br>ALTER DATABASE Test1 <br>MODIFY FILE<br>&nbsp; &nbsp;(NAME = test1dat3,<br>&nbsp; &nbsp;SIZE = 20MB)<br>GO<br><br>F. 将主文件组设置为默认文件组<br>假定原来另一个文件组设置为默认文件组,下例将主文件组设置为默认文件组。<br><br>USE master<br>GO<br>ALTER DATABASE MyDatabase <br>MODIFY FILEGROUP [PRIMARY] DEFAULT<br>GO<br><br><br>请参见<br><br>CREATE DATABASE<br><br>DROP DATABASE<br><br>sp_helpdb<br><br>sp_helpfile<br><br>sp_helpfilegroup<br><br>sp_renamedb<br><br>sp_spaceused<br><br>使用恢复模型<br><br>&amp;copy;1988-2000 Microsoft Corporation。保留所有权利。<br>
 
你可以到www.quest.com 下在一个knowledge base for pl/sql
 
太狠了,不给别人机会。
 
谢谢各位<br><br>已经给大家家分了<br><br>参照newyj的语法,但是在0racle7.3不能实现删除一个字段,<br><br>希望高手赐教!!!(给例子!!谢谢)
 
后退
顶部