資料庫刪除列

2021-04-12 13:30:48 字數 2207 閱讀 1222

先刪除約束。  

--刪除指定表中的指定列的約束  

create             procedure   p_delconstraint    

@table_name   varchar(50), --表名  

@col_name   varchar(50) --列名  

as  

declare   @tbname   sysname,@fdname   sysname  

select   @tbname=@table_name --要處理的表名  

,@fdname=@col_name --要處理的欄位名  

--定義刪除處理的語句  

declare   tb   cursor   local   for  

--預設值約束  

select   sql='alter   table   ['+b.name+']   drop   constraint   ['+d.name+']'  

from   syscolumns   a  

join   sysobjects   b   on   a.id=b.id   and   a.name=@fdname   and   b.name=@tbname    

join   syscomments   c   on   a.cdefault=c.id  

join   sysobjects   d   on   c.id=d.id  

union --外來鍵引用  

select   s='alter   table   ['+c.name+']   drop   constraint   ['+b.name+']'  

from   sysforeignkeys   a  

join   sysobjects   b   on   b.id=a.constid  

join   sysobjects   c   on   c.id=a.fkeyid  

join   syscolumns   d   on   d.id=c.id   and   a.fkey=d.colid   and   d.name=@fdname  

join   sysobjects   e   on   e.id=a.rkeyid   and   e.name=@tbname  

join   syscolumns   f   on   f.id=e.id   and   a.rkey=f.colid    

union --主鍵/唯一鍵/索引  

select   case   when   e.xtype   in('pk','uq')   then   'alter   table   ['+c.name+']   drop   constraint   ['+e.name+']'  

else   'drop   index   ['+c.name+'].['+a.name+']'   end  

from   sysindexes   a  

join   sysindexkeys   b   on   a.id=b.id   and   a.indid=b.indid  

join   sysobjects   c   on   b.id=c.id   and   c.xtype='u'   and   c.name=@tbname  

join   syscolumns   d   on   b.id=d.id   and   b.colid=d.colid   and   d.name=@fdname  

left   join   sysobjects   e   on   e.id=object_id(a.name)  

where   a.indid   not   in(0,255)  

--執行刪除  

declare   @s   varchar(8000)  

open   tb  

fetch   next   from   tb   into   @s  

while   @@fetch_status=0  

begin  

exec(@s)  

fetch   next   from   tb   into   @s  

end  

close   tb  

deallocate   tb  

go 

資料庫的增 刪 改 查 增加列 刪除列

varchar n n為數字,表示n位數的字元。增 create datebase xuesheng 建立一個xuesheng的資料庫,注意要有go go create table xueshengxinxi code int,編號為int name varchar 20 名字為varchar sc...

資料庫列約束

你還看不懂資料庫列約束嗎?資料庫列約束 1.主鍵約束 primary key 宣告瞭主鍵約束的列上不允許插入重複的值 一個表中只能有一個主鍵約束 一般將主鍵約束設定給編號,特點 主鍵約束會自動由小到大自動排序 語法 create table 表名 lid int primary key,lid 表示...

資料庫列屬性

列屬性 列屬性 真正約束欄位的是資料型別,但是資料型別的約束很單一需要一些額外的約束來更加保證資料的合法性。有以下屬性 1.空屬性 null 預設 和not null 不為空 雖然預設的資料庫基本都是欄位為空,都是在實際開發的時候,儘可能保證所有的資料都不應該為空,因為空資料沒有意義,空資料沒有辦法...

mysql刪除資料庫資料庫 MySQL刪除資料庫

刪除資料庫是指在資料庫系統中刪除已經存在的資料庫。資料庫刪除之後,原來分配的空間將被收回。需要注意的是,資料庫刪除之後該資料庫中所有的表和資料都將被刪除。因此刪除資料庫要特別小心。一 通過sql語句 mysql中,刪除資料庫通過sql語句drop database。其語法格式如下 drop data...

Oracle資料庫 刪除資料庫

1 單擊 開始 oracle oradb12home1 database configuration assistant 進入刪除步驟的第一步,選擇 刪除資料庫 2 單擊 下一步 按鈕,如圖所示。在資料庫列表中選擇需要刪除的資料,例如test,並輸入使用者名稱和口令。3 單擊 下一步 按鈕,開啟 管...