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多表查询中间表创建内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐