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 ...