sqlserver主鍵建立有幾種方法 sql用create語句建立表結(jié)構(gòu)時(shí)用什么子句定義主鍵?
sql用create語句建立表結(jié)構(gòu)時(shí)用什么子句定義主鍵?當(dāng)SQL S:建立了一個(gè)簡單的員額配置表。創(chuàng)建表人(Code int NOT NULL主鍵,Name varchar(255)不為空)這里定義的
sql用create語句建立表結(jié)構(gòu)時(shí)用什么子句定義主鍵?
當(dāng)SQL S:建立了一個(gè)簡單的員額配置表。
創(chuàng)建表人
(
Code int NOT NULL主鍵,
Name varchar(255)不為空
)
這里定義的數(shù)字域代碼是主鍵。
sqlserver基本表中可以設(shè)置幾個(gè)主鍵,幾個(gè)外鍵?
SQLS
sqlserver創(chuàng)建臨時(shí)表的使用說明?
臨時(shí)表生成:A: select into和b: create table insert into。
A比b快很多,但是A會(huì)鎖定tempdb的SYSOBJECTS、SYSINDEXES、SYSCOLUMNS表,在多用戶并發(fā)的情況下很容易阻塞其他進(jìn)程。
2.b用于并發(fā)系統(tǒng)。在大量的單語句中使用。
如何創(chuàng)建臨時(shí)表:
方法1:
Create table #臨時(shí)表名(字段1約束、
字段2約束,
.....)
創(chuàng)建表##臨時(shí)表名(字段1約束、
字段2約束,
.....)
方法二:
從您的表中選擇* into #臨時(shí)表名。
Select * into #臨時(shí)表名來自你的表。
注:以上#代表局部臨時(shí)表,# #代表全局臨時(shí)表。
查詢臨時(shí)表
Select * from #臨時(shí)表名
Select * from ##臨時(shí)表名
刪除臨時(shí)表
刪除表#臨時(shí)表名
刪除表##臨時(shí)表名
SQL SERVER臨時(shí)表的使用
drop table #Tmp-Delete temporary table # Tmp Create table # Tmp-Create temporary table # Tmp(ID int identity(1,1) not null,-Create column ID,并且每次添加新記錄時(shí),1 wok no varchar (50),primary key(ID)-將ID定義為臨時(shí)表# Tmp的主鍵)Select * from。根據(jù)truncate table #Tmp -清除臨時(shí)表的所有數(shù)據(jù)和約束。
相關(guān)示例:
Declare @ woknovarchar(500)-用于記錄雇員號(hào)Declare @ Str NVarchar(4000)-用于存儲(chǔ)查詢語句declare @ countint-Find記錄總數(shù)Declare @ I int Set @ i0 Select @ Count Count(distinct(Wokno))from # Tmp While @ I lt @ Count Begin Set @ Str Select top 1 @ Wokno Wokno from # Tmp Where id not in(Select top Str(@ I)id from # Tmp)Exec Sp _ execute SQL @ Str,varchar (500)
工作單元表
您可以創(chuàng)建本地和全局臨時(shí)表。本地臨時(shí)表僅在當(dāng)前會(huì)話中可見;全局臨時(shí)表在所有會(huì)話中都可見。
本地臨時(shí)表的名稱前面有一個(gè)數(shù)字符號(hào)(#table_name),而全局臨時(shí)表的名稱前面有兩個(gè)數(shù)字符號(hào)(#table_name)。
SQL語句使用CREATE TABLE語句中為table_name指定的名稱來引用臨時(shí)表:
創(chuàng)建表#MyTempTable (cola INT主鍵)
插入到#MyTempTable值(1)
如果本地臨時(shí)表是由存儲(chǔ)過程或由多個(gè)用戶同時(shí)執(zhí)行的應(yīng)用程序創(chuàng)建的,SQL Server必須能夠區(qū)分不同用戶創(chuàng)建的表。為此,SQL Server會(huì)在每個(gè)本地臨時(shí)表的表名后面附加一個(gè)數(shù)字后綴。存儲(chǔ)在tempdb數(shù)據(jù)庫的sysobjects表中的臨時(shí)表的全名由CREATE TABLE語句中指定的表名和系統(tǒng)生成的數(shù)字后綴組成。為了允許后綴,為本地臨時(shí)表指定的表名table_name不能超過116個(gè)字符。
除非使用DROP TABLE語句顯式刪除臨時(shí)表,否則臨時(shí)表將在退出其作用域時(shí)被系統(tǒng)自動(dòng)刪除:
當(dāng)存儲(chǔ)過程完成時(shí),在存儲(chǔ)過程中創(chuàng)建的本地臨時(shí)表將被自動(dòng)刪除。由創(chuàng)建該表的存儲(chǔ)過程執(zhí)行。行的所有嵌套存儲(chǔ)過程都可以引用該表。但是,調(diào)用創(chuàng)建該表的存儲(chǔ)過程的進(jìn)程不能引用該表。
在當(dāng)前會(huì)話結(jié)束時(shí),所有其他本地臨時(shí)表都將被自動(dòng)刪除。
當(dāng)創(chuàng)建該表的會(huì)話結(jié)束并且其他任務(wù)停止引用該表時(shí),全局臨時(shí)表將被自動(dòng)刪除。任務(wù)和表之間的關(guān)聯(lián)僅在單個(gè)Transact-SQL語句的生命周期內(nèi)維護(hù)。換句話說,當(dāng)創(chuàng)建全局臨時(shí)表的會(huì)話結(jié)束時(shí),該表將在引用該表的最后一條Transact-SQL語句完成后自動(dòng)刪除。
在存儲(chǔ)過程或觸發(fā)器中創(chuàng)建的本地臨時(shí)表不同于在調(diào)用存儲(chǔ)過程或觸發(fā)器之前創(chuàng)建的同名臨時(shí)表。如果查詢引用了一個(gè)臨時(shí)表,并且有兩個(gè)臨時(shí)表具有相同的名稱,則沒有定義要對(duì)哪個(gè)表進(jìn)行查詢。嵌套存儲(chǔ)過程還可以創(chuàng)建與調(diào)用它的存儲(chǔ)過程所創(chuàng)建的臨時(shí)表同名的臨時(shí)表。嵌套存儲(chǔ)過程中對(duì)表名的所有引用都被解釋為為嵌套過程創(chuàng)建的表,例如:
創(chuàng)建過程Test2作為CREATE TABLE # t(x INT PRIMARY KEY)INSERT INTO # t VALUES(2)SELECT Test2 col x FROM # t GO創(chuàng)建過程Test1作為CREATE TABLE # t(x INT PRIMARY KEY)INSERT INTO # t VALUES(1)SELECT Test1 col x FROM # t EXEC Test2 GO創(chuàng)建TABLE # t(x INT PRIMARY KEY)INSERT INTO # t VALUES(99)GO EXEC Test1 GO
以下是結(jié)果集:
(1行受影響)
Test1Col
-
一個(gè)
(1行受影響)
Test2Col
-
2
創(chuàng)建本地或全局臨時(shí)表時(shí),CREATE TABLE語法支持除外鍵約束之外的所有約束定義。如果在臨時(shí)表中指定了外鍵約束,該語句將返回一條警告消息,指出該約束已被忽略,并且仍將創(chuàng)建沒有外鍵約束的表。不能在外鍵約束中引用臨時(shí)表。
考慮使用表變量而不是臨時(shí)表。當(dāng)需要在臨時(shí)表上顯式創(chuàng)建索引時(shí),或者當(dāng)多個(gè)存儲(chǔ)過程或函數(shù)需要使用表值時(shí),臨時(shí)表非常有用。通常,表變量提供更有效的查詢處理。