使用scott用户下的表
1.--查询表的所有内容
SELECT * FROM emp;
2.--查询员工编号,姓名,基本工资
SELECT e.empno,e.ename,e.sal FROM emp e;
3.--查询职位并去掉重复
SELECT DISTINCT e.job FROM emp e;
4.--查询员工编号,姓名,基本工资,月薪,年薪
SELECT e.empno 编号,e.ename 姓名,e.sal 月薪,e.sal*12 || '元' 年薪,ROUND(e.sal/30,2) 日薪, '$' 货币 FROM emp e;
5.--查询表中有多少条记录
SELECT COUNT(*) FROM emp;
6.--查询基本工资高于1500的全部员工信息
SELECT * FROM emp e WHERE e.sal>1500;
7.--查询基本工资小于等于2000的全部员工信息
SELECT * FROM emp e WHERE e.sal<=2000;
8.--查询姓名是smith的员工信息
SELECT * FROM emp e WHERE e.ename=UPPER('smith');
9.--查询职位是clerk的的员工信息
SELECT * FROM emp e WHERE e.job='CLERK';
10--查询职位不是clerk的的员工信息
SELECT * FROM emp e WHERE NOT e.job='CLERK'; SELECT * FROM emp e WHERE e.job<>'CLERK'; SELECT * FROM emp e WHERE e.job!='CLERK';
11.--查询工资在1500~3000包含1500和3000的员工的信息
SELECT * FROM emp e WHERE e.sal BETWEEN 1500 AND 3000;
12.--查询职位是销售人员salesman并且工资高于1200的员工信息
SELECT * FROM emp e WHERE e.job='SALESMAN' AND e.sal>1200;
13.--要求查询中10部门中的经理或者20部门中的业务员
SELECT * FROM emp e WHERE (e.deptno=10 AND e.job='MANAGER') OR (e.deptno=20 AND e.job='CLERK')
14.--查询不是业务员且工资大于2000的员工
SELECT * FROM emp e WHERE e.job<>'CLERK' AND e.sal>2000;
15.--查询出在1981年入职的员工
SELECT * FROM emp e WHERE to_char(e.hiredate,'YYYY')='1981';
--判断内容是否为空is null ,is not null
16.--查询所有领取资金的员工的信息
SELECT * FROM emp e WHERE e.comm IS NOT NULL;
17.--查询所有不领取资金的员工的信息
SELECT * FROM emp e WHERE e.comm IS NULL;
18.--查询所有不领取资金同时工资大于2000的员工的信息
SELECT * FROM emp e WHERE e.comm IS NULL AND e.sal>2000;
19.--查询不收取佣金,或者收取佣金小于100元的员工
SELECT * FROM emp e WHERE e.comm IS NULL OR e.comm<100;
20.--查找收取佣金的员工的不同职位的工作
--先查找收取佣金的员工职位JOB
SELECT e.job FROM emp e WHERE e.comm IS NOT NULL;
--发现职位重复使用distinct
SELECT DISTINCT e.job FROM emp e WHERE e.comm IS NOT NULL;
--列的范围查找in ,not in,有固定的多个条件才使用
-21.-查询出员工编号是7369,7788,7566的员工信息
--可以用OR来写
SELECT * FROM emp e WHERE e.empno=7369 OR e.empno=7788 OR e.empno=7566
--用in来写可以省去很多代码
SELECT * FROM emp e WHERE e.empno IN (7369,7788,7566);
22.--查询出员工编号不是7369,7788,7566的员工信息
SELECT * FROM emp e WHERE e.empno NOT IN (7369,7788,7566);
--模糊查询 like not like
--%匹配0个,1个或者多个字符
--_下划线只能匹配一个字符
23.--查询出员工姓名是S开头的员工信息
SELECT * FROM emp e WHERE e.ename LIKE 'S%';
24.--查询姓名第2个字母是M的员工信息
SELECT * FROM emp e WHERE e.ename LIKE '_M%';
25.--查询姓名中包含F的员工信息
--先分析F可以出现在姓名中的任意位置用%来匹配
SELECT * FROM emp e WHERE e.ename LIKE '%F%'
26.--查询姓名长度为6或者长度超过6的员工信息
SELECT * FROM emp e WHERE LENGTH(e.ename)>=6;
--也可以用下划线来匹配6个下划线
SELECT * FROM emp e WHERE e.ename LIKE '______%';
27.--查询基本工资中包含1或者在81年入职的员工
SELECT * FROM emp e WHERE e.sal LIKE '%1%' OR to_char(e.hiredate,'YYYY')='1981';
--换成AND
SELECT * FROM emp e WHERE e.sal LIKE '%1%' AND to_char(e.hiredate,'YYYY')='1981';
28.--查询10部门中的所有经理,20部门中所有业务员,
--既不不是经理又不是业务员但工资大于2000元的所有员工
--同时员工姓名中包含S或者K
SELECT * FROM emp e WHERE ((e.deptno=10 AND e.job='MANAGER') OR (e.deptno=20 AND e.job='CLERK') OR(e.job NOT IN('MANAGER','CLERK') AND e.sal>2000)) AND (e.ename LIKE '%S%'OR e.ename LIKE '%K%');
--order by 排序 ASC ASC可以省略,升序 DESC 降序
29.--查询所有员工,并按工资由高到低排序
SELECT * FROM emp e ORDER BY e.sal DESC;
30.--查询所有员工,并按工资由低到高排序
SELECT * FROM emp e ORDER BY e.sal ASC;
--ASC可以不写
SELECT * FROM emp e ORDER BY e.sal;
31.--查询所有业务员的详细信息,并且按照,基本工资由低到高排序
SELECT * FROM emp e WHERE e.job='CLERK' ORDER BY e.sal ASC;
32.--查询所有员工信息,要求按基本工资由高到低排序,如果工资相同按入职早,晚时间排序
SELECT * FROM emp e ORDER BY e.sal DESC ,e.hiredate ASC;