Oracle数据库的开发与应用(4)

2019-05-17 16:20

16

17

5 基本查询

5.1 简单查询语句

查询所有列:select * from dept;

查询指定列:desc emp(显示表结构) select empno,ename,sal from emp;

查询日期列:日期列是指date类型列,默认显示格式为dd-mon-yy,不同语言和地区的日期显示结果

有所不同。如果想以自己习惯的日期格式显示日期值,必须要用to_char函数进行转换。

Select ename,to_char(hiredate,?YYYY-MM-DD? from emp; 上述语句显示格式:1980-12-17

取消重复行:默认会显示所有行,但完全相同的查询结果没有实际意义,因此有时需要取消重复结果 Select distinct deptno,job from emp;(显示三列都不相同的记录集)

18

Select distinct deptno;(只显示deptno不同的记录集) 使用算术表达式:可在数字列上用算术表达式(+,-,*,/) Select ename,sal,sal*12 from emp;

使用列别名:默认情况下,列标题是大写格式的列名或表达式,如果使用列别名,列别名可跟在列名

后,并且在二者之间可以加AS关键字,若列别名区分大小写、包含特殊字符或空格,必须用双引号引住

Select ename as name,sal*12 “Annual Salary” from emp;

处理NULL:NULL表示未知值,既不是空格也不是0。若没为列提供数据且该列无默认值,则其数据

为NULL。当算术表达式包含NULL时,其结果也是NULL。

Select ename,sal,comm,sal+comm from emp;

Select ename,sal,comm,sal+nvl(comm,0) from emp; Nvl(comm,0)说明:如果comm存在数值,则函数返回其原有数值;如果comm列为NULL,

则函数返回0。

连接字符串:连接字符串是使用||操作符完成的。如果在字符串中要加入数字值,那么在||后可以直接指

定数字;如果在字符串中加入字符和日期值,则必须用单引号引住。

Select ename||?的岗位是?||job “Employee” from emp; 或Select ename||?的岗位是?||job AS Employee from emp;

[注释:dual是一个虚拟表,用来查那些不属于实际表里的内容,如:select sysdate from dual; select 3+3 from dual;]

限制数据(条件查询)

条件查询中条件表达式中需要使用各种比较操作符,如(=,<>(!=),>=,<=,>,<,BETWEEN…AND…,IN(list),LIKE,IS NULL)

使用数字值:select ename,sal from emp where sal>2000;

使用字符值:select ename,sal from emp where job=?MANAGER?;//字符值必须用单引号引住 需要注意:字符值区分大小写

使用日期值:在where条件中使用日期值时,必须用单引号引住,并且日期必须符合默认日期显示格

式和日期语言。如果不符合默认日期显示格式,必须使用to_date函数进行转换。

Select ename,sal,hiredate from emp where hiredate>?01-1月-82?; 使用BETWEEN…AND操作符:

select ename,sal,job from emp where sal between 2000 and 4000

使用LIKE操作符:执行模糊查询。%:通配0或多个字符 _:通配单个字符

Select ename,sal from emp where ename like ?S%?//显示首字符为S的所有雇员名及

其工资

Select ename,sal from emp where ename like ?__o%?;

当希望使用这两个字符(%,_)招行模糊查询时,必须使用ESCAPE选项和转义

符实现。当使用ESCAPE选项时,需要在%或_前加转义符,并且在ESCAPE选项中指定转义符的名称。例:

Select ename,sal from emp where ename like ?%a_%? ESCAPE ?a?; 使用IN操作符:select ename,sal,job from emp where job in(?CLERK?,?MANAGER?) 使用IS NULL操作符:select ename from emp where mgr IS (NOT) NULL; 使用AND,OR,NOT操作符:

Select ename,sal,job,deptno from emp where deptno=20 and job=?CLERK?; Select ename,sal,job,deptno from emp where sal>2500 or job=?MANAGER? Select ename,sal,comm,deptno from emp where comm is not null;

19

5.2 排序数据

执行查询操作时,默认情况下Oracle以无序方式显示数据。为了更直观地显示数据结果,在实际应用中经常对数据进行排序

升序排序:默认数据以升序方式排列,当以特定列执行升序排序时,如果排序列存在NULL行,那么

NULL行会显示在最后面。

Select ename,sal from emp order by sal;

降序排序:必须指定DESC关键字,如果排序列存在NULL行,那么NULL行会显示在最前面。 Select ename,sal from emp order by sal desc;

使用多列排序:当以多列进行排序时,首先按照第一列进行排序,当第一列存在相同数据时,然后以

第二列进行排序。

SELECT ename,deptno,sal FROM emp ORDER BY deptno ASC,sal DESC;

使用非选择列进行排序:执行排序操作时,多数情况下会在选择列表中包含排序列,但选择列表也可

以不包含任何排序列。

SELECT ename FROM emp ORDER BY sal DESC;

使用列别名排序:如果在选择列表中为列或表达式定义了别名,那么当执行排序操作时,既可以使用

列或表达式进行排序,也可以使用列别名进行排序。

SELECT ename,sal*12 年收入 FROM emp ORDER BY 年收入 DESC;

使用列位置排序:排序操作不仅可以指定列名、列别名,也可以按照列或表达式在选择列表中的位置

进行排序。另外当使用UNION、UNION ALL、INTERSECT、MINUS等集合操作符合并查询结果时,如果选择列表的列名不同,并且希望进行排序,必须使用列位置进行排序。

SELECT deptno,dname FROM dept

UNION

SELECT empno,ename FROM emp ORDER BY 1;

6 复杂查询

6.1 数据分组

实际应用中,经常需要对数据进行统计。当统计数据时,需要将表的数据划分成几个组,最终统计每个组的数据结果。

1) 数组函数

分组函数用于统计表的数据,与单行函数不同,分组函数作用于多行,并返回一个结果,所以有时也称为多行函数。一般情况下,分组函数要与GROUP BY子句结合使用。在使用分组函数时,如果忽略了GROUP BY子句,那么会汇总所有行,并产生一个结果。

? MAX和MIN:用于取得列或表达式的最大值和最小值。

SELECT max(sal) 最高工资,min(sal) 最低工资 FROM emp; ? AVG和SUM:用于取得表达式的平均值或总和

SELECT avg(sal) 平均工资,sum(sal) 总计工资 FROM emp; ? COUNT:用于取得总计行数

20


Oracle数据库的开发与应用(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工艺生产实习报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: