经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Oracle » 查看文章
Oracle多表查询中间表的创建实例教程
来源:jb51  时间:2021/3/1 8:37:28  对本文有异议

ORACLE 多表查询中间表的创建

表与表之间关系的分类:

  1. 一对一(了解):
   * 如:人和身份证
   * 分析:一个人只有一个身份证,一个身份证只能对应一个人
  2. 一对多(多对一):
   * 如:部门和员工
   * 分析:一个部门有多个员工,一个员工只能对应一个部门
  3. 多对多:
   * 如:学生和课程
   * 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择

具体的实现方式:

  1. 一对多(多对一):
   * 如:部门和员工
   * 实现方式:在多的一方建立外键,指向一的一方的主键。
  
  2. 多对多(重点):
   * 如:学生和课程
   * 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键
  
  3. 一对一(了解):
   * 如:人和身份证
   * 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。

详细并且典型的实例如下

用户表 USER

  1. CREATE TABLE USER(
  2. id VARCHAR(32) PRIMARY KEY,
  3. email VARCHAR(50) UNIQUE NOT NULL,
  4. username VARCHAR(50),
  5. PASSWORD VARCHAR(50)
  6.  
  7. )
  8. INSERT INTO USER(id,email,username,PASSWORD)VALUE('1','111','小明','11111')
  9. INSERT INTO USER(id,email,username,PASSWORD)VALUE('2','222','小红','22222')
  10. INSERT INTO USER(id,email,username,PASSWORD)VALUE('3','333','小张','33333')

查询到的结果为

用户表详情

角色表 ROLE

  1. CREATE TABLE role(
  2. id VARCHAR(32) PRIMARY KEY,
  3. roleName VARCHAR(50) ,
  4. roleDesc VARCHAR(50)
  5. )
  6.  
  7. INSERT INTO role(id,roleName,roleDesc)VALUE('1','工程师','111')
  8. INSERT INTO role(id,roleName,roleDesc)VALUE('2','医生','222')
  9. INSERT INTO role(id,roleName,roleDesc)VALUE('3','教师','333')
  10.  

查询到的结果为

角色表详情

中间表

  1. CREATE TABLE users_role(
  2. userId VARCHAR(32),
  3. roleId VARCHAR(32),
  4. PRIMARY KEY(userId,roleId),
  5. FOREIGN KEY (userId) REFERENCES users(id),
  6. FOREIGN KEY (roleId) REFERENCES role(id)
  7. )
  8.  
  9. INSERT INTO users_role(userId,roleId )VALUE('1','2')
  10. INSERT INTO users_role(userId,roleId )VALUE('2','2')
  11. INSERT INTO users_role(userId,roleId )VALUE('3','3')

查询到的结果为

中间表详情

关联中间表进行查询

重点特别要注意此SQL的写法

查询的结果会以中间表的id为基准(一定要理解)

  1. --查询的结果会以中间表的id为基准
  2. SELECT * FROM users a ,role b, users_role c WHERE a.id=c.userid AND b.id=c.roleid

查询到的结果为:

进行表的多对多查询的结果

总结

到此这篇关于Oracle多表查询中间表的创建的文章就介绍到这了,更多相关Oracle多表查询中间表创建内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号