mssql 的alter table 指令提供了很多很強大的功能,本文的主要目的是記錄下來筆者在使用過程中遇到的一些,
為了友善以後的查詢。
1. 對constraint的修改,
alter table 沒有 alter constraint 屬性,是以隻能是先drop constraint, 再add constraint.
alter table [table_name] drop constraint [constraint_name]
alter table [table_name] add constraint [constraint_name] [constraint_content]
2. 增加一列
alter table [table_name] add column [column_name] [column_type]
3. 對某列加default 值
這個實際上是屬于add constraint的一部分, 不過是比較特殊的一種,是以單獨列出來
alter table [table_name] add constraint [constraint_name] default [default value] for [column]
4. 給某列加identity 或者清零
MSSQL本身不提供這樣的功能,但是可以通過把某列删除,再建立的方式來實作
alter table [table Name] drop column [column name]
alter table [table Name ]add [column name] int identity(1,1) not null.
清零
DBCC CHECKIDENT (【table name】, RESEED, 1)
這種方式也可以實作identity的清零。
5. 給某列加primary key
alter table table_name drop constraint pk_name
alter table table_name add constraint pk_name primary key (column name)
6. 給表加外鍵
ALTER TABLE 【table name 】
ADD CONSTRAINT [constraint name] FOREIGN KEY ([column name])
REFERENCES [reference table ] (reference column name ) ;
ALTER TABLE [table name ]
DROP CONSTRAINT [refence constraint name] ;
7. 如何給一個表的某列改名啊
這裡使用的就不是alter ,而是MSSQL提供的了個sp_rename的SP。
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
這裡objtype 可以選擇如下:
Value | Description |
---|---|
COLUMN | A column to be renamed. |
DATABASE | A user-defined database. This object type is required when renaming a database. |
INDEX | A user-defined index. |
OBJECT | An item of a type tracked in sys.objects. For example, OBJECT could be used to rename objects including constraints (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), user tables, and rules. |
USERDATATYPE | An alias data type or CLR User-defined Types added by executing CREATE TYPE or sp_addtype. |
舉個例子吧, 對表tblTable 的一列a ,改名為b
exec sp_rename 'dbo.tblTable.a', 'b', 'COLUMN'
未完,待續