1、数据库简单查询和复杂查询Department(dept_no, dept_name, location) Employee(emp_no, emp_fname,emp_lname,dept_no) Project(project_no, project_name, budget) Works_on(emp_no, project_no, job, enter_date) /*5.1 部门的编号、名称和位置 */ selectdept_no, dept_name, location from Department/*5.2 部门的编号、名称和位置 */ selectdept_no, dept_n
2、ame, locationfrom Department/*5.3 查询位于 Dallas 的部门编号和名称 */ selectdept_no, dept_name from Department where location=Dallas/*5.4 查询预算额的 0.51 倍大于 60000 的项目名称*/ selectproject_namefrom Projectwhere budget*0.516000025348 或职/*5.5 查询在部门编号为 d1 的部门工作且职员编号为 工名称为 Matthew的雇员信息 */selectemp_no, emp_fname,emp_lname,
3、dept_no from Employeewheredept_no=d1 and (emp_no=25348 or emp_fname=Matthew) /*例 5.6 查询不在部门编号为 d1 的部门工作的职员编号和姓名 */selectemp_no, emp_fname,emp_lnamefrom Employeewheredept_no!=d1/*例 5.7 获取编号既不是 10102 也不是 9031 的职员的所有列。 */select *from Employeewhereemp_no!=10102and emp_no!=9031/*例 5.8 获取预算在 $95 000 $120
4、000之间的所有项目的名称和 预算。*/selectproject_name, budgetfrom Projectwhere budget between 9031 and 95000/*例 5.9 获取预算小于 $95 000 和大于 $120 000之间的所有项目的名称*/selectproject_namefrom Projectwhere budget between 95000 and 120000/*5.10 获取为项目 2 工作的,具有未知工作的所有职员的职员编 号和相应的项目编号。*/ selectEmployee.emp_no,project_no fromEmployee
5、,Works_on whereEmployee.emp_no=Works_on.emp_no and project_no=2 and job=NULL/*例5.11找出所有姓是以字母J开头的职员的名字和编号。*/selectemp_fname,emp_nofrom Employee whereemp_lnamelikeJ%/* 例 5.12 找出所有名中第二个字母是 a 的职员的名字和编号。*/selectemp_fname,emp_nofrom Employeewhereemp_fnamelike_a%/*例 5.13 获取所在地名从 C 到 F 的字母打头的所有部门的详细 资料。*/se
6、lect *from Departmentwhere location like C%or location like D%or location like E%or location like F%/*例 5.14 获取姓的打头字母不是 J,K,L,M,N,O, 并且名的开头字 母是 E 或者 Z 的所有职员的编号和名字。*/selectemp_no,emp_fnamefrom Employeewhere (emp_lname not likeJ%andemp_lname not likeK%andemp_lname not likeL%andemp_lname not likeM%ande
7、mp_lname not likeN%)and emp_fnamelikeE%oremp_fnamelikeZ%/*例 5.15*/SELECT project_no,project_nameFROM projectWHERE project_NAME LIKE %_%/*例 5.16 获取在研究部门工作的所有职员的名和姓。*/ selectemp_fname,emp_lname from Employee wheredept_no in(select dept_no from Department wheredept_name =Reserch ) /*例 5.17 获取职员 moser 参
8、与的项目编号。*/ selectproject_no fromWorks_on whereemp_no in(select emp_no from Employee as E whereemp_fname=moser) /*例 5.18 获取部门位于 Dallas 的所有职员的详细信息。*/ select * from Employee wheredept_no in(select dept_no from Department where location=Dallas) /*例 5.19 获取为项目工作的所有职员的姓。*/ selectemp_lnamefrom Employee wher
9、eemp_no in(select emp_no fromWorks_on whereproject_no !=NULL )/*例 5.20 获取不是在项目上花费了最多时间的所有职员的编号、 项目编号和工作名称。*/ selectemp_no,project_no,job fromWorks_on whereenter_date all(select MIN(enter_date) fromWorks_on )/*例 5.21 获取为项目 p1 工作的所有职员的名和姓。*/ selectemp_fname,emp_lname from Employee whereemp_no in(selec
10、t emp_no fromWorks_on whereproject_no=p1)/*例 5.22 选择编号大于等于 10000 的所有职员的名字。selectemp_fname from Employee whereemp_no=10000/* 例 5.23 使用项目编号和工种对所有职员分组。*/selectproject_no, count(emp_no) fromWorks_on group by project_no ,job/*例 5.25 获取最小的职员编号*/select MIN(emp_no)from Employee/*例 5.26(0) 获取最小的职员编号和姓*/ sele
11、ctemp_no,emp_lname from Employee whereemp_no in(select MIN(emp_no) from Employee)/* 例 5.26(1) 获取表 WORKS_ON 中进入时间最晚的经理的职员 编号*/ selectemp_no fromWorks_on whereenter_date in(select max(enter_date) fromWorks_on )/*例 9.27 计算所有项目预算的总和 */select SUM(budget)from Project/*例 5.28 计算每个项目中不同工种的数目 */selectproject
12、_no ,COUNT (job) fromWorks_on group by project_no/*例 5.29 每个项目中有多少职员为其工作 */selectproject_no ,COUNT (emp_no) fromWorks_on group by project_no/*例 5.30 获取招募的总人数少于 4 个的项目selectproject_no fromWorks_on group by project_no having COUNT (emp_no)4/*例 5.31 获取职员的名字和职员编号,以职员编号升序排列 */ selectemp_fname,emp_nofrom
13、Employeeorder by emp_noasc/*5.32 获取编号小于 2000 的职员所在的部门和其编号,并以姓 和名升序排列*/ selectdept_name ,emp_no from Department as D ,Employee as E whereD.dept_no=E.dept_no and emp_no2000 order by emp_fnameasc/*5.33 对于每个项目编号,取得其所有的项目编号以及职员数 量,以职员数量降序排列。*/ selectproject_no ,COUNT (emp_no) as countOfEmp_no fromWorks_o
14、ngroup by project_noorder by countOfEmp_nodesc/*5.34 获取属于部门 D1 或者参加项目的时间早于 1998年 1 月 1 日的所有职员的编号,并以升序排列。*/selectE.emp_no fromWorks_on as W ,Employee as E whereW.emp_no=E.emp_no and (E.dept_no =d1or enter_date1998-01-01 00:00:00.000 )order by emp_noascDepartment(dept_no, dept_name,location) Employee(
15、emp_no,emp_fname,emp_lname,dept_no)Project(project_no, project_name, budget)Works_on(emp_no, project_no,job,enter_date)/*1. 获取每个职员的详细信息;也就是说除了职员的编号、名和 姓、相应的部门编号以外,还要获取所在部门的名字和坐落地点。 */select * from Employee asE, Department asD/*2. 获取为 Gemini 项目工作的所有职员的全部详细信息*/ select emp_no , emp_fname , emp_lname ,
16、dept_no , dept_nam e, locationfrom Employee asE, Department asDfrom Workswhere project_noin( select project_no from Project where project_name =Gemini )/*3 获取每个职员的详细信息; 也就是说除了职员的编号、 名和姓、 相应的部门编号以外,还要获取所在部门的名字和坐落地点。*/ selectfrom Employee asE, Department asD/*4 获取每个职员的详细信息; 也就是说除了职员的编号、 名和姓、 相应的部门编号以外
17、,还要获取所在部门的名字和坐落地点。*/ selectfrom Employee asE, Department asD/*5 获取年月日加入项目的所有职员的部门编号。*/select dept_nofrom Departmentwhere dept_no in( select dept_no from Employeewhere emp_no in( select emp_no from Works_onwhere enter_date =1998-10-15 )/*6 获取会计部门中的职员所工作的项目名称 (冗余重复元组删去) */selectdistinct project_namefr
18、om Projectwhere project_no in( select project_no from Works_onwhere emp_no in( select emp_no from Employeewhere dept_no in( select dept_no from Departmentwhere dept_name = 会计 )/*7 获取与至少一个其它的部门拥有相同所在地的所有部门的全部 详细信息。*/select from Department asD1where notexists( select *from Department asD2andnotexists(
19、 select * from Department asD3and D3. location =D2. location )select *from Department asD1asD2where location in( select location from Departmentwhere D2. dept_name != D1. dept_name )/*8 获取为项目P3工作的所有职员的姓。*/select emp_lnamefrom Employeewhere emp_no in( select emp_no from Works_onwhere project_no =P3 )
20、/*9 获取为项目P1工作的所有职员的姓。*/select emp_lnamefrom Employeewhere emp_no in( select emp_no from Works_on where project_no =P1 )/*10 获取工作部门不在 Seattle 的所有职员的姓*/select emp_lnamefrom Employeewhere dept_no in( select emp_no from Department where dept_name != Seattle )/*11. 求参加了全部工程的职员信息*/select *from Employee as
21、E andw. project_no =P. project_no )/*12. 求没有使用科研处职员的所有项目信息*/select *from Projectwhere project_no notin( select project_no from Works_on where emp_no in( select emp_no from Employeewhere dept_no in( select dept_no from Department where dept_name = 科研处 )/*13 获取参与项目的日期与表中最早的日期相等的所有职员的编 号和参与日期。*/select emp_no , enter_datefrom Works_onwhere enter_date =( select MIN( enter_date ) from Works_o n)/*14 获取在年月日加入项目的所有职员的编号,姓和工种。*/select Employee . emp_no , emp_lname , jobfrom Employee , Works_onwhere Employee . emp_no =Works_on . emp_noand enter_date =1998-10-15
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1