首页 > 代码库 > 简单查询和限定查询
简单查询和限定查询
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;
简单查询和限定查询