标题:[求助]ALTER语句?
只看楼主
haddy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-4-19
 问题点数:0 回复次数:5 
[求助]ALTER语句?
我是新手,想请教一下SQL语句的格式有什么要注意的吗?
我输入下面的语句,就是不知道是什么地方出来问题。
            alter table  a  modify  [a#]  char(20);

提示:
      服务器: 消息 170,级别 15,状态 1,行 2
      第 2 行: 'a#' 附近有语法错误。
到底是什么地方出错了
搜索更多相关主题的帖子: 语句 ALTER SQL 服务器 
2005-04-19 14:36
EA_Games
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:539
专家分:0
注 册:2005-3-13
得分:0 
确实有点看不懂你的语句。我贴一些例子给你参考。或者你也可以在SQL SERVER下按F1,看帮助,里面讲的很详细。
A. 更改表以添加新列

下例添加一个允许空值的列,而且没有通过 DEFAULT 定义提供值。各行的新列中的值将为 NULL。

CREATE TABLE doc_exa ( column_a INT) GOALTER TABLE doc_exa ADD column_b VARCHAR(20) NULLGOEXEC sp_help doc_exaGODROP TABLE doc_exaGO
B. 更改表以除去列

下例修改表以删除一列。

CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR(20) NULL) GOALTER TABLE doc_exb DROP COLUMN column_bGOEXEC sp_help doc_exbGODROP TABLE doc_exbGO
C. 更改表以添加具有约束的列

下例向表中添加具有 UNIQUE 约束的新列。

CREATE TABLE doc_exc ( column_a INT) GOALTER TABLE doc_exc ADD column_b VARCHAR(20) NULL    CONSTRAINT exb_unique UNIQUEGOEXEC sp_help doc_excGODROP TABLE doc_excGO
D. 更改表以添加未验证的约束

下例向表中的现有列上添加约束。该列中存在一个违反约束的值;因此,利用 WITH NOCHECK 来防止对现有行验证约束,从而允许该约束的添加。

CREATE TABLE doc_exd ( column_a INT) GOINSERT INTO doc_exd VALUES (-1)GOALTER TABLE doc_exd WITH NOCHECK ADD CONSTRAINT exd_check CHECK (column_a > 1)GOEXEC sp_help doc_exdGODROP TABLE doc_exdGO
E. 更改表以添加多个带有约束的列

下例向表中添加多个带有约束的新列。第一个新列具有 IDENTITY 属性;表中每一行的标识列都将具有递增的新值。

CREATE TABLE doc_exe ( column_a INT CONSTRAINT column_a_un UNIQUE) GOALTER TABLE doc_exe ADD /* Add a PRIMARY KEY identity column. */ column_b INT IDENTITYCONSTRAINT column_b_pk PRIMARY KEY, /* Add a column referencing another column in the same table. */ column_c INT NULL  CONSTRAINT column_c_fk REFERENCES doc_exe(column_a),/* Add a column with a constraint to enforce that   */ /* nonnull data is in a valid phone number format.  */column_d VARCHAR(16) NULL CONSTRAINT column_d_chkCHECK (column_d IS NULL OR column_d LIKE "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" ORcolumn_d LIKE"([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"),/* Add a nonnull column with a default.  */ column_e DECIMAL(3,3)CONSTRAINT column_e_defaultDEFAULT .081GOEXEC sp_help doc_exeGODROP TABLE doc_exeGO
F. 添加具有默认值的可为空的列

下例添加可为空的、具有 DEFAULT 定义的列,并使用 WITH VALUES 为表中的各现有行提供值。如果没有使用 WITH VALUES,那么每一行的新列中都将具有 NULL 值。

ALTER TABLE MyTable ADD AddDate smalldatetime NULLCONSTRAINT AddDateDfltDEFAULT getdate() WITH VALUES
G. 禁用并重新启用一个约束

下例禁用用于限制可接受的薪水数据的约束。WITH NOCHECK CONSTRAINT 与 ALTER TABLE 一起使用,以禁用该约束并使正常情况下会引起约束违规的插入操作得以执行。WITH CHECK CONSTRAINT 重新启用该约束。

CREATE TABLE cnst_example (id INT NOT NULL, name VARCHAR(10) NOT NULL, salary MONEY NOT NULL    CONSTRAINT salary_cap CHECK (salary < 100000))-- Valid insertsINSERT INTO cnst_example VALUES (1,"Joe Brown",65000)INSERT INTO cnst_example VALUES (2,"Mary Smith",75000)-- This insert violates the constraint.INSERT INTO cnst_example VALUES (3,"Pat Jones",105000)-- Disable the constraint and try again.ALTER TABLE cnst_example NOCHECK CONSTRAINT salary_capINSERT INTO cnst_example VALUES (3,"Pat Jones",105000)-- Reenable the constraint and try another insert, will fail.ALTER TABLE cnst_example CHECK CONSTRAINT salary_capINSERT INTO cnst_example VALUES (4,"Eric James",110000)
H. 禁用并重新启用触发器

下例使用 ALTER TABLE 的 DISABLE TRIGGER 选项来禁用触发器,以使正常情况下会违反触发器条件的插入操作得以执行。然后下例使用 ENABLE TRIGGER 重新启用触发器。

CREATE TABLE trig_example (id INT, name VARCHAR(10),salary MONEY)go-- Create the trigger.CREATE TRIGGER trig1 ON trig_example FOR INSERTas IF (SELECT COUNT(*) FROM INSERTEDWHERE salary > 100000) > 0BEGINprint "TRIG1 Error: you attempted to insert a salary > $100,000"ROLLBACK TRANSACTIONENDGO-- Attempt an insert that violates the trigger.INSERT INTO trig_example VALUES (1,"Pat Smith",100001)GO-- Disable the trigger.ALTER TABLE trig_example DISABLE TRIGGER trig1GO-- Attempt an insert that would normally violate the triggerINSERT INTO trig_example VALUES (2,"Chuck Jones",100001)GO-- Re-enable the trigger.ALTER TABLE trig_example ENABLE TRIGGER trig1GO-- Attempt an insert that violates the trigger.INSERT INTO trig_example VALUES (3,"Mary Booth",100001)GO

2005-04-19 21:26
haddy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-4-19
得分:0 
我是要修改表a的属性列a#的列定义,把它的数据类型改为char(20),不是这样用的吗?
我和课本上写的是一样的啊?它提示a#附近有语法错误?不明白~~~~~~~~~~~
2005-04-20 20:55
EA_Games
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:539
专家分:0
注 册:2005-3-13
得分:0 
alter table a
alter column [a#] char(20)

2005-04-20 21:47
老猫怕鱼
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2005-5-2
得分:0 
看了一会 有点知道了

我的原则是解决问题,而不是去过多研究问题出现的原因
2005-05-03 15:47
zsz417
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2004-9-13
得分:0 
mingbai

2005-05-13 13:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-16096-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.525673 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved