1.求1982年入职的员工
select *from emp where to_char(hiredate,'yyyy')='1982';
解题思路:通过字符串抓换函数to_char(hiredate,'yyyy'),获取年份即可
2.求1981年下半年入职的员工
(1)select * from emp where hiredate between to_date('1981-7-1','yyyy-MM-dd') and to_date('1981-12-31','yyyy-MM-dd')
(2)select * from emp where hiredate between'01-7月- 81'and'31-12月- 81'
解题思路:限制条件1981年下半年,表示日期在1981-7-1至1981-12-31的区间内
3.显示所有员工姓名的前三个字符
select substr(ename,1,3) from emp
解题思路:substr(ename,1,3)返回ename中从第一位开始,长度为3 的字串.
4.如下代码,对代码描述正确是的(B)
select e.deptno,avg(sal),dname from emp e, dept d where e.depno=d.deptno and e.deptno <>20 group by e.deptno,dname
A.e.deptno=d.deptno条件可以胜略
B.deptno<>20这个条件可以写在having中
C.group by 子句后的deptno,dname只写一个也可以执行
D.以上代码错误,但可以执行
5.什么是笛卡尔积现象(A)
A.第一张表中的所有行和另一个表中的所有行都发生连接的现象
B.第一张表中的数据无论按照连接条件都能匹配上都能显示上的现象
C.第二张表中数据五乱按照连接条件能否匹配上都能显示的现象
D.两张表中的数据自动匹配的现象
6.查询每个员工的姓名,工资,工资等级,所在工作城市
select e.ename, e.sal,s.salgrade,d.loc from emp e,dapt d, salgrade s where e.deptno=d.deptno and e.sal between s.lsal and s.hsal;
7.列出所有员工的姓名和直接上级的姓名
select e.ename,l.ename from emp e,emp i where e.mgr=i.empno