提示:
1、distinct:消重复值
2、nvl(f,v):把null值设置为有效数字
f:字段名称
v:际值
3、||:拼接操作符
--查询所有员工的姓名
selectename from emp;
--消除重复的部门编号
selectdistinct(deptno) from emp;
--创建一个查询,以显示emp表中的职务
selectdistinct(job) from emp;
--创建一个查询,使其显示每位员工的姓名、职务、聘用日期和员工编号,并且首先显示员工编号。为hiredate列提供一个别名:startdate
selectempno,ename,job,hiredate as startdate from emp;
--计算员工的月收入(工资+佣金)
selectsal+nvl(comm,0) as 月薪 from emp;
--计算员工的年收入
selectsal*12 as 年薪 from emp;
--显示与职务连接的姓名,它们之间由逗号和空格分隔,这列数据命名为job and ename
selectjob || ',' || ename as "job and ename" from emp;
--创建一个查询,使其显示emp表的所有数据,用逗号分隔各列,命名列为THE_OUTPUT
select empno|| ',' || ename || ',' || job || ',' || mgr || ',' || hiredate|| ',' || sal || ',' || comm|| ',' || deptno as "THE_OUTPUT
" from emp;
--****************条件查询(where)****************
--查询部门编号为30的职务种类(不重复)
selectdistinct(job) from emp where deptno = 30;
--创建一个查询,显示员工编号为7788的员工的姓名和部门编号
selectename,deptno from emp where empno = 7788;
--查询工资高于3000的员工的姓名和薪资
selectename,sal from emp where sal > 3000;
--查询工资低于3000的员工
select *from emp where sal < 3000;
--查询在1981年2月20日和1985年5月1日之间入职的员工的姓名、职务和日期
select ename,job,hiredate from emp where hiredate between date'1981-2-20'and date'1985-5-1';
--显示在1981年聘用的每位员工的姓名和聘用日期
select ename,hiredate from emp where hiredate between date'1981-1-1' anddate'1981-12-31';
--*查询没有佣金的员工
select *from emp where comm is null or comm = 0;
--查询姓以B开头的员工
select *from emp where ename like 'B%';
--查询部门号为10或者20或者30的员工
select *from emp where deptno in(10,20,30);
--查询没有经理的所有员工的姓名和职称
selectename,job from emp where mgr is null;
--显示员工名字中的第三个字母为“A”的所有员工的姓名
selectename from emp where ename like '__A%';
--****************逻辑运算****************
--找出有佣金的员工的都做什么工作(无重复)
selectdistinct(job) from emp where comm > 0;
--找出不收取佣金或收取的佣金高于100的员工
select *from emp where comm is null or comm > 100;
--显示员工姓名中有“A”或员工姓名中有“E”的所有员工的姓名
select *from emp where ename like '%A%' or ename like '%E%';
--显示职务为推销员(SALESMAN)或办事员(CLERK)并且薪金不等于2500,3500,7000的所有员工的姓名、职务和薪金
select ename,job,sal from emp where (job = 'SALESMAN' and sal notin(2500,3500,7000)) or (job = 'CLERK' and sal not in(2500,3500,7000));
--显示薪金不在1200-5000这个范围之间的所有员工的姓名和薪金
selectename,sal from emp where sal not between 1200 and 5000;
****************排序****************
--查询员工资料,按薪资升序排列
select *from emp order by sal;
--查询员工资料,在部门号从大到小的情况下按按薪资升序排列
select *from emp order by deptno desc,sal ;
--按姓名的字母顺序显示部门20和部门50中的所有员工的姓名和部门编号
selectename,deptno from emp where deptno in(20,50) order by ename;
--显示可以赚取佣金的所有员工的姓名、薪金和佣金,按薪金和佣金的降序对数据进行排序
select ename,sal,comm from emp where comm is not null order by sal desc,comm desc;
判断为空 xxx is null
不为空 xxx is not null,不是 not is null!