SQL92、SQL99及其链接方式

第一节课:sql92学习
				-查询员工姓名,工作,薪资,部门名称
				sql的联合查询(多表查询)
				--1、sql92标准
				----笛卡尔积:一件事情的完成需要很多步骤,而不同的步骤有很多种方式,完成这件事情的所有方式称之为笛卡尔积
					select * from emp--14
					select * from dept--7
					select * from emp,dept order by ename--7*14=98
				等值链接,链接条件。等值链接的时候字段的名字可以不相同,但是字段的值要相同。
					--查询员工姓名,工作,薪资,部门名称
					select * from emp,dept where emp.deptno=dept.deptno--使用等值链接进行结果筛选
					select ename,job,sal,dname from emp,dept where emp.deptno=dept.deptno;--使用等值链接查询指定字段数据
					select ename,job,sal,emp.deptno,dname from emp,dept where emp.deptno=dept.deptno;--多表查询的时候,查看相同字段的值,必须声明所在表
					select emp.ename,emp.job,emp.sal,emp.deptno,dept.dname from emp,dept where emp.deptno=dept.deptno;--在查询指定字段值的时候,加上表名提高查询效率
					select e.ename,e.job,e.sal,e.deptno,d.dname from emp e,dept d where e.deptno=d.deptno;--多表查询中使用别名进行表的区分
					select e.ename,e.job,e.sal,e.deptno,d.dname from emp e,dept d where e.deptno=d.deptno order by deptno;--还可以使用order by 排序
				非等值链接
					---查询员工姓名,工作,工资,工资等级
					select * from salgrade
					select * from emp,salgrade order by ename
					select * from emp,salgrade where sal>losal and sal<hisal
					select e.ename,e.job,e.sal,s.grade from emp e,salgrade s where e.sal>s.losal and e.sal<s.hisal;
				自连接:使用频率不是很高,因为自连接的条件要求不同信息共存在一张里,其实就两张相同的表的等值链接。
					--查询员工姓名,工作,薪资,及上级领导姓名
					select * from emp for update
					create table temp as select * from emp
					select * from emp e,temp t where e.mgr=t.empno
			
			第二节课:sql99
					sql99学习:
						交叉链接(没啥用)
							select * from emp cross join dept
							自然链接:natural join
							 (1)、	自然链接会自动使用多表中所有相同字段(不但值相同,名字也要相同)进行筛选
									前提:多表一定要有同名同值的字段
									注意:自然连接会自动使用所有的相同字段进行结果筛选
							(2)、使用using关键字可以指定字段进行链接查询,但是必须是同名字段   inner join
							(3)、使用on关键字可以直接在其后书写链接条件,没有限制             inner join
							查询员工及员工所在的部门信息
								select * from dept natural join emp
								select * from dept d,emp e where d.deptno=e.deptno 
							问题1:假如在链接查询的时候不想使用所有相同字段进行筛选怎么办?
								----使用using关键字
								---查询员工及员工所在的部门信息
							select * from dept  join emp using(deptno)
							问题2:假如在链接查询中没有同名字段,但是有同值字段怎么筛选?
								   使用on关键字
							查询员工及员工所在的部门信息
								select * from dept inner join emp on dept.deptno=emp.deptno
							查询部门及部门的城市信息
								select * from dept inner join city on dept.loc=city.cid
					外链接
					   (1)、左外链接 left outer join
						(2)、右外链接  right outer join
						(3)、全外链接  full outer join  
					左外链接
						查询没有部门的员工信息及员工和部门信息
						select * from emp e,dept d where d.deptno(+)=e.deptno--sql92

					select *     ---sql99
					from emp e 
					left join dept
					using(deptno)
					--右外链接
					select * from emp e,dept d where d.deptno=e.deptno(+)--sql92

					select *  ---sql99
					from emp e
					right outer join dept d
					on e.deptno=d.deptno
					--全外链接
					select *
					from emp e
					full outer join dept d
					on e.deptno=d.deptno

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值