0
点赞
收藏
分享

微信扫一扫

SQL语法连接查询

1、SQL92语法

连接查询:也可以叫跨表查询,需要关联多个表进行查询

1.1显示每个员工信息,并显示所属的部门名称

SQL语法连接查询_左外连接

SQL语法连接查询_左外连接_02

以上输出,不正确,输出了56条数据,其实就是两个表记录的乘积,这种情况我们称为:“笛卡儿乘积”,出现错误的原因是:没有指定连接条件

1.2指定连接条件

SQL语法连接查询_左外连接_03

以上结果输出正确,因为加入了正确的连接条件
以上查询也称为 “内连接”,只查询相等的数据(连接条件相等的数据)

1.3取得员工和所属的领导的姓名

SQL语法连接查询_右连接_04

SQL语法连接查询_连接查询_05

以上称为“自连接”,只有一张表连接,具体的查询方法,把一张表看作两张表即可,如以上示例:第一个表emp e代码了员工表,emp m代表了领导表,相当于员工表和部门表一样.

2、SQL99语法

(内连接)显示薪水大于2000的员工信息,并显示所属的部门名称

采用SQL92语法:

select e.ename, e.sal, d.dname from emp e, dept d where e.deptno=d.deptno and  e.sal > 2000;

采用SQL99语法:

select e.ename, e.sal, d.dname from emp e join dept d on e.deptno=d.deptno where e.sal>2000;

select e.ename, e.sal, d.dname from emp e inner join dept d on e.deptno=d.deptno where e.sal>2000;

在实际中一般不加inner关键字

SQL语法连接查询_连接查询_06

SQL语法连接查询_连接查询_07

Sql92语法和sql99语法的区别:99语法可以做到表的连接和查询条件分离,特别是多个表进行连接的时候,会比sql92更清晰.

(外连接)显示员工信息,并显示所属的部门名称,如果某一个部门没有员工,那么该部门也必须显示出来

2.1右连接: 连接右边,主表在左

select e.ename, e.sal, d.dname from emp e right join dept d on e.deptno=d.deptno;

2.2左连接:连接左边,主表在右

select e.ename, e.sal, d.dname from dept d left join emp e on e.deptno=d.deptno;

以上两个查询效果相同

SQL语法连接查询_连接查询_08

SQL语法连接查询_右连接_09

3总结:

3.1连接分类:

3.1.1、内链接

* 表1  inner join  表2  on  关联条件

*  做连接查询的时候一定要写上关联条件

*  inner 可以省略

3.1.2、外连接

*左外连接

* 表1  left  outer  join  表2  on  关联条件

*  做连接查询的时候一定要写上关联条件

*  outer  可以省略

*右外连接

* 表1  right  outer  join  表2  on  关联条件

*  做连接查询的时候一定要写上关联条件

*  outer  可以省略

*左外连接(左连接)和右外连接(右连接)的区别:

*左连接以左面的表为准和右边的表比较,和左表相等的不相等都会显示出来,右表符合条件的显示,不符合条件的不显示

*右连接恰恰相反,以上左连接和右连接也可以加入outer关键字,但一般不建议这种写法,


举报

相关推荐

0 条评论