--1. 找出EMP 表中的姓名( ENAME )第三个字母是A 的员工姓名。select ENAME from EMP where ename like'__A%';--2. 找出EMP 表员工名字中含有A 和N 的员工姓名。select ENAME from EMP where ename like'%A%'and ename like'%N%';SELECT ENAME,COMM FROM EMP;SELECT * FROM DEPT ;--3.找出所有有佣金的员工,列出姓名、工资、佣金,显示结果按工资从小到大,佣金从大到小。SELECT ENAME,SAL+COMM ACTSAL,COMM FROM EMP WHERE COMM!=0ORDERBY ACTSAL DESC;--SELECT ENAME,SAL,COMM FROM EMP WHERE COMM IS NOT NULL ORDER BY SAL DESC;--4. 列出部门编号为20 的所有职位。SELECTDISTINCT JOB FROM EMP WHERE DEPTNO=20;--5. 列出不属于SALES 的部门。selectdistinct dname,loc from dept where dname!='SALES';--6. 显示工资不在1000 到1500 之间的员工信息:名字、工资,按工资从大到小排序。SELECT * FROM (SELECT ENAME,SAL+NVL(COMM,0) ACSAL FROM EMP)
WHERE ACSAL NOT BETWEEN 1000AND1500ORDERBY ACSAL ;--7. 显示职位为MANAGER 和SALESMAN ,年薪在15000 和21000 (包括15000 和21000)之间的员工的信息:名字、职位、年薪。select *from (select ename,job,(sal+nvl(comm,0))*12 ansal from emp
where job ='MANAGER'or job ='SALESMAN')
--where ansal between 21000and15000;
where ansal between 15000 and 21000;
--8. 说明以下两条SQL 语句的输出结果:--空判断和 值为NULL判断SELECT EMPNO,COMM FROM EMP WHERE COMM = NULL ;SELECT EMPNO,COMM FROM EMP WHERE COMM ISNULL;--9. 让SELECT 语句的输出结果为
列出当前用户有多少张数据表,结果集中存在多少条记录。
--select * from user_tables;SELECT'SELECT * FROM '||TABLE_NAME||';'FROM USER_TABLES;--10. 判断SELECT ENAME,SAL FROM EMP WHERE SAL > '1500' 是否报错,为什么?
'1500'为字符,一开始以为会,就直接忽视它了2223
结果是:不会,oracle 会将字符型转换成数值型,但这样会降低查询的效率,因为oracle会花费时间去进行隐性的数据类型转换