天天看點

mssql alter table 的用法

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'
           

未完,待續