哈工大数据库实验一sql查询

1.实验目的

掌握MySQL关系数据库管理系统的基本命令,并熟练使用SQL语言管理MySQL数据库。掌握SQL语言的使用方法,学会使用SQL语言进行关系数据库查询,特别是聚集查询、连接查询和嵌套查询。

2.实验环境

Windows XP或Windows 7操作系统、MySQL5.1.41或MySQL5.6版本,Code Blocks编程环境。

3.实验内容

3.1实验任务

创建关系数据库COMPANY,使用SQL语言完成如下查询:

1:参加了项目名为“SQLProject”的员工名字;

select ename

from EMPLOYEE , PROJECT,works_on

where employee.ESSN=works_on.ESSN and

works_on.pno=project.PNO and

PROJECT. PNAME ='SQL Project';

2:在“ResearchDepartment”工作且工资低于3000元的员工名字和地址;

select ename,ADDRESS

from EMPLOYEE ,DEPARTMENT

whereemployee.DNO=department.DNO and SALARY<3000 and department.DNAME='ResearchDepartment'

3:没有参加项目编号为P1的项目的员工姓名

SELECT eNAME

from employee

where ename not in (

select ename

from EMPLOYEE , works_on

where employee.ESSN=works_on.ESSN andworks_on.PNO='P1')

4:由张红领导的工作人员的姓名和所在部门的名字;

selectEMPLOYEE.ename ,department.DNAME

from EMPLOYEE ,department

whereemployee.DNO=department.DNO and employee.SUPERSSN in (

 

SELECT ESSN

from employee

WHERE ename="张红"

)

 

5:至少参加了项目编号为P1和P2的项目的员工号;

select EMPLOYEE.ESSN

from EMPLOYEE , works_on

where employee.ESSN=works_on.ESSN andworks_on.PNO='P2' and employee.ESSN in (

select EMPLOYEE.ESSN

from EMPLOYEE , works_on

where employee.ESSN=works_on.ESSN andworks_on.PNO='P1'

)6:参加了全部项目的员工号码和姓名;

 

select   ENAME,ESSN

from EMPLOYEE NATURAL join  works_on

GROUP BY ENAME

HAVING COUNT(PNO)=(SELECT count(*) from project)

 

7:员工平均工资低于3000元的部门名称;

select dname

from EMPLOYEE NATURAL join  department

GROUP BY DNAME

HAVING avg(SALARY)<3000

8:至少参与了3个项目且工作总时间不超过8小时的员工名字;

select ename

from EMPLOYEE NATURAL join  works_on

GROUP BY eNAME

HAVING sum(HOURS)<=18 and count(PNO)>=3

9:每个部门的员工小时平均工资;

select dno,sum(SALARY)/sum(HOURS)

from EMPLOYEENATURAL join  works_on

GROUP BY DNO


注意:

1)需要在课前创建关系数据库COMPANY并准备数据,详见3.23.3

2)每人抽查三个查询,根据抽查情况给分;

3)本次实验不需要提交实验报告,成绩以课上检查为准;

4)实验二会用到COMPANY数据库。

3.2关系数据库COMPANY介绍

创建关系数据库COMPANY,其模式如下(下划线表示关系的主键):

 

关系EMPLOYEE(ENAME, ESSN, ADDRESS, SALARY, SUPERSSN, DNO)

ENAME: 工作人员名字,

ESSN: 工作人员身份证号,

ADDRESS: 工作人员住址,

SALARY: 工作人员工资,

SUPERSSN: 工作人员直接领导的身份证号,

DNO: 所属部门号

 

关系DEPARTMENT(DNAME, DNO, MGRSSN, MGRSTARTDATE)

DNAME: 部门名,

DNEMBER: 部门号,

MGRSSN: 部门领导身份证号,

MGRSTARTDATE: 部门领导开始领导工作的日期

 

关系PROJECT(PNAME, PNO, PLOCATION, DNO)

PNAME: 工程项目名,

PNO: 工程项目号,

PLOCATION: 工程项目所在地,

DNO: 工程项目所属部门号

 

关系WORKS_ON(ESSN, PNO, HOURS)

ESSN: 工作人员身份证号,

PNO: 工程项目号,

HOURS: 工作小时数

3.3数据准备

向创建的数据库COMPANY中添加数据,以备后续查询使用。

要求数据库中至少包含50个员工,5个部门,10项工程,

并且必须包含“研发部”、编号为P1和P2的项目、名叫张红的员工。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值