国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQL 數據庫表的修改

2024-07-21 02:13:03
字體:
來源:轉載
供稿:網友
當表創建好后,可能根據需要要對表的列、約束等屬性進行添加、刪除或修改,這就需要修改表結構。

7.4.1 用enterprise manager 修改
在enterprise manager 中選擇要進行改動的表,單擊右鍵,從快捷菜單中選擇“designtable”選項,則會出現如圖7-4 所示的修改表結構對話框。可以在圖7-4 所示的對話框中修改列的數據類型、名稱等屬性或添加、刪除列,也可以指定表的主關鍵字約束。單擊工具欄中的圖標,出現如圖7-5 所示的編輯表和約束的屬性的對話框??梢栽谄渲芯庉嫺鞣N約束和一些表的屬性。



7.4.2 用alter table 命令修改
alter table 命令可以添加或刪除表的列、約束,也可以禁用或啟用已存在的約束
或觸發器。其語法如下:
alter table table
{ [alter column column_name
{ new_data_type [ (precision[, scale] ) ]
[ collate < collation_name > ]
[ null | not null ]
| {add | drop} rowguidcol } ]
| add
{ [ <column_definition> ]
| column_name as computed_column_expression
}[,...n]
| [with check | with nocheck] add
{ <table_constraint> }[,...n]
| drop
{ [constraint] constraint_name
| column column
}[,...n]
| {check | nocheck} constraint
{all | constraint_name[,...n]}
| {enable | disable} trigger
{all | trigger_name[,...n]}
}
<column_definition> ::= { column_name data_type }
[ [ default constant_expression ]
| [ identity [(seed, increment ) [not for replication] ] ]
]
[ rowguidcol ]
[ collate < collation_name > ]
[ <column_constraint>] [ ...n]
<column_constraint> ::= [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)}
<table_constraint> ::= [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)}
各參數說明如下:

  • table
    指定要修改的表的名稱。如果表不在當前數據庫中或表不屬于當前的用戶,就必須指明其所屬的數據庫名稱和所有者名稱。
  • alter column
  • new_data_type
    指定新的數據類型名稱,其使用標準如下:
    列的原數據類型應可以轉換為新的數據類型;
    新的數據類型不能為timestamp;
    新的數據類型允許列為null 值;
    如果原來的列是identity 列,則新的數據類型應支持identity 特性;
    當前的set arithabort 設置將被視為處于on 狀態。
  • precision
    指定新數據類型的位數。
  • scale
    指定新數據類型的小數位數。
  • null | not null
    指明列是否允許null 值。如果添加列到表中時,指定它為not null, 則必須指定此列的缺省值。選擇此項后,new_data_type [(precision [, scale ])]選項就必須指定,即使precision 和scale 選項均不變,當前的數據類型也需要指出來。
  • with check | with nocheck
    指定已經存在于表中的數據是否需要使用新添加的或剛啟用的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 約束的列;
    定義了缺省約束或綁定了一個缺省值對象的列;
    綁定了規則(rule)的列。
  • { check | nocheck} constraint
    啟用或禁用foreign key 或check 約束。
  • all
    使用nocheck 選項禁用所有的約束,或使用check 選項啟用所有的約束。
  • {enable | disable} trigger
    啟用或禁用觸發器。
  • all
    啟用或禁用選項針對所有的觸發器。
  • trigger_name
    指定觸發器名稱。
其它參數與創建表和約束中所講的相同。
例7-13: 創建一個定貨商信息表,然后修改簡介列的數據類型。
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: 創建一個定貨表再插入一個定貨商編號列。
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: 更改上例中的檢查約束,并刪除一個外關鍵字約束。
alter table orders
add constraint chk_order_quantity check (order_quantity>=100)
drop constraint chk_order_quantity

7.4.3 用存儲過程sp_rename 修改表名和列名
sp_rename 存儲過程可以修改當前數據庫中用戶對象的名稱,如表、列、索引、存儲過程等。其語法如下:
sp_rename [@objname =] 'object_name',
[@newname =] 'new_name'
[, [@objtype =] 'object_type']
其中[@objtype =] 'object_type'是要改名的對象的類型,其值可以為‘column’、‘database’、‘index’、‘userdatatype’、‘object’。值‘object’指代了系統表sysobjects 中的所有對象,如表、視圖、存儲過程、觸發器、規則、約束等?!畂bject’值為默認值。

例7-16:更改orders 表的列p_id 名稱為products_id
exec sp_rename 'orders.[p_id]', 'product_id', 'column'
運行結果如下:
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''
運行結果如下:
caution: changing any part of an object name could break scripts and stored procedures.
the object was renamed to 'p_orders'.
上一篇:查看表

下一篇:自定義數據類型

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 饶平县| 巴彦县| 安乡县| 皮山县| 玛曲县| 尼玛县| 繁峙县| 湖北省| 临漳县| 韶山市| 东台市| 土默特左旗| 贡觉县| 佛山市| 乌恰县| 耿马| 隆德县| 河间市| 军事| 县级市| 漳州市| 拜城县| 环江| 旌德县| 西安市| 肥城市| 洛川县| 独山县| 伊春市| 应城市| 广东省| 江口县| 仁布县| 拉孜县| 雅安市| 交口县| 浏阳市| 石渠县| 韩城市| 本溪| 寻乌县|