1、SQL92语法
连接查询:也可以叫跨表查询,需要关联多个表进行查询
1.1显示每个员工信息,并显示所属的部门名称
以上输出,不正确,输出了56条数据,其实就是两个表记录的乘积,这种情况我们称为:“笛卡儿乘积”,出现错误的原因是:没有指定连接条件
1.2指定连接条件
以上结果输出正确,因为加入了正确的连接条件
以上查询也称为 “内连接”,只查询相等的数据(连接条件相等的数据)
1.3取得员工和所属的领导的姓名
以上称为“自连接”,只有一张表连接,具体的查询方法,把一张表看作两张表即可,如以上示例:第一个表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关键字
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;
以上两个查询效果相同
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关键字,但一般不建议这种写法,
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
目录 前言 1、线程安全的概念 2、线程不安全的原因 3、产生抢占式执行与原子性问题 4、产生多个线程修改同一个变量的问题 5、解决上述三个导致线程不安全的问题 5.1、锁 synchronized关键字 5.1.1、使用synchronized关键字进…