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')

留言

熱門文章