【SQL】通過SQL命令建立表和表之間的主外來鍵關係
阿新 • • 發佈:2019-02-16
通過題目,詳細大家已經非常瞭解我的目的了。下面我直接介紹需求了。
我想建立一個人員資訊表和部門資訊表,同時,我們想通過人員資訊知道此人的部門資訊。我們應該怎樣建表呢。
下面我以表格的形式展示咱們資料庫的結構。
人員資訊表
人員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資料庫