Oracle专题4之Oracle基本查询

前端之家收集整理的这篇文章主要介绍了Oracle专题4之Oracle基本查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、Oracle的基本查询语句

  • 查询概述:查询是使用最频繁的一个操作,可以从一个表中查询数据,也可以从多个表中查询数据,本节主要围绕单表查询的操作。
  • 基本查询的语法格式:SELECT * | {[DISTINCT] column | expression [alias],...} FROM table [ WHERE condition](Table用于指定表名、column用于指定列名、expression用于指定表达式、alias用于指定列的别名、condition用于指定查询条件。)

a、排除重复行distinct

  • 默认情况下,当执行查询操作时,会显示所有满足条件的行、包括重复行。
  • 例如:SELECT DISTINCT deptno,job FROM emp;
  1. sql> conn scott/02000059
  2. 已连接。
  3. sql> SELECT deptno,job FROM emp;
  4. DEPTNO JOB
  5. 20 CLERK
  6. 30 SALESMAN
  7. 30 SALESMAN
  8. 20 MANAGER
  9. 30 SALESMAN
  10. 30 MANAGER
  11. 10 MANAGER
  12. 20 ANALYST
  13. 10 PRESIDENT
  14. 30 SALESMAN
  15. 20 CLERK
  16. 30 CLERK
  17. 20 ANALYST
  18. 10 CLERK
  19. 已选择14行。
  20. sql> SELECT DISTINCT deptno,job FROM emp;
  21. DEPTNO JOB
  22. 20 CLERK
  23. 30 SALESMAN
  24. 20 MANAGER
  25. 30 CLERK
  26. 10 PRESIDENT
  27. 30 MANAGER
  28. 10 CLERK
  29. 10 MANAGER
  30. 20 ANALYST
  31.  
  32. 已选择9行。
  33. sql>
  34. ```
  35. ## b、查询日期列
  36. - 日期列:是指数据类型为日期类型的列,如DATE类型。日期列的默认显示格式为DD-MON-RR。
  37. - RR:代表年,而且只取年份的后两位数字。
  38. - 日期格式中RR和YY的区别:
  39.  
  40. | 指定日期 | 当前年份 | RR格式说明 | RR结果年份 | YY格式说明 | YY结果年份 |
  41. | -------- | -------- | -------- | -------- | -------- | -------- |
  42. | 18-1月-12 | 2017 | 指定年份在0-49之间,当前年份在0-49之间 | 2012 | 当前年份的前两位 + 指定日期的后两位 | 2012 |
  43. | 18-1月-81 | 2017 | 指定年份在50-99之间,当前年份在0-49之间 | 1981(上一世纪) | 当前年份的前两位 + 指定日期的后两位 | 2081 |
  44. | 18-1月-12 | 2060 | 指定年份在0-49之间,当前年份在50-99之间 | 2112(下一世纪) | 当前年份的前两位 + 指定日期的后两位 | 2012 |
  45. | 18-1月-81 | 2060 |指定年份在50-99之间,当前年份在50-99之间 | 2081 | 当前年份的前两位 + 指定日期的后两位 | 2081 |
  46.  
  47. ## c、以简体中文显示日期结果
  48. - 如果以简体中文显示日期结果,那么可以将会话的NLS_LANGUAGE参数设置为SIMPLEFIED CHINESE。
  49. - ALTER SESSION SET nls_language='SIMPLIFIED CHINESE';
  1. sql> ALTER SESSION SET nls_language='SIMPLIFIED
  2. 会话已更改。
  3. pno,hiredate from emp;
  4. EMPNO HIREDATE
  5. 7369 17-12月-80
  6. 7499 20-2月 -81
  7. 7521 22-2月 -81
  8. 7566 02-4月 -81
  9. 7654 28-9月 -81
  10. 7698 01-5月 -81
  11. 7782 09-6月 -81
  12. 7788 19-4月 -87
  13. 7839 17-11月-81
  14. 7844 08-9月 -81
  15. 7876 23-5月 -87
  16. 7900 03-12月-81
  17. 7902 03-12月-81
  18. 7934 23-1月 -82
  19. 已选择14行。
  20. ```
  21. ## d、以美国英语显示日期结果
  • 如果以美国英语显示日期结果,那么可以将会话的NLS_LANGUAGE参数设置为AMERICAN。
  • 示例:ALTER SESSION SET nls_language = 'AMERICAN'
  1. sql> ALTER SESSION SET nls_language = 'AMERICAN';
  2. Session altered.
  3. sql> SELECT empno,hiredate from emp;
  4. EMPNO HIREDATE
  5. 7369 17-DEC-80
  6. 7499 20-FEB-81
  7. 7521 22-FEB-81
  8. 7566 02-APR-81
  9. 7654 28-SEP-81
  10. 7698 01-MAY-81
  11. 7782 09-JUN-81
  12. 7788 19-APR-87
  13. 7839 17-NOV-81
  14. 7844 08-SEP-81
  15. 7876 23-MAY-87
  16. 7900 03-DEC-81
  17. 7902 03-DEC-81
  18. 7934 23-JAN-82
  19. 14 rows selected.

e、以特定形式显示日期结果

  • 如果希望定制日期显示格式,并按照特定方式显示日期结果,那么可以设置会话的nls_date_format参数。
  • 示例:ALTER SESSION SET nls_date_format = 'YYYY/MM/DD';
  1. sql> ALTER SESSION SET nls_date_format = 'YYYY/MM/DD';
  2. Session altered.
  3. sql> SELECT empno,hiredate from emp;
  4. EMPNO HIREDATE
  5. 7369 1980/12/17
  6. 7499 1981/02/20
  7. 7521 1981/02/22
  8. 7566 1981/04/02
  9. 7654 1981/09/28
  10. 7698 1981/05/01
  11. 7782 1981/06/09
  12. 7788 1987/04/19
  13. 7839 1981/11/17
  14. 7844 1981/09/08
  15. 7876 1987/05/23
  16. 7900 1981/12/03
  17. 7902 1981/12/03
  18. 7934 1982/01/23
  19. 14 rows selected.
  20. ```
  21. # 2、Oracle查询语句中算术运算符的使用
  22. ## a、使用算术运算符
  23. - 算术运算符可以应用到日期类和数字列。
  24. - 需求:应用scott.emp表查询雇员编号、雇员名、雇员月工资、雇员的年收入。如:SELECT empno,ename,sal,sal *12 year_sal form emp;
  1. sql> SELECT empno,sal *12 year_sal from emp;
  2. EMPNO ENAME SAL YEAR_SAL
  3. 7369 SMITH 800 9600
  4. 7499 ALLEN 1600 19200
  5. 7521 WARD 1250 15000
  6. 7566 JONES 2975 35700
  7. 7654 MARTIN 1250 15000
  8. 7698 BLAKE 2850 34200
  9. 7782 CLARK 2450 29400
  10. 7788 SCOTT 3000 36000
  11. 7839 KING 5000 60000
  12. 7844 TURNER 1500 18000
  13. 7876 ADAMS 1100 13200
  14. 7900 JAMES 950 11400
  15. 7902 FORD 3000 36000
  16. 7934 MILLER 1300 15600
  17. 14 rows selected.
  1. ## b、算术运算符的优先级
  2. - 我们了解到,算术运算符有加减乘除,乘除具有相同的优先级、加减具有相同的优先级,相同的优先级的运算符从左向右执行,乘除的优先级高于加减,而括号中的运算先执行。
  3. - 优先级举例:应用scott.emp表查看雇员编号、雇员名,年收入(年薪加上半月工资),即:SELECT empno,sal * 12 + sal/2 year_sal from emp;
  1. sql> SELECT empno,sal * 12 + sal/2 year_sal from emp;
  2. EMPNO ENAME YEAR_SAL
  3. 7369 SMITH 10000
  4. 7499 ALLEN 20000
  5. 7521 WARD 15625
  6. 7566 JONES 37187.5
  7. 7654 MARTIN 15625
  8. 7698 BLAKE 35625
  9. 7782 CLARK 30625
  10. 7788 SCOTT 37500
  11. 7839 KING 62500
  12. 7844 TURNER 18750
  13. 7876 ADAMS 13750
  14. EMPNO ENAME YEAR_SAL
  15. 7900 JAMES 11875
  16. 7902 FORD 37500
  17. 7934 MILLER 16250
  18. 14 rows selected.
  19. ```
  20. ## c、在算术运算中的空值NULL
  • NULL表示未知值,它既不是空格也不是0。当算术表达式包含NULL时,其显示结果也为空值(NULL)。
  • 例如:应用scott.emp表查询雇员号、雇员名、工资、补助、实发工资的信息。即: SELECT empno,comm,sal+ comm FROM emp;
  1. sql> SELECT empno,sal+ comm FROM emp;
  2. EMPNO ENAME SAL COMM SAL+COMM
  3. 7369 SMITH 800
  4. 7499 ALLEN 1600 300 1900
  5. 7521 WARD 1250 500 1750
  6. 7566 JONES 2975
  7. 7654 MARTIN 1250 1400 2650
  8. 7698 BLAKE 2850
  9. 7782 CLARK 2450
  10. 7788 SCOTT 3000
  11. 7839 KING 5000
  12. 7844 TURNER 1500 0 1500
  13. 7876 ADAMS 1100
  14. 7900 JAMES 950
  15. 7902 FORD 3000
  16. 7934 MILLER 1300
  17. 14 rows selected.
  18. ```
  19.  
  20. -----
  21.  
  22. **- 附件说明:空值和默认值**
  23. - 空值:当插入数据时,如果没有为特定列提供数据,并且该列没有默认值,那么其结果为NULL。
  24. - 默认值:在创建表时可以使用default关键字为列设置默认值,在向表中插入数据时,如果没有为该列提供数据,那么该列将使用默认值。
  25. - 默认值的示例:

sql> create table student(sid number(8,0) primary key,name varchar2(10),sex char(2) default '男',age number(2,0) default 20,address varchar2(50)); Table created. sql> Insert into student(sid,name) values(20012001,'张三'); 1 row created. sql> Insert into student values(20011002,'王五',default,'广东广州'); 1 row created.

  1. # 3、查询语句中的别名,连接符、字符串
  2. ## a、列的别名
  3. - 用于改变列的显示标题,列的别名可以跟在列名的后面,也可以在二者之间加AS关键字。如果别名中包含空格或者特殊的字符或者需要区分大小写,那么需要给别名加上双引号。
  4. - 列的别名举例:
  5. - 不使用列的名称别名:SELECT empno,sal * 12 from emp;
  1. sql> conn scott/02000059
  2. 已连接。
  3. sql> select empno,sal * 12 FROM emp;
  4.  
  5. EMPNO ENAME SAL*12
  6. 7369 SMITH 9600
  7. 7499 ALLEN 19200
  8. 7521 WARD 15000
  9. 7566 JONES 35700
  10. 7654 MARTIN 15000
  11. 7698 BLAKE 34200
  12. 7782 CLARK 29400
  13. 7788 SCOTT 36000
  14. 7839 KING 60000
  15. 7844 TURNER 18000
  16. 7876 ADAMS 13200
  17.  
  18. EMPNO ENAME SAL*12
  19. 7900 JAMES 11400
  20. 7902 FORD 36000
  21. 7934 MILLER 15600
  22.  
  23. 已选择14行。
  1. - 使用列的别名:SELECT empno "雇员编号",ename "雇员名",sal * 12 "全年工资" FROM emp;、SELECT empno "雇员编号",sal * 12 AS "全年工资" FROM emp;、SELECT empno 雇员编号,ename 雇员名,sal * 12 全年工资 FROM emp;。
  1. sql> SELECT empno "雇员编号",sal * 12 "全年工资" FROM emp;
  2.  
  3. 雇员编号 雇员名 全年工资
  4. 7369 SMITH 9600
  5. 7499 ALLEN 19200
  6. 7521 WARD 15000
  7. 7566 JONES 35700
  8. 7654 MARTIN 15000
  9. 7698 BLAKE 34200
  10. 7782 CLARK 29400
  11. 7788 SCOTT 36000
  12. 7839 KING 60000
  13. 7844 TURNER 18000
  14. 7876 ADAMS 13200
  15.  
  16. 雇员编号 雇员名 全年工资
  17. 7900 JAMES 11400
  18. 7902 FORD 36000
  19. 7934 MILLER 15600
  20.  
  21. 已选择14行。
  1.  
  1. sql> SELECT empno "雇员编号",sal * 12 AS "全年工资" FROM emp;
  2.  
  3. 雇员编号 雇员名 全年工资
  4. 7369 SMITH 9600
  5. 7499 ALLEN 19200
  6. 7521 WARD 15000
  7. 7566 JONES 35700
  8. 7654 MARTIN 15000
  9. 7698 BLAKE 34200
  10. 7782 CLARK 29400
  11. 7788 SCOTT 36000
  12. 7839 KING 60000
  13. 7844 TURNER 18000
  14. 7876 ADAMS 13200
  15.  
  16. 雇员编号 雇员名 全年工资
  17. 7900 JAMES 11400
  18. 7902 FORD 36000
  19. 7934 MILLER 15600
  20.  
  21. 已选择14行。
  1.  
  1. sql> SELECT empno 雇员编号,sal * 12 全年工资 FROM emp;
  2.  
  3. 雇员编号 雇员名 全年工资
  4. 7369 SMITH 9600
  5. 7499 ALLEN 19200
  6. 7521 WARD 15000
  7. 7566 JONES 35700
  8. 7654 MARTIN 15000
  9. 7698 BLAKE 34200
  10. 7782 CLARK 29400
  11. 7788 SCOTT 36000
  12. 7839 KING 60000
  13. 7844 TURNER 18000
  14. 7876 ADAMS 13200
  15.  
  16. 雇员编号 雇员名 全年工资
  17. 7900 JAMES 11400
  18. 7902 FORD 36000
  19. 7934 MILLER 15600
  20.  
  21. 已选择14行。
  1. ## b、连接符 ||
  2. - 当执行查询操作时,为了显示更有意义的结果值,有时候需要将多个字符串连接起来,连接字符串可以使用 “||”操作符或者concat函数。(可以用来“合并”列)
  3. - 举例:select ename || '的岗位是:' || job as 员工的职位信息描述 from emp;
  1. sql> select ename || '的岗位是:' || job as 员工的职位信息描述 from emp;
  2.  
  3. 员工的职位信息描述
  4. SMITH的岗位是:CLERK
  5. ALLEN的岗位是:SALESMAN
  6. WARD的岗位是:SALESMAN
  7. JONES的岗位是:MANAGER
  8. MARTIN的岗位是:SALESMAN
  9. BLAKE的岗位是:MANAGER
  10. CLARK的岗位是:MANAGER
  11. SCOTT的岗位是:ANALYST
  12. KING的岗位是:PRESIDENT
  13. TURNER的岗位是:SALESMAN
  14. ADAMS的岗位是:CLERK
  15.  
  16. 员工的职位信息描述
  17. JAMES的岗位是:CLERK
  18. FORD的岗位是:ANALYST
  19. MILLER的岗位是:CLERK
  20. 已选择14行。
  1. ## c、字符串
  2. - 字符串可以是SELECT列表中的字符,数字,日期。日期和字符只能在单引号中出现。每当返回一行时,字符串被输出一次。
  3. - 示例:SELECT ename || '的月工资是: ' || SAL from emp;
  1. sql> SELECT ename || '的月工资是: ' || SAL from emp;
  2. ENAME||'的月工资是:'||SAL-
  3. SMITH的月工资是: 800
  4. ALLEN的月工资是: 1600
  5. WARD的月工资是: 1250
  6. JONES的月工资是: 2975
  7. MARTIN的月工资是: 1250
  8. BLAKE的月工资是: 2850
  9. CLARK的月工资是: 2450
  10. SCOTT的月工资是: 3000
  11. KING的月工资是: 5000
  12. TURNER的月工资是: 1500
  13. ADAMS的月工资是: 1100
  14. ENAME||'的月工资是:'||SAL
  15. JAMES的月工资是: 950
  16. FORD的月工资是: 3000
  17. MILLER的月工资是: 1300
  18. 已选择14行。
  19. ```

4、Oracle过滤数据(比较运算)

a、过滤数据

  • 使用WHERE子句,将不满足条件的行过滤掉。语法格式为:SELECT * | {[DISTINCT] column | expression [alias],...} FROM table [WHERE condition(s)];

b、where 子句中使用数字值

  • 当在where 子句中使用数字值时,即可用直接引用数字值,也可以单引号引住数字值。例:SELECT * from emp where deptno = 20;
  1. sql> SELECT * from emp where deptno = 20;
  2. EMPNO ENAME JOB MGR HIREDATE SAL COMM
  3. DEPTNO
  4. 7369 SMITH CLERK 7902 17-12月-80 800
  5. 20
  6. 7566 JONES MANAGER 7839 02-4 -81 2975
  7. 20
  8. 7788 SCOTT ANALYST 7566 19-4 -87 3000
  9. 20
  10. 7876 ADAMS CLERK 7788 23-5 -87 1100
  11. 20
  12. 7902 FORD ANALYST 7566 03-12月-81 3000
  13. 20

c、Where子句中使用字符值

  • 当where子句中使用字符值,必须给字符值加上单引号。字符值时区分大小写的。
  • 举例:SELECT * FROM emp WHERE job = 'MANAGER';
  1. sql> SELECT * FROM emp WHERE job = 'MANAGER';
  2. EMPNO ENAME JOB MGR HIREDATE SAL COMM
  3. DEPTNO
  4. 7566 JONES MANAGER 7839 02-4 -81 2975
  5. 20
  6. 7698 BLAKE MANAGER 7839 01-5 -81 2850
  7. 30
  8. 7782 CLARK MANAGER 7839 09-6 -81 2450

d、Where子句中使用日期值

  • 当where子句中使用日期值时,必须给日期值加上单引号。另外,日期值必须符合日期语言和显示格式。
  • 举例:select * from emp where hiredate = '02-4月-81';
  1. sql> select * from emp where hiredate = '02-4月-81';
  2. EMPNO ENAME JOB MGR HIREDATE SAL COMM
  3. DEPTNO
  4. 7566 JONES MANAGER 7839 02-4 -81 2975
  5. 20

e、比较运算符

运算符 说明
= 等于(不是==)
> 大于
>= 大于等于
< 小于
<= 小于等于
<> 不等于!=

- 示例:SELECT * FROM emp WHERE sal <> 3000;

  1. sql&gt; SELECT * FROM emp WHERE sal &lt;&gt; 3000;
  2. EMPNO ENAME JOB MGR HIREDATE SAL COMM
  3. DEPTNO
  4. 7369 SMITH CLERK 7902 17-12月-80 800
  5. 20
  6. 7499 ALLEN SALESMAN 7698 20-2 -81 1600 300
  7. 30
  8. 7521 WARD SALESMAN 7698 22-2 -81 1250 500
  9. 30
  10. EMPNO ENAME JOB MGR HIREDATE SAL COMM
  11. DEPTNO
  12. 7566 JONES MANAGER 7839 02-4 -81 2975
  13. 20
  14. 7654 MARTIN SALESMAN 7698 28-9 -81 1250 1400
  15. 30
  16. 7698 BLAKE MANAGER 7839 01-5 -81 2850
  17. 30
  18. EMPNO ENAME JOB MGR HIREDATE SAL COMM
  19. DEPTNO
  20. 7782 CLARK MANAGER 7839 09-6 -81 2450
  21. 10
  22. 7839 KING PRESIDENT 17-11月-81 5000
  23. 10
  24. 7844 TURNER SALESMAN 7698 08-9 -81 1500 0
  25. 30
  26. EMPNO ENAME JOB MGR HIREDATE SAL COMM
  27. DEPTNO
  28. 7876 ADAMS CLERK 7788 23-5 -87 1100
  29. 20
  30. 7900 JAMES CLERK 7698 03-12月-81 950
  31. 30
  32. 7934 MILLER CLERK 7782 23-1 -82 1300
  33. 10
  34. 已选择12行。
  35. ```
  36. # 5、Oracle过滤数据(范围模糊查询
  37. ## a、范围查询 BEWEEN...AND
  38. - BETWEEN ...AND 用于指定特定范围的条件。(两值之间包含边界,BETWEEN 较小值 AND 较大值)
  39. - 示例:SELECT empno,sal from emp where sal between 1500 and 3000; 等价于 select empno,sal from emp where sal &gt;= 1500 and sal &lt;= 3000;

sql> SELECT empno,sal from emp where sal between 1500 and 3000; EMPNO ENAME SAL 7499 ALLEN 1600 7566 JONES 2975 7698 BLAKE 2850 7782 CLARK 2450 7788 SCOTT 3000 7844 TURNER 1500 7902 FORD 3000 已选择7行。

  1. ## b、范围查询 IN
  2. - IN 执行列表匹配的操作。列或者表达式匹配列表中的任意一个值。(IN (值1,[值2,...值n])
  3. - 举例:select empno,job from emp where job in ('SALESMAN','MANAGER','CLERK');等价于select empno,job from emp where job = 'SALESMAN' or job='MANAGER' or job = 'CLERK';

sql> select empno,'CLERK'); EMPNO ENAME JOB 7369 SMITH CLERK 7499 ALLEN SALESMAN 7521 WARD SALESMAN 7566 JONES MANAGER 7654 MARTIN SALESMAN 7698 BLAKE MANAGER 7782 CLARK MANAGER 7844 TURNER SALESMAN 7876 ADAMS CLERK 7900 JAMES CLERK 7934 MILLER CLERK 已选择11行。

  1. ## c、模糊查询LIKE
  2. - LIKE执行模糊查询。当执行模糊查询时,需要使用通配符%和_
  3. - 通配符%:用于表示0个或者多个字符。通配_:用于表示单个字符。
  4. - 示例:select * from emp where ename like 'J%';,select * from emp where ename like '_AR%';。

sql> select * from emp where ename like 'J%'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7566 JONES MANAGER 7839 02-4月 -81 2975 20 7900 JAMES CLERK 7698 03-12月-81 950 30

  1.  

QL> select * from emp where ename like '_AR%'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30

  1. ## d、模糊查询中特殊符号的处理
  2. - 刚才我们用了通配符%和_执行模糊查询,如果字符值本身就包含_和%字符,并且开发人员希望使用这两个字符执行模糊查询,那么必须使用escape选项和转义符实现。
  3. - 回避特殊符号的方法:使用转义符。例如:将[%]转为[\%]、[_]转为[\_],然后再加上[ESCAPE'\']即可。
  4. - 示例:select * from emp where ename like 'G\_%' escape '\';

sql> select * from emp where ename like 'G_%' escape ''; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 G_EASON CLERK 7902 17-12月-80 800 20

  1. ## e、判断空值IS NULL
  2. - IS NULL操作符用于检测列或者表达式的结果是否为NULL,如果为NULL,则返回true,否则返回false
  3. - 判断列或者表达式的结果是否为空,可以使用is null 或者 is not null,但是不能用 = NULL 或者 &lt;&gt; NULL来判断。
  4. - 示例:select empno,comm from emp where comm is null;,select empno,comm from emp where comm is not null;。

sql> select empno,comm from emp where comm is null; EMPNO ENAME SAL COMM 7369 G_EASON 800 7566 JONES 2975 7698 BLAKE 2850 7782 CLARK 2450 7788 SCOTT 3000 7839 KING 5000 7876 ADAMS 1100 7900 JAMES 950 7902 FORD 3000 7934 MILLER 1300 已选择10行。

  1.  

sql> select empno,comm from emp where comm is not null; EMPNO ENAME SAL COMM 7499 ALLEN 1600 300 7521 WARD 1250 500 7654 MARTIN 1250 1400 7844 TURNER 1500 0

  1. # 7、Oracle的基本查询(逻辑运算)
  2. - 逻辑预算操作符:AND(逻辑与)、OR(逻辑或)以及NOT(逻辑否)。
  3. ## a、逻辑操作符AND
  4. - 当执行sql操作时,如果sql语句结果必须同时满足多个条件,那么需要使用逻辑操作符AND
  5. - 示例:SELECT empno,job,deptno,from emp where job='MANAGER' and deptno = 10;

sql> SELECT empno,deptno from emp where job='MANAGER' and deptno = 10; EMPNO ENAME JOB DEPTNO 7782 CLARK MANAGER 10

  1. ## b、逻辑操作符OR
  2. - 当执行sql操作时,如果sql语句结果只需要满足多个条件中的任意一个,那么需要使用逻辑操作符OR
  3. - 示例:select empno,sal from emp where job='MANAGER' or sal &gt; 2000;

sql> select empno,sal from emp where job='MANAGER' or sal > 2000; EMPNO ENAME JOB SAL 7566 JONES MANAGER 2975 7698 BLAKE MANAGER 2850 7782 CLARK MANAGER 2450 7788 SCOTT ANALYST 3000 7839 KING PRESIDENT 5000 7902 FORD ANALYST 3000 已选择6行。

  1. ## c、逻辑操作符NOT
  2. - 当执行sql操作时,如果sql语句需要返回不满足特定条件的结果,那么需要使用逻辑操作符NOT
  3. - 示例:select empno,job from emp where job not in('CLERK','SALESMAN','MANAGER');

sql> select empno,'MANAGER'); EMPNO ENAME JOB 7788 SCOTT ANALYST 7839 KING PRESIDENT 7902 FORD ANALYST

  1. ## d、在where子句中混合使用逻辑操作符
  2. - 在这三个逻辑操作符中,NOT优先级最高,AND其次,OR优先级最低。如果需要改变优先级需要使用括号。
  3. - 例如:SELECT empno,sal from emp where (sal &gt; 2000 or deptno = 30) and job not in ('PRESIDENT','MANAGER');
  1. sql&gt; SELECT empno,'MANAGER');
  2. EMPNO ENAME JOB SAL
  3. 7499 ALLEN SALESMAN 1600
  4. 7521 WARD SALESMAN 1250
  5. 7654 MARTIN SALESMAN 1250
  6. 7788 SCOTT ANALYST 3000
  7. 7844 TURNER SALESMAN 1500
  8. 7900 JAMES CLERK 950
  9. 7902 FORD ANALYST 3000
  10. 已选择7行。
  1. # 8、Oracle基本查询(排序数据)
  2. ## a、排序数据ORDER BY子句
  3. - 语法格式:SELECT * | column [,column...] FROM table [WHERE condition] [ORDER BY column [ASC | DESC]];(ASC升序,DESC降序)
  4. - 注意:当select语句包含多个子句(where,group by,having,order by)时,order by必须是最后一条语句。
  5. ## b、单列升序或者降序排序
  6. - 升序:
  7. - 说明:如果排序列存在NULL行,那么NULL行会显示在最后面。
  8. - SELECT ename,sal FROM emp ORDER BY sal ASC;
  9. - SELECT ename,sal FROM emp ORDER BY sal;(默认升序)
  1. sql&gt; SELECT ename,sal FROM emp ORDER BY sal ASC;
  2. ENAME SAL
  3. G_EASON 800
  4. JAMES 950
  5. ADAMS 1100
  6. WARD 1250
  7. MARTIN 1250
  8. MILLER 1300
  9. TURNER 1500
  10. ALLEN 1600
  11. CLARK 2450
  12. BLAKE 2850
  13. JONES 2975
  14. ENAME SAL
  15. SCOTT 3000
  16. FORD 3000
  17. KING 5000
  18.  
  19. 已选择14行。
  1. - 降序:
  2. - 说明;如果排序存在NULL行,那么NULL行会显示在最前面。
  3. - SELECT ename,sal FROM emp ORDER BY sal DESC;
  1. sql&gt; SELECT ename,sal FROM emp ORDER BY sal DESC;
  2. ENAME SAL
  3. KING 5000
  4. FORD 3000
  5. SCOTT 3000
  6. JONES 2975
  7. BLAKE 2850
  8. CLARK 2450
  9. ALLEN 1600
  10. TURNER 1500
  11. MILLER 1300
  12. WARD 1250
  13. MARTIN 1250
  14. ENAME SAL
  15. ADAMS 1100
  16. JAMES 950
  17. G_EASON 800
  18. 已选择14行。
  1. ## c、使用列别名排序
  2. - select empno,sal * 12 年收入 from emp order by 年收入 ASC;

sql> select empno,sal * 12 年收入 from emp order by 年收入 ASC;

  1. EMPNO ENAME 年收入
  2. 7369 G_EASON 9600
  3. 7900 JAMES 11400
  4. 7876 ADAMS 13200
  5. 7521 WARD 15000
  6. 7654 MARTIN 15000
  7. 7934 MILLER 15600
  8. 7844 TURNER 18000
  9. 7499 ALLEN 19200
  10. 7782 CLARK 29400
  11. 7698 BLAKE 34200
  12. 7566 JONES 35700
  13. 7788 SCOTT 36000
  14. 7902 FORD 36000
  15. 7839 KING 60000

已选择14行。

  1. ## d、多列排序
  2. - 当执行排序操作时,不仅可以基于单列进行排序,也可以基于多列进行排序,当以多列进行排序时,首先按照第一列进行排序,当第一列存在相同的数据时,以第二列进行排序,以此类推。
  3. - 示例:SELECT empno,sal from emp order by deptno asc,sal desc;
  1. sql&gt; SELECT empno,sal desc;
  2. EMPNO ENAME DEPTNO SAL
  3. 7839 KING 10 5000
  4. 7782 CLARK 10 2450
  5. 7934 MILLER 10 1300
  6. 7788 SCOTT 20 3000
  7. 7902 FORD 20 3000
  8. 7566 JONES 20 2975
  9. 7876 ADAMS 20 1100
  10. 7369 G_EASON 20 800
  11. 7698 BLAKE 30 2850
  12. 7499 ALLEN 30 1600
  13. 7844 TURNER 30 1500
  14. 7654 MARTIN 30 1250
  15. 7521 WARD 30 1250
  16. 7900 JAMES 30 950
  17. 已选择14行。
  18. ```
  19. ## 9、理解sql语句与sqlPLUS命令的区别
  20. - sql:一种语言。是关系数据库的基本操作语言,它是应用程序和数据库进行交互操作的接口,从而使得应用开发人员、数据库管理员、最终用户都可以通过sql语言对数据库进行操作。(sql语句不区分大小写,关键字不能够缩写,例如:SELECT。sql语句需要以“;”号结束)
  21. - sqlPLUS:一种环境:是Oracle公司所提供的工具程序,是与Oracle数据库进行交互的客户端工具,借助于sql*plus工具可以查看、修改数据库记录。在sql*plus中,可以运行sql*plus命令与sql语句。(sqlPLUS命令也不区分大小写,关键字可以缩写,例如:connect -&gt; conn。sql命令可以不用加“;”)
  22. - sqlPlus命令:
  23. - PASSWORD:命令用于修改用户的口令。PASSW[ORD] [username],username命令用于指定用户名,注意,任何用户都可以使用该命令修改其自身口令,但是如果要修改其他用户口令,则必须要以DBA的身份登录(sys和system)。

猜你在找的Oracle相关文章