表结构约定:
emp雇员表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)
dept部门表(deptno部门编号/dname部门名称/loc地点)
5.1.2 任务目的
(1) 掌握MySQL子查询的使用方法
5.1.3 任务要求
1、列出至少有一个员工的所有部门。(两个表联合查询,及groupby...having的用法)
Select
2/ 列出所有员工的姓名及其直接上级的姓名。(多次对自己查询,为表的取个别名,内部查询可以像对象一样引用外部的对象的字段,这里引用与编程中的作用域相似,即与{}类比)
3、列出受雇日期早于其直接上级的所有员工。(同上,日期可直接拿来比较)
4、列出所有“CLERK”(办事员)的姓名及其部门名称。
5、列出最低薪金大于1500的各种工作
6、列出薪金高于公司平均薪金的所有员工。(反复查自己)
7、列出与“SCOTT”从事相同工作的所有员工。(排除自己)
8、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。(any的用法,且排挤)
9、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。(max的用法)
10、列出在每个(每个是关键字,对此group by)部门工作的员工数量、平均工资和平均服务期限。(经典的group by用法)
11、列出所有员工的姓名、部门名称和工资.(经典的两个表的连接查询,用具体的名称替换一个表中的主键的id (解决很多人在实际运用中会遇到的不能绑定多列的问题),也可用where来查询 ,与题5比较)
12、列出从事同一种工作但属于不同部门的员工的一种组合
13、列出所有部门的详细信息和部门人数。(因为是*,将显示dept和后面临时表b的全部字段(注意:不只是dept的字段,注意*号))
14、列出各种(与每个同义(参看题13))工作的最低工资
15、列出各个部门的MANAGER(经理,经理唯一,不用groupby)的最低薪金
Enter password: ***
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.13-enterprise-commercial-advanced MySQL Enterprise Server -
Advanced Edition (Commercial)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| csdn |
| csdn3g |
| csdn9 |
| fenzu |
| gujianpeng |
| mysql |
| performance_schema |
| shujuku |
| student |
| waijian |
| webnews |
| yunsuanfu |
| zuoye |
+--------------------+
14 rows in set (1.03 sec)
mysql> create database yuebing;
Query OK, 1 row affected (0.07 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| csdn |
| csdn3g |
| csdn9 |
| fenzu |
| gujianpeng |
| mysql |
| performance_schema |
| shujuku |
| student |
| waijian |
| webnews |
| yuebing |
| yunsuanfu |
| zuoye |
+--------------------+
15 rows in set (0.00 sec)
mysql> use yuebing;
Database changed
创建一个数据库名叫 emp
mysql> create table emp(empno varchar(10),ename varchar(10),job varchar(10),mgr
varchar(10),hiredate varchar(10),sal varchar(10),comm varchar(10),deptno varchar
(10));
Query OK, 0 rows affected (1.73 sec)
mysql> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| empno | varchar(10) | YES | | NULL | |
| ename | varchar(10) | YES | | NULL | |
| job | varchar(10) | YES | | NULL | |
| mgr | varchar(10) | YES | | NULL | |
| hiredate | varcha