SQL Server 超基本Table操作(IDENTITY)
基本TABLE 操作指令
ALTER TABLE 員工表 ADD 到職日 DATE --變更「員工表」,新增到職日的欄位 ALTER TABLE 員工表 ALTER COLUMN 到職日 DATETIME2(1) --將到職日的格式改為DATETIME2(1) ALTER TABLE 員工表 DROP COLUMN 到職日 --將到職日的欄位刪掉 ALTER TABLE 員工表 ADD CONSTRAINT 最低薪資檢查 CHECK(薪資>=19270) --新增限制,名稱叫最低薪資檢查,檢查薪資>=19270 ALTER TABLE 員工表 DROP CONSTRAINT 最低薪資檢查 --刪掉該限制 EXEC sp_help 員工表 EXEC sp_help 訂單表 --查詢表單內的屬性 ALTER TABLE 訂單表 DROP CONSTRAINT PK__訂單表__216AEAA734E9A9F8 --找出表單後,刪除特定的限制 ALTER TABLE 訂單表 ADD CONSTRAINT 訂單時間 DEFAULT GETDATE() FOR 訂單時間 --加入GETDATE()為預設值 FOR 訂單時間欄位
某些時候,可能會有需要暫時使用表單,不需要永久建立
可以利用#字號來創立暫存表,暫存表會放在系統資料庫中的
tempdb
特性:
1.若只有一個#字,當創立者離線時,會自動清理掉
2.若是##開頭,創立出來的暫存表可供別的使用者連入
當創立者離線後,就不會再讓新的使用者連入
線上所有的使用該表的人全都離線後,SQL Server才會進行清理的動作
3.雖然叫暫存表,但不是在記憶體中運行,是實際存在磁碟中
指令:
CREATE TABLE ##暫存 ( 編號 INT, 資料 NCHAR(5) ) INSERT INTO ##暫存 VALUES(1,'AAA') INSERT INTO ##暫存 VALUES(2,'BBB') INSERT INTO ##暫存 VALUES(3,'CCC')
再來介紹IDENTITY,也就是所謂的自動編號
不過有其限制:
1.有上限,當編號超過當初賦予的格式(INT,BIGINT)的上限
會自動停止,且整份表設為唯讀(無法再增加)
2.編號會有跳號的問題
3.每張表只有一個欄可以自動編號
指令:
CREATE TABLE 新員工表 ( 員工編號 INT IDENTITY(-2100000000,1), --設員工編號為自動識別,從-2100000000開始,每次加1 姓名 NCHAR(5), 薪資 INT ) INSERT INTO 新員工表 VALUES('王曉明',31000) INSERT INTO 新員工表 VALUES('李小英',32000) INSERT INTO 新員工表 VALUES('林大雄',33000) INSERT INTO 新員工表 VALUES('孫小美',31500) SET IDENTITY_INSERT 新員工表 ON --開啟手動新增自動編號 INSERT INTO 新員工表(員工編號,姓名,薪資) VALUES(8,'撒隆巴斯',32500) --若要新增編號必須有確切的欄名 SET IDENTITY_INSERT 新員工表 OFF --關閉手動 INSERT INTO 新員工表 VALUES('錢夫人',30800) SELECT * FROM 新員工表
跟著自動編號的是唯一編號UNIQUIEIDENTIFIER
簡單的說就是會給唯一的值(幾乎全世界唯一,因為用網卡算出來的值)
但不會自動賦予,不過可以設DEFAULT
CREATE TABLE 表表 ( 自動編號 INT IDENTITY(1,1), 唯一編號 UNIQUEIDENTIFIER , --唯一編號可以加 DEFAULT NEWID() 預設給值 資料 NCHAR(5) ) GO INSERT INTO 表表(資料) VALUES('AAA') INSERT INTO 表表(唯一編號,資料) VALUES(NEWID(),'BBB')
留言
張貼留言