资源描述:
《sql多表查询与子查询》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQL基础-->多表查询--==========================--SQL基础-->多表查询--==========================/*一、多表查询 简言之,根据特定的连接条件从不同的表中获取所需的数据 笛卡尔集的产生条件: 省略连接条件 连接条件无效 第一个表中的所有行与第二个表中的所有行相连接 二、多表查询语法:*/ SELECT table1.column, table2.column FROM table1, table2 WHERE table1.col
2、umn1 = table2.column2; /* 但要注意where 不要省了,省略where 即为笛卡尔集,而且where 条件要有效, 两张表间有一个相同的字段,才好进行有效的多表查询 查询时列名前,加表名或表别名前辍(如果字段在两个表中是唯一的可以不加) 为了简化SQL书写,可为表名定义别名,格式:from 表名别名 如:fromempe,deptd 建议使用表的别名及表前缀,使用表别名可以简化查询,而使用表前缀则可以提高查询性能 例:查询每个员工的工号,姓名,工资,部门名和工作地点*/ select emp
3、no,ename,sal,dname,loc from emp,dept where emp.deptno=dept.deptno; /*三、多表连接类型: 从数据显示方式来讲有:内连接和外连接。 内连接:只返回满足连接条件的数据。 外连接:除了返回满足连接条的行以外,还返回左(右)表中,不满足条件的行, 称为左(右)连接 内连接*/ select empno,ename,sal,dname,loc from emp,dept where emp.deptno=dept.deptno; --(Oracle8i 及以前的写法)
4、 --内连接的另一种写法: select empno,ename,job,sal,dept.deptno,dname,loc from emp join dept on (emp.deptno=dept.deptno); --(SQL99的写法) /* 外连接: 两个表的查询中,使用外连接可以查询另一个表或者两个中不满足连接条件的数据。 外连接的符号是(+),(+)要放在字段名后。(+)对面的那个表,会全部显示。 外连接语法*/ SELECT table1.column, table2.column --右
5、外连接 FROM table1, table2 WHERE table1.column(+) = table2.column; SELECT table1.column, table2.column --左外连接 FROM table1, table2 WHERE table1.column = table2.column(+); --例: select empno,ename,job,sal,dept.deptno,dname,loc from emp,dept where em
6、p.deptno(+)=dept.deptno; --(Oracle8i 及以前的写法) --另一种写法(右连接): --(SQL99的写法) select empno,ename,job,sal,dept.deptno,dname,loc from emp right join dept on (emp.deptno=dept.deptno); --左连接: (SQL99的写法) select empno,ename,job,sal,dept.deptno,dname,loc from emp
7、left join dept on (emp.deptno=dept.deptno); --全连接(满连接) (SQL99的写法) select empno,ename,job,sal,d.deptno,dname,loc from empe full join deptd on (e.deptno=d.deptno); /* 自然连接 (SQL99的写法) 以两个表具有