linux之SQL語句簡明教程---主鍵,外來鍵
主鍵 (Primary Key) 中的每一筆資料都是表格中的唯一值。
換言之。它是用來獨一無二地確認一個表格中的每一行資料。
主鍵能夠是原本資料內的一個欄位。或是一個人造欄位 (與原本資料沒有關系的欄位)。主鍵能夠包括一或多個欄位。當主鍵包括多個欄位時,稱為組合鍵 (Composite Key)。
主鍵能夠在建置新表格時設定 (運用 CREATE TABLE 語句),或是以改變現有的表格架構方式設定 (運用 ALTER TABLE)。
下面舉幾個在建置新表格時設定主鍵的方式:
MySQL:
(SID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID));
Oracle:
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));
SQL Server:
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));
下面則是以改變現有表格架構來設定主鍵的方式:
MySQL:
Oracle
ALTER TABLE Customer ADD PRIMARY KEY (SID);
SQL Server:
請註意。在用 ALTER TABLE 語句來加入主鍵之前,我們須要確認被用來當做主鍵的欄位是設定為 『NOT NULL』 ;也就是說。那個欄位一定不能沒有資料。
外來鍵是一個(或數個)指向另外一個表格主鍵的欄位。外來鍵的目的是確定資料的參考完整性 (referential integrity)。換言之,僅僅有被準許的資料值才會被存入資料庫內。
舉例來說。如果我們有兩個表格:一個 CUSTOMER
在這裏的一個限制。就是全部的訂購資料中的顧客。都一定是要跟在 CUSTOMER 表格中存在。在這裏。我們就會在 ORDERS 表格中設定一個外來鍵,而這個外來鍵是指向 CUSTOMER 表格中的主鍵。這樣一來,我們就能夠確定全部在ORDERS 表格中的顧客都存在 CUSTOMER 表格中。
換句話說,ORDERS 表格之中。不能有不論什麽顧客是不存在於 CUSTOMER 表格中的資料。
這兩個表格的結構將會是例如以下:
CUSTOMER 表格
欄位名 | 性質 |
SID | 主鍵 |
Last_Name | |
First_Name |
ORDERS 表格
欄位名 | 性質 |
Order_ID | 主鍵 |
Order_Date | |
Customer_SID | 外來鍵 |
Amount |
在以上的樣例中,ORDERS 表格中的 Customer_SID 欄位是一個指向 CUSTOMER 表格中 SID 欄位的外來鍵。
下面列出幾個在建置 ORDERS 表格時指定外來鍵的方式:
MySQL:
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
PRIMARY KEY (Order_ID),
FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID));
Oracle:
(Order_ID integer PRIMARY KEY,
Order_Date date,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);
SQL Server:
(Order_ID integer PRIMARY KEY,
Order_Date datetime,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);
下面的樣例則是藉著改變表格架構來指定外來鍵。
這裏如果 ORDERS 表格已經被建置。而外來鍵尚未被指定:
MySQL:
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);
Oracle:
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);
SQL Server:
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);
轉載請註明:小劉
linux之SQL語句簡明教程---主鍵,外來鍵