oracle数据查询的规范与优化.docx
文本预览下载声明
数据查询是数据库中最基本也最常用的一类数据操作,数据查询可以由用户也可以由应用程序来完成。本章我们讲Oracle的数据查询语法格式,简单的数据查询和复杂的数据查询,复杂查询包括连接查询、子查询和联合查询。在每节我们都给出恰当的例子和直观地说明使得读者可以轻松地掌握数据查询的原理和查询功能的实现。简单查询只涉及到单个表的查询,本节为了引导读者入门,先介绍简单查询,重点包括如何实现简单查询和查询规范,使用别名机制和使用连接运算符,如何使用DISTICT语句以及在简单查询中使用算数运算。实现简单查询的规范。别名和连接运算符。使用DISTINCT子句。简单查询中的算数运算。实现简单查询的规范。 简单查询只涉及一个表,包括两个关键字SELECT和FROM。其基本语法格式为:SELECT 列名[列名……] FROM 表名。举例:查询表EMP中的员工信息。SQL SELECT empno,ename,job,sal,deptno 2 FROM emp; 规范如下:书写规范最好是关键字大些,而列名小写,这样便于阅读。SQL的关键字不能缩写,必须严格按照原关键字书写。SQL语句可以单行排列也可以多行排列,但是为了便于阅读推荐多行排列。列名的大小写不敏感,而且可以在同一个列名中大小写混排,不影响数据查询。如把ename改为EnaME。别名。在有些报表输出中,我们看到的列名不是很好理解,至少不是很直观,对于一个不懂数据库的人看到这样的报表输出显然难于理解,如果可以将列名修改成中文或更易于理解英文就更好理解了。Oracle提供了一个别名机制来实现列名的修改。示例1:SQL SELECT empno 员工号,ename 姓名, job 岗位, sal 月工资, deptno 部门号 2 FROM emp; 示例2SQL select empno employee_number,ename employee_name,sal salary 2 from emp; 设置别名的方法是在列明后空格,然后使用双引号,在双引号内输入别名,如果是英文别名可以在列名后空格,然后紧跟要英文别名。 连接运算符连接运算符顾名思义是起到连接作用的,在查询输出中为了使得输出结果更易于阅读,更像自然语言的方式,使用连接符可移动到达这个效果。 示例1:SQL SELECT ename ||的雇佣日期是: || hiredate 2 FROM emp; 使用别名和连接运算符:SQL SELECT ename ||的雇佣日期是: || hiredate 员工雇佣日期查询 2 FROM emp; DISTINCT运算符DICTINCT的运算符使得输出的结果中对于某列的值不允许重复,也就是该列的输出值应该是独一无二的。为了说明它的用法,我们给出实例 。示例:SQL select job 2 from emp; 示例:SQL SELECT DISTINCT job 2 FROM emp; 简单查询中的算数运算。在查询中自然可以使用算数运算符,即加、减、乘、除四则运算。我们继续对表EMP操作。 例子10-10 在查询中使用运算符。SQL SELECT ename ||‘增加10%后的月薪是:’|| sal*(1+0.1) “加薪后的员工工资” FROM emp; 乘积连接笛卡尔积是数据库关系运算中的概念,这里我们不给出严格的关系代数定义,而是只给出解释性的说明,对于维护数据库的DBA来讲更具有可操作性。笛卡尔积的结果是将两个表中的所有行的一个组合,如果表1有n行,而表2有m行,则笛卡尔积的结果有n*m行。 SQL select e.ename,e.sal,e.hiredate,d.dname,d.loc 2 from emp e,dept d 3 order by e.hiredate;相等连接 相等连接是使用WHERE字句中两个表或多个表中相应列的值的相等条件来选择数据。我们以两个表的相等连接为例,首先找到两个表中满足相等条件的记录(表中相应的行),然后再根据SELECT语句选择相应列的值。 例子: 实现相等连接的查询。SQL select e.ename,d.deptno,d.dname,d.loc 2 from dept d,emp e 3 where d.deptno = e.deptno; 自然连接在数据库关系运算中,自然连接是一个重要的连接运算,在ORACLE数据库中自然连接可以通过相等连接实现,但是为了与数据库关系理论结合起来,对于学过数据库原理的读者来说或者更熟悉自然连接这个概念,所以我们先用自然语言描述什么是自然连接,如果有两个表做自然连接,一般这两个表有至少一个相同的属性,首先将相同属性的相同值的行连接起来,然后去掉一个重复的相同属性的值,如
显示全部