时间:2021-05-02
ORACLE 多表查询中间表的创建
表与表之间关系的分类:
1. 一对一(了解):
* 如:人和身份证
* 分析:一个人只有一个身份证,一个身份证只能对应一个人
2. 一对多(多对一):
* 如:部门和员工
* 分析:一个部门有多个员工,一个员工只能对应一个部门
3. 多对多:
* 如:学生和课程
* 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择
具体的实现方式:
1. 一对多(多对一):
* 如:部门和员工
* 实现方式:在多的一方建立外键,指向一的一方的主键。
2. 多对多(重点):
* 如:学生和课程
* 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键
3. 一对一(了解):
* 如:人和身份证
* 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。
详细并且典型的实例如下
用户表 USER
? 1 2 3 4 5 6 7 8 9 10 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
? 1 2 3 4 5 6 7 8 9 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')查询到的结果为
中间表
? 1 2 3 4 5 6 7 8 9 10 11 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为基准(一定要理解)
? 1 2 --查询的结果会以中间表的id为基准 SELECT * FROM users a ,role b, users_role c WHERE a.id=c.userid AND b.id=c.roleid查询到的结果为:
总结
到此这篇关于Oracle多表查询中间表的创建的文章就介绍到这了,更多相关Oracle多表查询中间表创建内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/Liamcsl/article/details/114135377
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
这篇文章主要介绍了Oracle中scott表结构与简单查询,实例分析Oracle查询的相关技巧,需要的朋友可以参考下本文实例讲述了Oracle中scott表结构
前言MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或多表联合查询的连接条件对另外一张表进行查
本文实例讲述了Yii2.0框架模型多表关联查询。分享给大家供大家参考,具体如下:联表查询--hasMany:useapp\models\User;$right=
oracle的表空间实例详解查询表空间SELECTUPPER(F.TABLESPACE_NAME)"表空间名", D.TOT_GROOTTE_MB"表空间大小
update:单表的更新不用说了,两者一样,主要说说多表的更新复制代码代码如下:Oracle>Oracle的多表更新要求比较严格,所以有的时候不是很好写,我们可