?/p>
测试
人员而言必须掌握两种语言?/p>
第一种是
DML
?/p>
数据操纵语言
(Data Manipulation Language)
?/p>
SQL
语言中,
负责?/p>
数据?/p>
对象运行数据访问
工作
的指令集,以
INSERT
?/p>
UPDATE
?/p>
DELETE
三种指令
为核心,分别代表插入、更新与删除。第二种是:
DQL
,数据查询语言
(Data Query Language)
?/p>
SQL
语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本?/p>
SQL
语句。核心指?/p>
?/p>
SELECT
,以及一些辅助指令,?/p>
FROM
?/p>
WHERE
等,
FROM
?/p>
表示来源,可以搭?/p>
JOIN
做链接查
询;
WHERE
?/p>
过滤条件?/p>
GROUP
BY
?/p>
在使用聚合函数时用到?/p>
?/p>
SUM,COUNT,MAX,AVG
?/p>
HAVING
?/p>
对聚合结果进行筛选,这是?/p>
WHERE
的不同点?/p>
ORDER
BY
?/p>
排序?/p>
以下是必须掌握的
SQL
习题?/p>
1
、列出至少有一个员工的所有部?/p>
select
d.*,ed.cou
from
dept
d,(select
deptno,count(empno)
cou
from
emp
group
by
deptno
having
count(empno)>1)
ed
where
d.deptno=ed.deptno;
2
、列出薪金比
“SMITH?/p>
多的所有员工?/p>
·
求出
SMITH
的薪?/p>
select
sal
from
emp
where
ename='SMITH';
·
求所?/p>
select
*
from
emp
where
sal>(select
sal
from
emp
where
ename='SMITH');
3
、列出所有员工的姓名及其直接上级的姓?/p>
select
e.ename,m.ename
from
emp
e,emp
m
where
e.mgr=m.empno(+);
4
、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
select
e.empno,e.ename,d.dname
from
emp
e,emp
m,dept
d
where
e.mgr=m.empno
and
e.hiredate<m.hiredate
and
e.deptno=d.deptno;
5
、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门,
select
d.deptno,d.dname,e.empno,e.ename
from
dept
d,emp
e
where
d.deptno=e.deptno(+);
6
、列出所?/p>
“CLERK?/p>
人员的姓名及其部门名称,部门的人?/p>
select
e.ename,d.dname,ed.cou
from
emp
e,dept
d,(select
deptno,count(empno)
cou
from
emp
group
by
deptno)
ed
where
job='CLERK'and
e.deptno=d.deptno
and
ed.deptno=e.deptno;
7
、列出最低薪金大?/p>
1500
的各种工作及从事此工作的全部雇员人数
·
按工作分?/p>
,
分组条件是最低薪金大?/p>
1500
select
job,min(sal)
from
emp
group
by
job
having
min(sal)>1500;
·
求全部的雇员人数
select
count(e.empno),e.job