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;
--不会抱错,这儿存在隐式数据类型的。