国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

漫談SQL Server中的標識列(一)

2024-08-31 00:48:12
字體:
來源:轉載
供稿:網友

最大的網站源碼資源下載站,


漫談sql server中的標識列(一)

一、標識列的定義以及特點

sql server中的標識列又稱標識符列,習慣上又叫自增列。
該種列具有以下三種特點:

1、列的數據類型為不帶小數的數值類型
2、在進行插入(insert)操作時,該列的值是由系統按一定規律生成,不允許空值
3、列值不重復,具有標識表中每一行的作用,每個表只能有一個標識列。

由于以上特點,使得標識列在數據庫的設計中得到廣泛的使用。

二、標識列的組成
創建一個標識列,通常要指定三個內容:
1、類型(type)
在sql server 2000中,標識列類型必須是數值類型,如下:
decimal、int、numeric、smallint、bigint 、tinyint
其中要注意的是,當選擇decimal和numeric時,小數位數必須為零
另外還要注意每種數據類型所有表示的數值范圍

2、種子(seed)
是指派給表中第一行的值,默認為1

3、遞增量(increment)
相鄰兩個標識值之間的增量,默認為1。

三、標識列的創建與修改
標識列的創建與修改,通常在企業管理器和用transact-sql語句都可實現,使用企業管理管理器比較簡單,請參考sql server的聯機幫助,這

里只討論使用transact-sql的方法

1、創建表時指定標識列
標識列可用 identity 屬性建立,因此在sql server中,又稱標識列為具有identity屬性的列或identity列。
下面的例子創建一個包含名為id,類型為int,種子為1,遞增量為1的標識列
create table t_test
(id int identity(1,1),
 name varchar(50)
)

2、在現有表中添加標識列
下面的例子向表t_test中添加一個名為id,類型為int,種子為1,遞增量為1的標識列
--創建表
create table t_test
(name varchar(50)
)

--插入數據
insert t_test(name) values('張三')

--增加標識列
alter table t_test
add id int identity(1,1)

3、判段一個表是否具有標識列

可以使用 objectproperty 函數確定一個表是否具有 identity(標識)列,用法:
select objectproperty(object_id('表名'),'tablehasidentity')
如果有,則返回1,否則返回0

4、判斷某列是否是標識列

可使用 columnproperty 函數確定 某列是否具有identity 屬性,用法
select columnproperty( object_id('表名'),'列名','isidentity')
如果該列為標識列,則返回1,否則返回0

4、查詢某表標識列的列名
sql server中沒有現成的函數實現此功能,實現的sql語句如下
select column_name from information_schema.columns
   where table_name='表名' and  columnproperty(     
      object_id('表名'),column_name,'isidentity')=1

5、標識列的引用

如果在sql語句中引用標識列,可用關鍵字identitycol代替
例如,若要查詢上例中id等于1的行,
以下兩條查詢語句是等價的
select * from t_test where identitycol=1
select * from t_test where id=1

6、獲取標識列的種子值

可使用函數ident_seed,用法:
select ident_seed ('表名')

7、獲取標識列的遞增量

可使用函數ident_incr ,用法:
select ident_incr('表名')

8、獲取指定表中最后生成的標識值

可使用函數ident_current,用法:
select ident_current('表名')
注意事項:當包含標識列的表剛剛創建,為經過任何插入操作時,使用ident_current函數得到的值為標識列的種子值,這一點在開發數據庫應用程序的時候尤其應該注意。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上虞市| 阿拉善盟| 峨山| 黎平县| 凤阳县| 锦州市| 辉南县| 平原县| 巴林左旗| 舟山市| 襄城县| 临颍县| 屏东县| 华阴市| 保靖县| 景德镇市| 新郑市| 崇文区| 开平市| 凤城市| 宝兴县| 巴林右旗| 新民市| 明溪县| 公安县| 景泰县| 张家口市| 翁牛特旗| 庆安县| 麻城市| 隆尧县| 公主岭市| 文安县| 绥江县| 尤溪县| 广州市| 资源县| 武隆县| 天水市| 栾川县| 焦作市|