博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多表查询
阅读量:5901 次
发布时间:2019-06-19

本文共 1307 字,大约阅读时间需要 4 分钟。

外键是作为与主表的主键相关联的键值,外键可以有多个,同时有外键的表称作对应主键所在表的从表,那主键所在的表就作主表。图中,tid是教师表中id的外键,也就学生表是教师表的从表,同理,教师表也就是院系表的从表。

  外键的主要作用是保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。
 

思考题:要求查询出每个雇员的编号,姓名,工资,部门名称,工资所在公司的工资等级--第一步确定所需要的表,以及表中字段  --emp,dept,salgrade  --emp:雇员编号,姓名,工资  --dept: 部门名称  --salgrade: 工资等级--第二步确定表的关联字段  --emp.deptno=dept.deptno  --emp.sal between salgrade.losal and salgrade.hisal--第三步:查询每个雇员的信息select e.empno,e.ename,e.sal from emp e--第四步:为查询引入部门信息,并添加消除笛卡尔积的条件select e.empno,e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno--第五步:为查询引入工资等级信息,并添加消除笛卡尔积德条件select e.empno,e.ename,e.sal,d.dname,s.grade from emp e,dept d,salgrade s where e.deptno=d.deptno and e.sal between s.losal and s.hisal

交叉连接(cross join):用于产生笛卡尔积(笛卡尔积本身并不是属于无用的内容,在某些情况下还是需要使用的)

   select * from emp cross join dept; 

b、自然连接(natural join):自动找到匹配的关联字段,消除掉笛卡尔积

   select * from emp natural join detp 

但是并不是所有的字段都是关联字段,设置关联字段需要通过约束指定;

c、join using子句:用户自己指定一个消除笛卡尔积的关联字段

   select * from emp join dept using(deptno); 

d、join ... on子句:用户自己指定一个可以消除笛卡尔积德关联条件

  select * from emp join dept on(emp.deptno=dept.deptno);  

e、连接方向的改变:

  左(外)连接: left outer join ...on;

  右(外)连接: right outer join ...on;

  全(外)连接: full outer join ...on;

   select * from emp right outer join dept on(emp.deptno=dept.deptno); 

转载于:https://www.cnblogs.com/fy02223y/p/7197659.html

你可能感兴趣的文章
微信小程序 js逻辑
查看>>
linux 安装 sftp
查看>>
openStack queens
查看>>
(转)EOSIO开发(四)- nodeos、keosd与cleos
查看>>
MVC5+EF6 入门完整教程八
查看>>
Java 设计模式专栏
查看>>
常用Mysql或者PostGresql或者Greenplum的语句总结。
查看>>
工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型
查看>>
appium 报错
查看>>
phpquery中文手册
查看>>
微信nickname乱码(emoji)及mysql编码格式设置(utf8mb4)解决的过程
查看>>
【转】C++ 笔试面试题目
查看>>
同步和异步的区别
查看>>
委托、Lambda表达式、事件系列02,什么时候该用委托
查看>>
在ASP.NET MVC控制器中获取链接中的路由数据
查看>>
使用ASP.NET Atlas SortBehavior实现客户端排序
查看>>
图像滤镜处理算法:灰度、黑白、底片、浮雕
查看>>
多线程一个错误的例子
查看>>
默认网关及route print
查看>>
Servlet如何处理一个请求?
查看>>