Oracle多表查詢中間表的創建實例教程
ORACLE 多表查詢中間表的創建
表與表之間關系的分類:
1. 一對一(瞭解):
* 如:人和身份證
* 分析:一個人隻有一個身份證,一個身份證隻能對應一個人
2. 一對多(多對一):
* 如:部門和員工
* 分析:一個部門有多個員工,一個員工隻能對應一個部門
3. 多對多:
* 如:學生和課程
* 分析:一個學生可以選擇很多門課程,一個課程也可以被很多學生選擇
具體的實現方式:
1. 一對多(多對一):
* 如:部門和員工
* 實現方式:在多的一方建立外鍵,指向一的一方的主鍵。
2. 多對多(重點):
* 如:學生和課程
* 實現方式:多對多關系實現需要借助第三張中間表。中間表至少包含兩個字段,這兩個字段作為第三張表的外鍵,分別指向兩張表的主鍵
3. 一對一(瞭解):
* 如:人和身份證
* 實現方式:一對一關系實現,可以在任意一方添加唯一外鍵指向另一方的主鍵。
詳細並且典型的實例如下
用戶表 USER
CREATE TABLE USER( id VARCHAR(32) PRIMARY KEY, email VARCHAR(50) UNIQUE NOT NULL, username VARCHAR(50), PASSWORD VARCHAR(50) ) INSERT INTO USER(id,email,username,PASSWORD)VALUE('1','111','小明','11111') INSERT INTO USER(id,email,username,PASSWORD)VALUE('2','222','小紅','22222') INSERT INTO USER(id,email,username,PASSWORD)VALUE('3','333','小張','33333')
查詢到的結果為
角色表 ROLE
CREATE TABLE role( id VARCHAR(32) PRIMARY KEY, roleName VARCHAR(50) , roleDesc VARCHAR(50) ) INSERT INTO role(id,roleName,roleDesc)VALUE('1','工程師','111') INSERT INTO role(id,roleName,roleDesc)VALUE('2','醫生','222') INSERT INTO role(id,roleName,roleDesc)VALUE('3','教師','333')
查詢到的結果為
中間表
CREATE TABLE users_role( userId VARCHAR(32), roleId VARCHAR(32), PRIMARY KEY(userId,roleId), FOREIGN KEY (userId) REFERENCES users(id), FOREIGN KEY (roleId) REFERENCES role(id) ) INSERT INTO users_role(userId,roleId )VALUE('1','2') INSERT INTO users_role(userId,roleId )VALUE('2','2') INSERT INTO users_role(userId,roleId )VALUE('3','3')
查詢到的結果為
關聯中間表進行查詢
重點特別要註意此SQL的寫法
查詢的結果會以中間表的id為基準(一定要理解)
--查詢的結果會以中間表的id為基準 SELECT * FROM users a ,role b, users_role c WHERE a.id=c.userid AND b.id=c.roleid
查詢到的結果為:
總結
到此這篇關於Oracle多表查詢中間表的創建的文章就介紹到這瞭,更多相關Oracle多表查詢中間表創建內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MySQL約束(創建表時的各種條件說明)
- MySQL數據庫如何給表設置約束詳解
- mybatis如何使用註解實現一對多關聯查詢
- MySql數據庫觸發器使用教程
- PostgreSQL通過oracle_fdw訪問Oracle數據的實現步驟