技术开发 频道

Oracle SQL:经典查询练手四篇

---6. 显示工资不在1000 到1500 之间的员工信息:名字、工资,按工资从大到小排序。---------
SQL> SELECT ENAME,SAL + COMM AS WAGE FROM SCOTT.EMP
2 WHERE SAL + COMM NOT BETWEEN 1000 AND 1500
3 ORDER BY WAGE DESC;

ENAME WAGE
---------- ----------
EricHu 5514
huyong
5514
WANGJING
5514
MARTIN
2650
ALLEN
1900
WARD
1750

6 rows selected
--或者
SQL> SELECT ENAME,SAL + COMM AS WAGE FROM SCOTT.EMP
2 WHERE SAL + COMM < 1000 OR SAL + COMM > 1500
3 ORDER BY WAGE DESC;

ENAME WAGE
---------- ----------
EricHu 5514
huyong
5514
WANGJING
5514
MARTIN
2650
ALLEN
1900
WARD
1750

6 rows selected

/*----- 7. 显示职位为MANAGER 和SALESMAN,年薪在15000 和20000 之间的员工的信息:名字、职位、年薪。----------*/
SQL
> SELECT ENAME 姓名,JOB 职位,(SAL + COMM) * 12 AS 年薪
2 FROM SCOTT.EMP
3 WHERE (SAL + COMM) * 12 BETWEEN 15000 AND 20000
4 AND JOB IN('MANAGER','SALESMAN');

姓名 职位 年薪
---------- --------- ----------
TURNER SALESMAN 18000

/*----- 8. 说明以下两条SQL语句的输出结果:
SELECT EMPNO,COMM FROM EMP WHERE COMM IS NULL;
SELECT EMPNO,COMM FROM EMP WHERE COMM = NULL;
----------
*/
SQL
> SELECT EMPNO,COMM FROM EMP WHERE COMM IS NULL;

EMPNO COMM
----- ---------
7369
7566
7698
7782
7788
7839
7876
7900
7902
7934

10 rows selected

---------------------------------------------------------------
SQL> SELECT EMPNO,COMM FROM EMP WHERE COMM = NULL;

EMPNO COMM
----- ---------

--说明:IS NULL是判断某个字段是否为空,为空并不等价于为空字符串或为数字0;
--
而 =NULL 是判断某个值是否等于 NULL,NULL = NULL和NULL <> NULL都为 FALSE。

/*-----9. 让SELECT 语句的输出结果为
SELECT * FROM SALGRADE;
SELECT * FROM BONUS;
SELECT * FROM EMP;
SELECT * FROM DEPT;
……
列出当前用户有多少张数据表,结果集中存在多少条记录。
----------
*/

SQL
> SELECT 'SELECT * FROM '||TABLE_NAME||';' FROM USER_TABLES;

'SELECT*FROM'||TABLE_NAME||';'
---------------------------------------------
SELECT * FROM BONUS;
SELECT * FROM EMP;
SELECT * FROM DEPT;
--......等等,在此不列出。
0
相关文章