数据库实验2 MYSQL语句查询
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二:SQL语言的使用
李建中高宏邹兆年
1. 实验目的
在熟练运用MySQL基本命令的基础上,掌握SQL语言的使用方法,学会使用SQL语言进行关系数据库查询,特别是聚集查询、连接查询和嵌套查询。
2. 实验环境
Windows XP上安装的MySQL 5.1.41
3. 实验步骤
3.1 创建数据库
创建关系数据库COMPANY,其模式如下(下划线表示关系的主键):
关系EMPLOYEE (ENAME, ESSN, BDATE, ADDRESS, SEX, SALARY, SUPERSSN, DNO)
ENAME: 工作人员名字,
ESSN: 工作人员身份证号,
BDATE: 工作人员生日,
ADDRESS: 工作人员住址,
SEX: 工作人员性别,
SALARY: 工作人员工资,
SUPERSSN: 工作人员直接领导的身份证号,
DNO: 所属部门号
关系DEPARTMENT (DNAME, DNO, MGRSSN, MGRSTARTDATE)
DNAME: 部门名,
DNEMBER: 部门号,
MGRSSN: 部门领导身份证号,
MGRSTARTDATE: 部门领导开始领导工作的日期
关系DEPART_LOCATION (DNO, DLOCATION)
DNO: 部门号,
DLOCATION: 部门所在地
关系PROJECT (PNAME, PNO, PLOCATION, DNO)
PNAME: 工程项目名,
PNO: 工程项目号,
PLOCATION: 工程项目所在地,
DNO: 工程项目所属部门号
关系WORKS_ON (ESSN, PNO, HOURS)
ESSN: 工作人员身份证号,
PNO: 工程项目号,
HOURS: 工作小时数
关系DEPENDENT (ESSN, SEX, BDATE, RELATIONSHIP)
ESSN: 工作人员身份证号,
SEX: 家属性别,
BDATE: 家属生日,
RELATIONSHIP: 与工作人员关系
3.2 向数据库中添加数据
向数据库COMPANY中添加数据,以备后续查询使用。
要求数据库中至少包含50个员工,5个部门,10项工程,并且必须包含“研发部”、编号为P1和P2的项目、名叫张红的员工。
3.3 使用SQL语言进行查询
使用SQL语言完成如下查询:
1:参加了项目编号为P2的项目的员工号;
2:参加了项目名为“哈同公路”的员工名字;
3:在“研发部”工作的所有工作人员的名字;
4:在“研发部”工作的所有工作人员的名字和地址;
5:在“研发部”工作且工资低于3000元的员工名字和地址;
6:没有参加项目编号为P1的项目的员工姓名;
7:没有家属的工作人员的名字;
8:由张红领导的工作人员的姓名和所在部门的名字;9:至少参加了项目编号为P1和P2的项目的员工号;
10:参加了全部项目的员工号码和姓名;
11:每个部门的员工数;
12:每个部门员工的平均工资、最高工资和最低工资;
13:员工平均工资低于3000元的部门名称;
14:每个项目参与员工的平均年龄;
15:至少参与了3个项目的员工名字;
17:至少参与了2个大项目的员工名字,其中大项目的定义是参与员工数超过10人的项目;
18:每个部门的员工小时平均工资;
19:每个部门男、女员工的小时平均工资;
20:居住地、所在部门和所参与项目均不在同一地点的员工姓名。
4. 实验遇到的问题与体会
1.指令较长,容易打错,问题一方面出在那么长的指令,打错字是正常的。
解决方法:在输入一行指令之后就进行检查,及时发现漏洞;而指令过长时,最好将指令分成几行输入,这样能够使得指令更容易检查和分析,而且正确的指令行也能够重复利用。
2.SQL语句种类不少,而这些语句的互相叠加使用之后变化更多,让使用在苦恼于该用什么指令,而这个指令又可以和哪些语句搭配,而胡乱使用又担心语法出错。
解决方法:首先是看书,对SQL语句有大致了解,知道哥哥语句的功能;然后参照例题去完成实验布置的题目;对于担心出错的问题,可以参照SQL查询语句的语法结构:
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr, ...
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'file_name']
[FROM table_references
[WHERE where_definition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_definition]
[ORDER BY {col_name | expr | position}
[ASC | DESC] , ...]