亲宝软件园·资讯

展开

单表查询练习

人气:0
-- 1.选择部门30的所有员工 select * from emp where deptno=30; -- 2.列出所有办事员(CLERK)的姓名,员工编号和部门编号 select * from emp where job='CLERK'; -- 3.找出佣金高于薪金的员工 select * from emp where comm>sal; -- 4、找出佣金高于薪金60%的员工 select * from emp where (comm*10/6)>sal; -- 5.找出部门10中的所有经理(MANAGER)和部门20的所有办事员(CLERK)的详细资料 select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK'); -- 6.找出部门10的所有经理(MANAGER),部门20中所有办事员(CLERK),既不是办事员也不是经理但是薪金大于2000的所有员工的详细资料 select * from emp where ((deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK'))or(job<>'MANAGER' and job<>'CLERK' and sal>2000); -- 7、找出收取佣金的员工的员工的不同工作 select distinct job from emp where comm is not null and comm<>0; -- 8.找出不取佣金或者是收取佣金小于100的员工详细信息 select * from emp where comm is null or comm<100; -- 9.找出各月的倒数第三天受雇佣的员工 * -- 每个员工的雇佣时间是不一样的,所有需要找出每个员工雇佣的时间所在月份的最后一天,之后按照‘日期-数字’的方式求出前三天的日期,这个日期必须和雇佣日期相符才能满足条件 -- SELECT last_day( '1981-09-28' ); 获取月份最后一天 -- SELECT EXTRACT(DAY FROM Now());提取当前时间的日 select * from emp where extract(DAY FROM last_day(hiredate))-3<=extract(DAY FROM (hiredate)); -- 10.找出早于12年前受雇的员工 select * from emp where extract(year from now())-12 >extract(year from hiredate); -- 11.以首字母大写的方式显示员工姓名 -- concat(,) 拼接字符串 upper() 大写 lower()小写 left(,1) 左边截取一个 substr(,2)从左边第2个往后截取 select concat(upper(left(ename,1)),lower(substr(ename,2))) from emp; -- 12显示姓名正好为5个长度的所有员工 select * from emp where length(ename)=5; -- 13.显示带有'R'的员工的详细 select * from emp where ename like '%R%'; -- 14、显示员工姓名的前三个字符 select ename '全名', left(ename,3) '前三个字符' from emp; -- 15、显示所有员工的姓名,用‘a’替换所有的'A' select ename '全名', replace(ename,'A','a') as '大A替换为小a' from emp; -- 16.列出满10年雇佣期限的员工的详细信息 select * from emp where extract(year from now())-10>extract(year from hiredate); -- 17.显示员工的详细资料,并按姓名排序 select * from emp order by ename asc; -- 18、显示员工的姓名和受雇日期,并按照老的员工排在前面的方式显示出来 select ename , hiredate from emp order by hiredate asc; -- 19.显示所有员工的姓名、工作和薪金,按工作的降序排列,工作相同则按照薪金的升序排列 select ename ,job,sal from emp order by sal asc; -- 20、显示所有员工的姓名、加入公司的年份和月份、按接受所在雇佣月排序,若月的相同则按最早年份的员工排在最前面 -- 本程序需要求出所雇的日期的年份和月份,然后再来显示 select ename as '姓名',year(hiredate) as '年份',month(hiredate) as '月份' from emp order by month(hiredate) asc,year(hiredate) asc; -- 21.显示一个月为30天的情况下,所有员工的日薪,忽略余数 select ename '姓名',sal '月薪',truncate(sal/30,0) '日薪' from emp; -- 22.找出在(任何年份的)2月受雇的员工 select * from emp where month(hiredate)=2; -- 23.对于每个员工显示其来到公司的天数 select ename as '姓名', to_days(now())-to_days(hiredate) as '来公司的天数' from emp; -- 24、显示姓名字段的任何位置包含有’A‘的员工 select * from emp where ename like '%A%';

加载全部内容

相关教程
猜你喜欢
用户评论