Oracle 经典语法(二)

作者:%e6%9e%97+%e7%92%90 和oracle相关  

--提示:工资 = 薪金 + 佣金

1. 找出EMP表中的姓名(ENAME)第三个字母是A 的员工姓名。
SELECT ENAME FROM SCOTT.EMP WHERE ENAME LIKE '__A%';

2. 找出EMP表员工名字中含有A 和N的员工姓名。
SELECT ENAME FROM SCOTT.EMP WHERE ENAME LIKE '%A%' AND ENAME LIKE '%N%';
SELECT ENAME FROM SCOTT.EMP WHERE ENAME LIKE '%A%N%';

3. 找出所有有佣金的员工,列出姓名、工资、佣金,显示结果按工资从小到大,佣金从大到小。
SELECT ENAME,SAL + COMM AS WAGE,COMM  FROM SCOTT.EMP  ORDER BY WAGE,COMM DESC;

4. 列出部门编号为20的所有职位。
 SELECT DISTINCT JOB FROM EMP WHERE DEPTNO = 20;

5. 列出不属于SALES 的部门。
SELECT DISTINCT * FROM SCOTT.DEPT WHERE DNAME <> 'SALES';
SELECT DISTINCT * FROM SCOTT.DEPT WHERE DNAME not in ( 'SALES');

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

7. 显示职位为MANAGER 和SALESMAN,年薪在15000 和20000 之间的员工的信息:名字、职位、年薪。
SELECT ENAME 姓名,JOB 职位,(SAL + COMM) * 12 AS 年薪  FROM SCOTT.EMP  WHERE (SAL + COMM) * 12 BETWEEN 15000 AND 20000  AND JOB IN('MANAGER','SALESMAN');
 
8. 说明以下两条SQL语句的输出结果:
SELECT EMPNO,COMM FROM EMP WHERE COMM IS NULL;
SELECT EMPNO,COMM FROM EMP WHERE COMM = NULL;
--说明:IS NULL是判断某个字段是否为空,为空并不等价于为空字符串或为数字0;
--而 =NULL 是判断某个值是否等于 NULL,NULL = NULL和NULL <> NULL都为 FALSE。

 

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

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

10. 判断SELECT ENAME,SAL FROM EMP WHERE SAL > '1500'是否抱错,为什么?
SELECT ENAME,SAL FROM EMP WHERE SAL > '1500';
SELECT ENAME,SAL FROM EMP WHERE SAL > 1500;
--不会抱错,这儿存在隐式数据类型的。

相关资料:

Oracle 经典语法(二)来源网络,如有侵权请告知,即处理!

编程Tags: