1. 程式人生 > >SQL的主鍵和外來鍵的作用

SQL的主鍵和外來鍵的作用

SQL 的主鍵和外來鍵的作用:

外來鍵取值規則:空值或參照的主鍵值
(1)插入非空值時,如果主鍵值中沒有這個值,則不能插入。
(2)更新時,不能改為主鍵表中沒有的值。
(3)刪除主鍵表記錄時,可以在建外來鍵時選定外來鍵記錄一起聯刪除還是拒絕刪除。
(4)更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。

簡而言之,SQL的主鍵和外來鍵就是起約束作用。
關係型資料庫中一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性就可以成為一個主鍵。例如:

學生表(學號,姓名,性別,班級)

其中每個學生的學號是唯一的,學號就是一個主鍵;

課程表(課程編號,課程名,學分)

其中課程編號是唯一的,課程編號就是一個主鍵;

成績表(學號,課程號,成績)

成績表中單一一個屬性無法唯一標識一條記錄,學號和課程編號的組合才可以唯一標識一條記錄,所以學號和課程編號的屬性組是一個主鍵。
成績表中的學號不是成績表中的主鍵,但它和學生表中的學號相對應,並且學生表中的學號是學生表的主鍵,則稱成績表中的學號是學生表的外來鍵;同理,成績表中的課程號是課程表的外來鍵。

定義主鍵和外來鍵主要是為了維護關係資料庫的完整性,總結一下:

1.主鍵是能確定一條記錄的唯一標識。比如,一條記錄包括身份證號碼,姓名,年齡。身份證號碼是唯一確認你這個人的,其他的都可能有重複,所以身份證號碼是主鍵。
外來鍵用於與另一張表相關聯。是能確認另一張表記錄的欄位,用於保持資料的一致性。比如,A表中的一個欄位,是B表的主鍵,那它就可以是A表的外來鍵。

2.主鍵、外來鍵和索引的區別

定義:
主鍵:唯一標識一條記錄,不能有重複,不允許為空。
外來鍵:表的外來鍵是另一表的主鍵,外來鍵是可以有重複的,可以是空值。
索引:該欄位沒有重複值,但可以有一個空值。
作用:
主鍵:用來保證資料完整性
外來鍵:用來和其他表建立聯絡用
索引:用來提高查詢排序的速度
個數:
主鍵:主鍵只能有一個。
外來鍵:一個表可以有多個外來鍵。
索引:一個表可以有多個唯一索引。

建立SQL的主鍵和外來鍵約束的方法:

--如果在表建立好了以後再加約束,則格式分別為

--主鍵
ALTER TABLE 表名
--"PK"為主鍵的縮寫,欄位名為要在其上建立主鍵的欄位名,"PK_欄位名"就為約束名
ADD CONSTRAINT PK_欄位名   
--同上
PRIMARY KEY(欄位名)

--唯一約束
ALTER TABLE 表名
ADD CONSTRAINT UQ_欄位名
UNIQUE(欄位名)

--外來鍵約束
ALTER TABLE 表名
--"FK"
為外來鍵的縮寫 ADD CONSTRAINT FK_欄位名 FOREIGN KEY(欄位名) REFERENCES 關聯的表名(關聯的欄位名) --舉個例子 ALTER TABLE 表A ADD CONSTRAINT FK_B FOREIGN KEY(TicketNo) REFERENCES 表B(TicketNo) --級聯更新,級聯刪除,這樣在刪除主表Student時,成績表中該學生的所有成績都會刪除 ALTER TABLE 成績表 ADD CONSTRAINT FK_StudentNo FOREIGN KEY(StudentNo) REFERENCES Student(StudentNo) ON UPDATE CASCADE ON DELETE CASCADE --檢查約束 ALTER TABLE 表名 ADD CONSTRAINT CK_欄位名 --括號中的"CK_欄位名>0"為條件表示式,用關係運算符連線 CHECK(欄位名>0) --預設值約束 ALTER TABLE 表名 ADD CONSTRAINT DF_欄位名 --其中的'預設值'為想要設定的預設值,注意'FOR' DEFAULT '預設值' FOR 欄位名 --刪除建立的約束 ALTER TABLE 表名 --約束名為前面建立的如:FK_欄位名這樣的約束名 DROP CONSTRAINT 約束名 --注意:如果約束是在建立表的時候建立的,則不能用命令刪除 --只能在'企業管理器'裡面刪除 --獲取SqlServer中的表結構 SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns,systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = OBJECT_ID('Student') --單獨查詢表遞增欄位 SELECT [NAME] FROM syscolumns WHERE id = OBJECT_ID(N'Student') AND COLUMNPROPERTY(id,name,'IsIdentity')=1 --獲取表主外來鍵約束 EXEC sp_helpconstraint 'Student' --查詢表主鍵外來鍵資訊 SELECT sysobjects.id AS objectId, OBJECT_NAME(sysobjects.parent_obj) AS TableName, sysobjects.name AS constraintName, sysobjects.xtype AS constraintType, syscolumns.name AS columnName FROM sysobjects INNER JOIN sysconstraints ON sysobjects.xtype IN('C','F','PK','UQ','D') AND sysobjects.id = sysconstraints.constid LEFT OUTER JOIN syscolumns ON sysconstraints.id = syscolumns.id WHERE OBJECT_NAME(sysobjects.parent_obj) = 'Student'

部分效果圖如下:


獲取SqlServer中的表結構單獨查詢表遞增欄位獲取表主外來鍵約束查詢表主鍵外來鍵資訊

相關推薦

SQL外來作用

SQL 的主鍵和外來鍵的作用:外來鍵取值規則:空值或參照的主鍵值 (1)插入非空值時,如果主鍵值中沒有這個值,則不能插入。 (2)更新時,不能改為主鍵表中沒有的值。 (3)刪除主鍵表記錄時,可以在建外來鍵時選定外來鍵記錄一起聯刪除還是拒絕刪除。 (4)更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。 簡而言之

資料庫之SQL外來作用

SQL的主鍵和外來鍵約束 SQL的主鍵和外來鍵的作用: 外來鍵取值規則:空值或參照的主鍵值。 (1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。 (2)更新時,不能改為主鍵表中沒有的值。 (3)刪除主鍵表記錄時,你可以在建外來鍵時選定外來鍵記錄一起級聯

SQL外來約束

                SQL的主鍵和外來鍵的作用:    外來鍵取值規則:空值或參照的主鍵值。

SQL SERVER 外來中的 級聯刪除(ON DELETE CASCADE)級聯更新(ON UPDATE CASCADE)

建立學生表 create table gh_student( stuno varchar(3) primary key, stuname varchar(4), stuclass varchar(3) ) 插入資料 insert into gh_student values

SQL外來約束詳解及用途

SQL的主鍵和外來鍵的作用: 外來鍵取值規則:空值或參照的主鍵值。 (1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。 (2)更新時,不能改為主鍵表中沒有的值。 (3)刪除主鍵表記錄時,你可以在建外來鍵時選定外來鍵記錄一起級聯刪除還是拒絕刪除。 (4)更新主鍵記錄時

MySQL資料庫中外來的操作

在MySQL資料庫中,一般會涉及到主鍵和外來鍵,在上一個表中添加了主鍵之後,通常在下一個表中要新增外來鍵,但是添加了外來鍵之後,在實體類和資料庫中在加上上一個表的主鍵會比較好,這樣兩個表關聯之後,在上一個表查詢完成之後,將查詢是出來的欄位拿著去下一個庫裡查詢,會比較好。 select * fro

外來

1.定義 1.1 什麼是主鍵和外來鍵 1.2 主鍵和外來鍵的作用 1.3 主鍵、外來鍵和索引的區別 2.主鍵(primary key) 2.1 通過SSMS設定主鍵 2.2 通過SQL語句設定主鍵 3.外來鍵(

淺談Hibernate中對映集合屬性以及外來

首先說明一下什麼叫主鍵以及外來鍵。 主鍵和外來鍵是對於資料庫來說的,資料庫的表才有主鍵外來鍵的說法。 主鍵:主鍵是指標識某個表中唯一且非空的一條記錄行的列,這個列中的值不允許有重複的值,用於確定一個表中的一條記錄,實     際上主鍵就是告訴別人:這個資料列是唯一的。 外來

資料庫__SQL的外來約束_級聯更新_級聯刪除

SQL的主鍵和外來鍵的作用: 外來鍵取值規則:空值或參照的主鍵值。 (1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。 (2)更新時,不能改為主鍵表中沒有的值。 (3)刪除主鍵表記錄時,你可以在建外來鍵時選定外來鍵記錄一起級聯刪除還是拒絕刪除。 (4)更新

資料庫主外來及索引

1、主鍵: 若某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就是一個主鍵。主鍵不能重複,且只能有一個,也不允許為空。定義主鍵主要是為了維護關係資料庫的完整性。 2、外來鍵: 外來鍵用於與另一張表的關聯,是能確定另一張表記錄的欄位。外來鍵是另一個表的主鍵,可以重

關於資料庫主外來(終於弄懂啦)

一、什麼是主鍵、外來鍵: 關係型資料庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為一個主鍵比如學生表(學號,姓名,性別,班級) 其中每個學生的學號是唯一的,學號就是一個主鍵課程表(課程編號,課程名,學分) 其中課程編號是

SQL server :

技術分享 div 標識 reference create reat 按鈕 sse 是的 1.定義 1.1 什麽是主鍵和外鍵 1.2 主鍵和外鍵的作用 1.3 主鍵、外鍵和索引的區別 2.主鍵(primary key) 2.1 通過SSMS設置主鍵 2.2 通過SQL語

MySql必知必會實戰練習(四)外來sql約束、聯結表 MySql資料庫約束

  本博將對主鍵、外來鍵、MySql資料庫約束和聯結表的相關特性進行總結和實戰 1. 主鍵   表中的每一行都應該具有可以唯一標識自己的一列(或一組列),而這個承擔標識作用的列稱為主鍵   如果沒有主鍵,資料的管理會十分混亂。比如會存在多條一模一樣的記錄,刪除和修改特定行十分困難 (1)哪些列可以作為

資料庫MySQL之如何刪除、唯一外來約束?

如何刪除主鍵、唯一和外來鍵約束? 文章目錄 如何刪除主鍵、唯一和外來鍵約束? 刪除約束 1. 刪除主鍵約束: 2. 刪除唯一約束: 3. 刪除外來鍵約束: 刪除約束 約束的 index_n

sql------建立外來、聯合

首先建立一個使用者表,使用者id設為主鍵 create table user_login(user_id nvarchar primary key,user_passwd nvarchar,use

SQL關係-外來

一、定義: 主鍵--唯一標識一條記錄,不能有重複的,不允許為空 外來鍵--表的外來鍵是另一表的主鍵,外來鍵可以有重複的,可以是空值 二、作用: 主鍵--用來保證資料完整性 外來鍵--用來和其他表建立聯絡用的  三、個數: 主鍵--主鍵只能有一個 外來鍵--一個表可以有多個

MySQL中的查詢約束語句、聯合外來

查詢語句 過濾空值 過濾空值 如果該值是空的 就當做0來處理 SELECT IFNULL(欄位名,0) FROM 表名 聚合函式 排序 利用ORD

SQL入門(5)——表的設計、外來

定義主鍵約束(每一個表必須有一個主鍵列) create table student (id int  primary key,name varchar(40) ); 定義主鍵自動增長 create table student (id int  primary key auto_increment,name v

關於

主表 通過 更新 控制 數據緩沖 計算機 wid 但是 detail 數據庫主鍵和外鍵 1 什麽是主鍵 外鍵  學生表(學號,姓名,性別,班級)   學號是一個主鍵  課程表(課程號,課程名,學分)    課程號是一個主鍵  成績表(學號,課程號,成績)    

關於

tick not null 規則 更新 主鍵 join table 插入 out SQL的主鍵和外鍵的作用: 外鍵取值規則:空值或參照的主鍵值。 (1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。 (2)更新時,不能改為主鍵表中沒有的值。 (3)刪除主鍵表記錄時,你可