用SQL命令修改表欄位

來源:互聯網
上載者:User

 

sp_rename 是一個功能豐富的預存程序,能夠對 表、視圖、列、預存程序、觸發器、預設值、資料庫、對象或規則進行重新命名,並且保證不遺失資料。

下例將TB_MoneyPay_PJApply表中的欄位PayMoney修改為PaidCash:

EXEC sp_rename 'TB_MoneyPay_PJApply.[PayMoney]', 'PaidCash', 'COLUMN'

sp_renamedb

更改資料庫的名稱。

下例將資料庫 accounting 改名為 financial。

EXEC sp_renamedb 'accounting', 'financial'

 

下面是兩個簡單的使用例子:

--nvarchar(32) ->nvarchar(64)

--alter table DatabaseInfo alter column DatabaseName nvarchar(64) not null

 

--Column Size->MaxSize

EXEC sp_rename 'DatabaseInfo.FreeSpace', 'UsedSpace', 'COLUMN'

 

--刪除主鍵
alter table 表名 drop constraint 主鍵名
--添加主鍵
alter table 表名 add constraint 主鍵名 primary key(欄位名1,欄位名2……)
--添加非叢集索引的主鍵
alter table 表名 add constraint 主鍵名 primary key NONCLUSTERED(欄位名1,欄位名2……)

建立表:
create table [表名]
(
[自動編號欄位] int IDENTITY (1,1) PRIMARY KEY ,
[欄位1] nVarChar(50) default \'預設值\' null ,
[欄位2] ntext null ,
[欄位3] datetime,
[欄位4] money null ,
[欄位5] int default 0,
[欄位6] Decimal (12,4) default 0,
[欄位7] image null ,
)

刪除表:
Drop table [表名]

刪除所有表:

DECLARE curItems CURSOR
FOR select [name] from sysobjects where xtype='U'
FOR READ ONLY
OPEN curItems
DECLARE @n  NVARCHAR(100),@m NVARCHAR(100)
FETCH FROM curItems INTO @n
WHILE @@FETCH_STATUS=0
BEGIN
 set @m=@n
    exec('Drop Table ' + @m)
FETCH NEXT FROM curItems INTO
@n
END
CLOSE  curItems
DEALLOCATE  curItems

插入資料:
INSERT INTO [表名] (欄位1,欄位2) VALUES (100,\'51WINDOWS.NET\')

刪除資料:
DELETE FROM [表名] WHERE [欄位名]>100

更新資料:
UPDATE [表名] SET [欄位1] = 200,[欄位2] = \'51WINDOWS.NET\' WHERE [欄位三] = \'HAIWA\'

新增欄位:
ALTER TABLE [表名] ADD [欄位名] NVARCHAR (50) NULL

刪除欄位:
ALTER TABLE [表名] DROP COLUMN [欄位名]

修改欄位:
ALTER TABLE [表名] ALTER COLUMN [欄位名] NVARCHAR (50) NULL

重新命名表:(Access 重新命名表,請參考文章:在Access資料庫中重新命名表)
sp_rename \'表名\', \'新表名\', \'OBJECT\'

建立約束:
ALTER TABLE [表名] ADD CONSTRAINT 約束名 CHECK ([限制欄位] <= \'2000-1-1\')

刪除約束:
ALTER TABLE [表名] DROP CONSTRAINT 約束名

建立預設值
ALTER TABLE [表名] ADD CONSTRAINT 預設值名 DEFAULT \'51WINDOWS.NET\' FOR [欄位名]

刪除預設值
ALTER TABLE [表名] DROP CONSTRAINT 預設值名

刪除Sql Server 中的日誌,減小資料庫檔案大小
dump transaction 資料庫名 with no_log
backup log 資料庫名 with no_log
dbcc shrinkdatabase(資料庫名)
exec sp_dboption \'資料庫名\', \'autoshrink\', \'true\'

\\\'添加欄位通用函數
Sub AddColumn(TableName,ColumnName,ColumnType)
Conn.Execute(\"Alter Table \"&TableName&\" Add \"&ColumnName&\" \"&ColumnType&\"\")

End Sub

\\\'更改欄位通用函數
Sub ModColumn(TableName,ColumnName,ColumnType)
Conn.Execute(\"Alter Table \"&TableName&\" Alter Column \"&ColumnName&\" \"&ColumnType&\"\")

End Sub

\\\'檢查表是否存在

sql=\"select count(*) as dida from sysobjects where id = object_id(N\'[所有者].[表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1\"

set rs=conn.execute(sql)

response.write rs(\"dida\")\'返回一個數值,0代表沒有,1代表存在

判斷表的存在:
select * from sysobjects where id = object_id(N\'[dbo].[tablename]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1

某個表的結構
select * from syscolumns where id = object_id(N\'[dbo].[你的表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1

修改表的首碼:

ALTER SCHEMA dbo TRANSFER prename.tablename;

如果表2已經存在,把表1中的記錄加到表2中的語句:
insert   into   表2   (欄位1,欄位2,...)   select   欄位1,欄位2,..   from   表2   where   ...

如果表2不存在,則用下面的語句會自動產生表2,欄位的類型和表1一樣:
        select   欄位1,欄位2,..   INTO   表2   from   表1   where   ...

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.