日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

SQL Server數(shù)據(jù)庫技術(shù)(46)----編程資料集中營--八角123--bajiao...

 johnlane 2007-08-03

SQL Server數(shù)據(jù)庫技術(shù)(46)

當表創(chuàng)建好后,可能根據(jù)需要要對表的列、約束等屬性進行添加、刪除或修改,這就需要修改表結(jié)構(gòu)。

7.4.1 用Enterprise Manager 修改
在Enterprise Manager 中選擇要進行改動的表,單擊右鍵,從快捷菜單中選擇“DesignTable”選項,則會出現(xiàn)如圖7-4 所示的修改表結(jié)構(gòu)對話框??梢栽趫D7-4 所示的對話框中修改列的數(shù)據(jù)類型、名稱等屬性或添加、刪除列,也可以指定表的主關(guān)鍵字約束。單擊工具欄中的圖標,出現(xiàn)如圖7-5 所示的編輯表和約束的屬性的對話框??梢栽谄渲芯庉嫺鞣N約束和一些表的屬性。



7.4.2 用ALTER TABLE 命令修改
ALTER TABLE 命令可以添加或刪除表的列、約束,也可以禁用或啟用已存在的約束
或觸發(fā)器。其語法如下:
ALTER TABLE table
{ [ALTER COLUMN column_name
{ new_data_type [ (precision[, scale] ) ]
[ COLLATE < collation_name > ]
[ NULL | NOT NULL ]
| {ADD | DROP} ROWGUIDCOL } ]
| ADD
{ [ ]
| column_name AS computed_column_expression
}[,...n]
| [WITH CHECK | WITH NOCHECK] ADD
{ }[,...n]
| DROP
{ [CONSTRAINT] constraint_name
| COLUMN column
}[,...n]
| {CHECK | NOCHECK} CONSTRAINT
{ALL | constraint_name[,...n]}
| {ENABLE | DISABLE} TRIGGER
{ALL | trigger_name[,...n]}
}
::= { column_name data_type }
[ [ DEFAULT constant_expression ]
| [ IDENTITY [(seed, increment ) [NOT FOR REPLICATION] ] ]
]
[ ROWGUIDCOL ]
[ COLLATE < collation_name > ]
[ ] [ ...n]
::= [CONSTRAINT constraint_name]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[CLUSTERED | NONCLUSTERED]
[WITH FILLFACTOR = fillfactor]
[ON {filegroup | DEFAULT} ] ] ]
| [ [FOREIGN KEY]
REFERENCES ref_table [(ref_column) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[NOT FOR REPLICATION ] ]
| CHECK [NOT FOR REPLICATION]
(logical_expression)}
::= [CONSTRAINT constraint_name]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED]
{ ( column [ ASC | DESC ] [,...n] ) }
[ WITH FILLFACTOR = fillfactor]
[ON {filegroup | DEFAULT} ] ]
| FOREIGN KEY
[(column[,...n])]
REFERENCES ref_table [(ref_column[,...n])]
[NOT FOR REPLICATION]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
| CHECK [NOT FOR REPLICATION]
(search_conditions)}
各參數(shù)說明如下:

  • table
    指定要修改的表的名稱。如果表不在當前數(shù)據(jù)庫中或表不屬于當前的用戶,就必須指明其所屬的數(shù)據(jù)庫名稱和所有者名稱。
  • ALTER COLUMN
  • new_data_type
    指定新的數(shù)據(jù)類型名稱,其使用標準如下:
    列的原數(shù)據(jù)類型應可以轉(zhuǎn)換為新的數(shù)據(jù)類型;
    新的數(shù)據(jù)類型不能為TIMESTAMP;
    新的數(shù)據(jù)類型允許列為NULL 值;
    如果原來的列是IDENTITY 列,則新的數(shù)據(jù)類型應支持IDENTITY 特性;
    當前的SET ARITHABORT 設(shè)置將被視為處于ON 狀態(tài)。
  • precision
    指定新數(shù)據(jù)類型的位數(shù)。
  • scale
    指定新數(shù)據(jù)類型的小數(shù)位數(shù)。
  • NULL | NOT NULL
    指明列是否允許NULL 值。如果添加列到表中時,指定它為NOT NULL, 則必須指定此列的缺省值。選擇此項后,new_data_type [(precision [, scale ])]選項就必須指定,即使precision 和scale 選項均不變,當前的數(shù)據(jù)類型也需要指出來。
  • WITH CHECK | WITH NOCHECK
    指定已經(jīng)存在于表中的數(shù)據(jù)是否需要使用新添加的或剛啟用的FOREIGN KEY 約束或CHECK 約束來驗證。如果不指定,WITH CHECK 作為新添加約束的缺省選項,WITH NOCHECK 作為啟用舊約束的缺省選項。
  • {ADD | DROP} ROWGUIDCOL
    添加或刪除列的ROWGUIDCOL 屬性。ROWGUIDCOL 屬性只能指定給一個 UNIQUEIDENTIFIER 列。
  • ADD
    添加一個或多個列、計算列或表約束的定義。
  • computed_column_expression
    計算列的計算表達式。
  • DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
    指定要刪除的約束或列的名稱。處于下列情況的列不能刪除;
    用于復制的列;
    用于索引的列;
    用于CHECK FOREIGN KEY UNIQUE 或PRIMARY KEY 約束的列;
    定義了缺省約束或綁定了一個缺省值對象的列;
    綁定了規(guī)則(Rule)的列。
  • { CHECK | NOCHECK} CONSTRAINT
    啟用或禁用FOREIGN KEY 或CHECK 約束。
  • ALL
    使用NOCHECK 選項禁用所有的約束,或使用CHECK 選項啟用所有的約束。
  • {ENABLE | DISABLE} TRIGGER
    啟用或禁用觸發(fā)器。
  • ALL
    啟用或禁用選項針對所有的觸發(fā)器。
  • trigger_name
    指定觸發(fā)器名稱。
其它參數(shù)與創(chuàng)建表和約束中所講的相同。
例7-13: 創(chuàng)建一個定貨商信息表,然后修改簡介列的數(shù)據(jù)類型。
create table order_firm (
order_firm_id char (8) primary key,
firm_name varchar (50) not null
firm_introduce char(50) null
) on [primary]
alter table order_firm
alter column firm_introduce varchar(250) null
例7-14: 創(chuàng)建一個定貨表再插入一個定貨商編號列。
create table orders(
order_id char(8) ,
p_id char(8) foreign key references products(p_id),
order_quantity smallint check (order_quantity>=10),
constraint pk_order_id primary key (order_id),
) on [primary]
alter table orders
add order_firm_id char(8) null
constraint fk_order_firm_id foreign key references order_firm(order_firm_id)
例7-15: 更改上例中的檢查約束,并刪除一個外關(guān)鍵字約束。
alter table orders
add constraint chk_order_quantity check (order_quantity>=100)
drop constraint chk_order_quantity

7.4.3 用存儲過程Sp_rename 修改表名和列名
Sp_rename 存儲過程可以修改當前數(shù)據(jù)庫中用戶對象的名稱,如表、列、索引、存儲過程等。其語法如下:
sp_rename [@objname =] ‘object_name‘,
[@newname =] ‘new_name‘
[, [@objtype =] ‘object_type‘]
其中[@objtype =] ‘object_type‘是要改名的對象的類型,其值可以為‘COLUMN’、‘DATABASE’、‘INDEX’、‘USERDATATYPE’、‘OBJECT’。值‘OBJECT’指代了系統(tǒng)表sysobjects 中的所有對象,如表、視圖、存儲過程、觸發(fā)器、規(guī)則、約束等。‘OBJECT’值為默認值。

例7-16:更改orders 表的列p_id 名稱為products_id
exec sp_rename ‘orders.[p_id]‘, ‘product_id‘, ‘column‘
運行結(jié)果如下:
Caution: Changing any part of an object name could break scripts and stored procedures.
The column was renamed to ‘product_id‘.

例7-17: 更改orders 表的名稱為p_orders。
exec sp_rename ‘orders‘, ‘p_orders‘‘
運行結(jié)果如下:
Caution: Changing any part of an object name could break scripts and stored procedures.
The object was renamed to ‘p_orders‘.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多