oracle数据库简单的查询语句例子

提示:

1distinct:消重复值

2nvl(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!




猜你喜欢

转载自blog.csdn.net/binguola/article/details/80272926
今日推荐