杭州百度推廣公司有幾家手機優(yōu)化軟件排行
開始之前
限制和局限
-
一個表只能包含一個 PRIMARY KEY 約束。
-
在 PRIMARY KEY 約束中定義的所有列都必須定義為 NOT NULL。 如果沒有指定為 Null 性,則加入 PRIMARY KEY 約束的所有列的為 Null 性都將設(shè)置為 NOT NULL。
創(chuàng)建主鍵會自動創(chuàng)建相應(yīng)的唯一群集索引、聚集索引或非聚集索引(如果這樣指定)
若要重新定義主鍵,則必須首先刪除與現(xiàn)有主鍵之間的任何關(guān)系,然后才能創(chuàng)建新主鍵。 此時,將顯示一條消息警告您:作為該過程的一部分,將自動刪除現(xiàn)有關(guān)系。
如果主鍵由多個列組成,則其中一個列將允許重復(fù)值,但是主鍵中所有列的值的各種組合必須是唯一的。
在SQL Server中,主鍵是數(shù)據(jù)表中唯一標識每一行記錄的列,如果一個表沒有主鍵,表中的記錄將不能被區(qū)分開。此外,主鍵還有助于提高查詢性能,使用主鍵加快了表中記錄的訪問速度,因此,在使用SQL Server進行數(shù)據(jù)庫設(shè)計時,主鍵的設(shè)計就顯得尤為重要。
首先,在數(shù)據(jù)庫中創(chuàng)建好數(shù)據(jù)表后,可以使用以下T-SQL代碼語句
1. 使用 T-SQL 命令,執(zhí)行完命令后,主鍵就會被成功設(shè)置
ALTER TABLE 表名
ADD CONSTRAINT PK_主鍵名稱 PRIMARY KEY (列名)--其中,表名是要設(shè)置主鍵的表名,主鍵名稱是主鍵約束的名稱(可以自己定義),列名是要設(shè)置為主鍵的列名ALTER TABLE sys_menu
ADD CONSTRAINT PK_menu_id PRIMARY KEY (menu_id)ALTER TABLE student
ADD CONSTRAINT PK_student PRIMARY KEY (StuID) --將表中的StuID設(shè)為主鍵ALTER TABLE student
DROP CONSTRAINT PK_student --將表中的主鍵約束PK_studnet刪除
除此之外,在SQL Server中,還可以使用下列代碼定義表的主鍵
CREATE TABLE table_name(column_name datatype PRIMARY KEY)CREATE TABLE student --表名為student
(StuID int NOT NULL PRIMARY KEY, --學(xué)生學(xué)號StuName varchar(15) NOT NULL, --學(xué)生姓名Sex char(2) NULL, --性別Major varchar(20) NULL, --所選專業(yè)
)
primary key(列名1,列名2)
此外,在SQL Server中,還可以使用如下代碼定義聯(lián)合主鍵,也就是具有多個字段的主鍵。例如,要同時定義列customer_id和 order_id兩個字段為一個聯(lián)合主鍵,可以使用以下T-SQL代碼
CREATE TABLE orders(customer_id INT,order_id INT,PRIMARY KEY(customer_id, order_id))
alter table 表名 add constraint pk_name primary key (列名1,列名2)
因此,在SQL Server中,定義表的主鍵非常容易,無論是單一主鍵還是聯(lián)合主鍵,只需要幾行代碼,就可以完成定義。
設(shè)置主鍵并置為非空
?要先確定你要設(shè)置主鍵的的那列不為空,如果你的列為空,以下代碼可以幫助你設(shè)為空并且添加主鍵
/*Table_Member是數(shù)據(jù)表的名字,StudentID 是要設(shè)為主鍵的列,bigint 是主鍵列的數(shù)據(jù)類型*/
ALTER TABLE Table_Member ALTER COLUMN StudentID bigint NOT NULL;/*Table_Member是數(shù)據(jù)表的名字,StudentID 是要設(shè)為主鍵的列*/
ALTER TABLE Table_Member WITH NOCHECK
ADD CONSTRAINT PK_Table_Member PRIMARY KEY (StudentID)
更改已經(jīng)建好的表中主鍵列的字符類型
同樣的,這個操作也要分為兩步,在SQL server 的設(shè)計理念中,主鍵列不可更改數(shù)據(jù)類型,如果要將不是主鍵的列更改字符類型,直接跳到第二步。
ALTER TABLE [表名] DROP CONSTRAINT [主鍵約束名]ALTER TABLE [表名] ALTER COLUMN [列名] [數(shù)據(jù)類型]