Oracle多表查询中间表的创建实例教程

 更新时间:2021年02月28日 15:29:01   作者:Liamcsl  
这篇文章主要给大家介绍了关于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多表查询中间表创建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle修改表空间大小的方法

    Oracle修改表空间大小的方法

    这篇文章主要介绍了Oracle修改表空间大小的方法,实例讲述了Oracle通过命令行实现修改Oracle表空间大小的方法,非常简单实用,需要的朋友可以参考下
    2015-12-12
  • windows系统下进入oracle数据库两种方法

    windows系统下进入oracle数据库两种方法

    这篇文章主要给大家介绍了关于windows系统下进入oracle数据库两种方法的相关资料,Oracle数据库是一款非常流行的关系型数据库管理系统,它被广泛用于企业级应用中,为了使用Oracle数据库,我们需要先进入数据库系统中,需要的朋友可以参考下
    2023-09-09
  • Oracle dbf文件移动的方法

    Oracle dbf文件移动的方法

    这篇文章主要介绍了Oracle dbf文件移动的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • CentOS命令行下装oracle 12c的方法(命令行模式安装)

    CentOS命令行下装oracle 12c的方法(命令行模式安装)

    这篇文章主要介绍了CentOS命令行下装oracle 12c的方法(命令行模式安装),需要的朋友可以参考下
    2016-09-09
  • Oracle去重4种实现方式小结

    Oracle去重4种实现方式小结

    这篇文章主要给大家介绍了关于Oracle去重4种实现方式的相关资料,在Oracle数据库中有时候我们需要查询多个列并去除重复值,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Oracle7.X 回滚表空间数据文件误删除处理方法

    Oracle7.X 回滚表空间数据文件误删除处理方法

    Oracle7.X 回滚表空间数据文件误删除处理方法...
    2007-03-03
  • Oracle数据库完整卸载的完整步骤

    Oracle数据库完整卸载的完整步骤

    oracle数据库卸载非常麻烦,经常卸载不彻底,导致重新装oracle非常麻烦,下面这篇文章主要给大家介绍了关于Oracle数据库完整卸载的完整步骤,需要的朋友可以参考下
    2023-03-03
  • oracle设置mybatis自动生成id插入方式

    oracle设置mybatis自动生成id插入方式

    这篇文章主要介绍了oracle设置mybatis自动生成id插入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Oracle逗号分隔列转行实现方法

    Oracle逗号分隔列转行实现方法

    在做系统时,经常会遇到在一个字段中,用逗号或其他符号分隔存储多个信息,例如保存某个用户的一对多权限时,在权限组这个字段中,就会逗号分隔保存多个权限编号。
    2010-12-12
  • Oracle怎么删除数据,Oracle数据删除的三种方式

    Oracle怎么删除数据,Oracle数据删除的三种方式

    这篇文章主要介绍了Oracle中删除数据的三种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论