主鍵 (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 >>
linux之SQL語句簡明教程 AND OR
複雜條件是由二或多個簡單條件透過and或是or的連線而成。乙個 sql 語句中能夠有無限多個簡單條件的存在。複雜條件的語法例如以下 select 欄位名 from 名 where 簡單條件 代表 之內的情況會發生一或多次。在這裡的意思就是and加簡單條件及or加簡單條件的情況能夠發生一或多次。另外,...
linux之SQL語句簡明教程 TRIM
sql 中的 trim 函式是用來移除掉乙個字串中的字頭或字尾。最常見的用途是移除字首或字尾的空白。這個函式在不同的資料庫中有不同的名稱 各種 trim 函式的語法例如以下 trim 位置 要移除的字串 from 字串 位置 的可能值為 leading 起頭 trailing 結尾 or both ...
Linux 入門簡明教程
linux 不像windows有c d e等碟符的概念,所有檔案均在根目錄 下,通過路徑區分 bin bin 是 binaries 二進位制檔案 的縮寫,這個目錄存放著最經常使用的命令 boot 存放的是啟動 linux 時使用的一些核心檔案,包括一些連線檔案以及映象檔案 dev linux 的外部...