linux之SQL語句簡明教程---主鍵,外來鍵,sql簡明教程

來源:互聯網
上載者:User

linux之SQL語句簡明教程---主鍵,外來鍵,sql簡明教程

主鍵 (Primary Key) 中的每一筆資料都是表格中的唯一值。換言之,它是用來獨一無二地確認一個表格中的每一行資料。主鍵可以是原本資料內的一個欄位,或是一個人造欄位 (與原本資料沒有關係的欄位)。主鍵可以包含一或多個欄位。當主鍵包含多個欄位時,稱為按鍵組合 (Composite Key)。

主鍵可以在建置新表格時設定 (運用 CREATE TABLE 語句),或是以改變現有的表格架構方式設定 (運用 ALTER TABLE)。

以下舉幾個在建置新表格時設定主鍵的方式:

MySQL

CREATE TABLE Customer 
(SID integer, 
Last_Name varchar(30), 
First_Name varchar(30), 
PRIMARY KEY (SID));

Oracle

CREATE TABLE Customer 
(SID integer PRIMARY KEY, 
Last_Name varchar(30), 
First_Name varchar(30));

SQL Server

CREATE TABLE Customer 
(SID integer PRIMARY KEY, 
Last_Name varchar(30), 
First_Name varchar(30));

以下則是以改變現有表格架構來設定主鍵的方式:

MySQL

ALTER TABLE Customer ADD PRIMARY KEY (SID);

Oracle

ALTER TABLE Customer ADD PRIMARY KEY (SID);

SQL Server

ALTER TABLE Customer ADD PRIMARY KEY (SID);

請注意,在用 ALTER TABLE 語句來添加主鍵之前,我們需要確認被用來當做主鍵的欄位是設定為 『NOT NULL』 ;也就是說,那個欄位一定不能沒有資料。 




外來鍵是一個(或數個)指向另外一個表格主鍵的欄位。外來鍵的目的是確定資料的參考完整性 (referential integrity)。換言之,只有被准許的資料值才會被存入資料庫內。

舉例來說,假設我們有兩個表格:一個 CUSTOMER 表格,裡面記錄了所有顧客的資料;另一個ORDERS 表格,裡面記錄了所有顧客訂購的資料。在這裡的一個限制,就是所有的訂購資料中的顧客,都一定是要跟在 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

CREATE TABLE ORDERS 
(Order_ID integer, 
Order_Date date, 
Customer_SID integer, 
Amount double, 
PRIMARY KEY (Order_ID), 
FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID));

Oracle

CREATE TABLE ORDERS 
(Order_ID integer PRIMARY KEY, 
Order_Date date, 
Customer_SID integer REFERENCES CUSTOMER (SID), 
Amount double);

SQL Server

CREATE TABLE ORDERS 
(Order_ID integer PRIMARY KEY, 
Order_Date datetime, 
Customer_SID integer REFERENCES CUSTOMER (SID), 
Amount double);

以下的例子則是藉著改變表格架構來指定外來鍵。這裡假設 ORDERS 表格已經被建置,而外來鍵尚未被指定:

MySQL

ALTER TABLE ORDERS 
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

Oracle

ALTER TABLE ORDERS 
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

SQL Server

ALTER TABLE ORDERS 
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

SQL DROP TABLE >> 

轉載請註明:小劉



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.