SQL 中自增列(標識列又稱標識符列):
三種特點:
1、列的數據類型爲不帶小數的數值類型
2、在進行插入(Insert)操作時,該列的值是由系統按一定規律生成,不允許空值
3、列值不重複,具有標識表中每一行的作用,每個表只能有一個標識列。
IDENTITY(type,seed,increment),
類型(type)
在SQL Server 2000中,標識列類型必須是數值類型,如下:
decimal、int、numeric、smallint、bigint 、tinyint 其中要注意的是,當選擇decimal和numeric時,小數位數必須爲零
另外還要注意每種數據類型所有表示的數值範圍
種子(seed)
是指派給表中第一行的值,默認爲1
遞增量(increment)
相鄰兩個標識值之間的增量,默認爲1。
詳細介紹鏈接:http://bingdian2001.blog.hexun.com/33157398_d.html
http://msdn.microsoft.com/zh-cn/library/ms186775.aspx
應用需知:
1,爲標識列指定顯式值:
使用command:
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }
參數
database 指定的表所駐留的數據庫名稱。
owner 表所有者的名稱。
table 是含有標識列的表名。
示例:
SET IDENTITY_INSERT [ database.[ owner.] ] { table } ON
insert.....(顯示指定標識列 批量插入)
SET IDENTITY_INSERT [ database.[ owner.] ] { table } OFF
2,返回最後插入的標識值的系統函數。
@@IDENTITY (Transact-SQL)
http://msdn.microsoft.com/zh-cn/library/ms187342.aspx
3,重置標識列 起始值。
方法1 -- 清空已有數據,並且將自增自段恢復從1開始計數
truncate table 表名
方法2 -- 不清空已有數據,但將自增自段恢復從1開始計數
dbcc checkident(表名,RESEED,0)
語法
DBCC CHECKIDENT('table_name ' [,{NORESEED | { RESEED[ ,new_reseed_value ]}}] )
參數
'table_name' 是要對其當前標識值進行檢查的表名。表名必須符合標識符規則。有關更多信息,請參見使用標識符。指定的表必須包含標識列。
NORESEED 指定不應更正當前標識值 |RESEED 指定應該更正當前標識值。
new_reseed_value
是在標識列中重新賦值時要使用的值。
4,select語句中實現第一列(非表自帶)是自增的
有主鍵的可以直接用:
select 自增列=(select sum(1) from 表 where 主鍵 <=a.主鍵),* from 表 a
沒有主鍵的需要用臨時表:
select 自增列=identity(int,1,1),* into #tb from 表
select * from #tb
drop table #tb
5,標識列並非是唯一,有很多原因能導致標識列不唯一。
具體可參考鏈接 http://bbs.db001.com/thread-315-1-1.html
sql中text/char/varchar/ntext/nchar/nvarchar的區別 .
1, "n "開頭的 表示存儲的是Unicode 編碼格式儲存字符串。即2個字節
2, 用varchar,方便我們開發系統,但是就速度和空間考慮,用varchar沒有char快,佔的空間也大!
char一般用在字符串定長的情況下,
3, text文本型數據可以存儲超過20億個字符串。但是也不是任何時候都是和使用文本型數據,因爲他非常佔空間,也非常消耗服務器,隨處亂用後果不堪設想!因爲即使你像一個文本型字段輸入了一個空值他都會佔用2K的空間!而當這時除了刪除該數據沒有別的辦法收回空間!效率不高這個可以肯定
Sql聯合查詢
UNION運算符可以將兩個或兩個以上上SELECT語句的查詢結果集合合併成一個結果集合顯示:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
[ALL]選項表示將所有行合併到結果集合中。不指定該項時,被聯合查詢結果集合中的重複行將只保留一行。
聯合查詢時,查詢結果的列標題爲第一個查詢語句的列標題。要對聯合查詢結果排序時,也必須使用第一查詢語句中的列名、列標題或者列序號。
在使用UNION 運算符時,應保證每個聯合查詢語句的選擇列表中有相同數量的表達式,並且每個查詢選擇表達式應具有相同的數據類型,或是可以自動將它們轉換爲相同的數據類型。在自動轉換時,對於數值類型,系統將低精度的數據類型轉換爲高精度的數據類型。
在包括多個查詢的UNION語句中,其執行順序是自左至右,使用括號可以改變這一執行順序。例如:
查詢1 UNION (查詢2 UNION 查詢3)
連接查詢:
內聯(inner join)
select * from t1,t3 where t1.id=t3.id 或
select * from t1 inner join t3 on t1.id=t3.id
左聯(left outer join)顯示左表中的所有行
右聯(right outer join)顯示右表中的所有行
全聯(full outer join)顯示兩邊表中所有行
交叉連接查詢(cross join )等價於 無條件內聯 select * from t1,t3
http://www.javaeye.com/topic/185385
http://www.javaeye.com/topic/450287
可參考http://blog.csdn.net/keke_wanwei/archive/2006/03/13/623455.aspx