1. 程式人生 > >【SQL】通過SQL命令建立表和表之間的主外來鍵關係

【SQL】通過SQL命令建立表和表之間的主外來鍵關係

  通過題目,詳細大家已經非常瞭解我的目的了。下面我直接介紹需求了。
  我想建立一個人員資訊表和部門資訊表,同時,我們想通過人員資訊知道此人的部門資訊。我們應該怎樣建表呢。
  下面我以表格的形式展示咱們資料庫的結構。

人員資訊表

人員id 姓名 性別 部門id
001 小紅 101
002 小李 102
003 小王 103

部門資訊表

部門id 部門名稱 地址
101 財務
102 行政
103 公關

下面就是程式碼的實現了

create table dept--組織表
(
dept_id int primary key,
dept_name nvarchar(20) not null,
dept_address nvarchar(100) 
)


create table emp--員工表
( --這裡的括號不是“{}”

emp_id int constraint pk_emp_id primary key,
emp_name nvarchar(20) not null, 
emp_sex nchar(1) not null,

dept_id int constraint fk_dept_id foreign key
references dept(dept_id) )

知識擴充套件:
以emp表為例:
1、emp欄位,為int 型別,主鍵。constraint pk_emp_id表示給主鍵約束起了一個名字,在表的列表中可以看出來,這樣方便管理。同樣外來鍵也可以起別名。
2、nvarchar中的n表示國際化,有n表示支援漢字了,(需要驗證,如果沒有n是否也支援漢字。會出什麼問題)
3、在nvarchar中的var表示變數的意思,char表示字串型別。20表示最長支援20個字元。那麼nvarchar(20)表示支援國際化標準的動態增加的字串,但是最長僅僅支援20個漢字。
4、有興趣的可以瞭解nchar,nvarchar,varchar的區別以及在資料庫中的用法。
5、此表中的dept這是將dept的主鍵作為了emp的外來鍵,外來鍵名字為fk_dept_id。我們通過references來關係另一個表中的欄位。
6、create table 定義最後一個欄位的時候,就不要寫逗號了,這樣方便移植到Oracle資料庫