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

2021-09-07 11:12:38 字數 3317 閱讀 1597

主鍵 (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 的外部...