MySQL数据库 *实验报告10 子查询

欢迎来到言人冰的博客,本次实验有亿点点难度

首先创建两个数据库 xscj3 和 ygg3

+-----------------+
| Tables_in_xscj3 |
+-----------------+
| kc              |
| xs              |
| xs_kc           |
+-----------------+
+----------------+
| Tables_in_ygg3 |
+----------------+
| departments    |
| employees      |
| salary         |
+----------------+

先来看看 数据库ygg3中的表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、查找yggl数据库中收入最高的员工的编号 、姓名和收入

select 编号,姓名,收入 from salary
join employees using(编号)
where 收入 = (select max(收入) from salary);
+--------+------+---------+
| 编号   | 姓名 | 收入    |
+--------+------+---------+
| 108991 | 钟敏 | 3259.98 |
+--------+------+---------+
1 row in set (0.00 sec)

2、查找yggl数据库中收入比平均工资高的员工的编号、姓名和收入(计算平均工资的语句也要贴图)

 select avg(收入) as 平均工资 from salary;
+--------------------+
| 平均工资           |
+--------------------+
| 2290.9845909705527 |
+--------------------+

 select 编号,姓名,收入 from salary join employees using(编号) where 收入 > (select avg(收入) from salary);
+--------+--------+---------+
| 编号   | 姓名   | 收入    |
+--------+--------+---------+
| 020010 | 王向容 |    2860 |
| 020018 | 李丽   | 2347.68 |
| 102201 | 刘明   | 2569.88 |
| 108991 | 钟敏   | 3259.98 |
| 302566 | 李玉珉 |  2980.7 |
| 308759 | 叶凡   | 2531.98 |
+--------+--------+---------+

3、查找yggl数据库,列出比所有男员工工资高的女员工(编号、姓名、性别、收入)

【!】先查看表 employees 中所有员工的收入情况
mysql> select 姓名,
    -> case
    -> when 性别 = 1 then '男'
    -> else  '女'
    -> end as 性别,
    -> 收入 from salary join employees using(编号);
+--------+------+---------+
| 姓名   | 性别 | 收入    |
+--------+------+---------+
| 王林   ||  2100.8 |
| 伍容华 || 1582.62 |
| 王向容 ||    2860 |
| 李丽   || 2347.68 |
| 刘明   || 2569.88 |
| 朱俊   ||    1456 |
| 朱慧名 ||    1800 |
| 钟敏   || 3259.98 |
| 张石兵 || 1987.01 |
| 林涛   ||    2240 |
| 李玉珉 ||  2980.7 |
| 叶凡   || 2531.98 |
| 陈林琳 || 2066.15 |
+--------+------+---------+
13 rows in set (0.00 sec)

【注】很显然,在所有女生中,其收入比所有男生都高的只有1位,即 钟敏 收入位为 3259.98

以下代码能够找出该女员工:
 
 select 编号,姓名,性别,收入 from employees join salary using(编号)
 where 性别 = 0 
 and 收入 > all(select 收入 from salary join employees using(编号) where 性别 = 1);
+--------+------+------+---------+
| 编号   | 姓名 | 性别 | 收入    |
+--------+------+------+---------+
| 108991 | 钟敏 |    0 | 3259.98 |
+--------+------+------+---------+

先来看看 数据库xscj3中的表

在这里插入图片描述

4、查找xscj数据库,列出比女同学平均分低的男同学姓名,显示学号、姓名、性别、成绩(性别=0为女同学)

首先来看一下女生的平均成绩
 
 select avg(成绩) as 女生的平均成绩 from xs_kc join xs using(学号) where 性别 = 0;
+----------------+
| 女生的平均成绩  |
+----------------+
|        73.6667 |
+----------------+

再来领略一下全班男生的成绩

mysql> select 学号,姓名,性别,成绩 from xs join xs_kc using(学号) where 性别 = 1;
+--------+--------+------+------+
| 学号   | 姓名   | 性别 | 成绩 |
+--------+--------+------+------+
| 081101 | 王林   |    1 |   80 |
| 081101 | 王林   |    1 |   78 |
| 081102 | 程明   |    1 |   91 |
| 081102 | 程明   |    1 |   80 |
| 081102 | 程明   |    1 |   76 |
| 081104 | 韦平平 |    1 |   65 |《《《《《比女生平均成绩低(用*表示)
| 081201 | 王敏   |    1 |   76 |
| 081202 | 王林   |    1 |   78 |
| 081301 | 李计   |    1 |   71 |《《《《《 *
| 081302 | 李红庆 |    1 |   78 |
| 081302 | 李红庆 |    1 |   89 |
| 081303 | 孙祥欣 |    1 |   63 |《《《《《 *
| 081303 | 孙祥欣 |    1 |   81 |
| 081304 | 孙研   |    1 |   65 |《《《《《 *
| 081304 | 孙研   |    1 |   84 |
| 081304 | 孙研   |    1 |   76 |
+--------+--------+------+------+

最后来输出这几个害羞男生的名单吧
mysql> select 学号,姓名,性别,成绩 from xs_kc join xs using(学号)
    -> where 性别 = 1
    -> and 成绩 < (select avg(成绩) from xs_kc join xs using(学号) where 性别 = 0);
+--------+--------+------+------+
| 学号   | 姓名   | 性别 | 成绩 |
+--------+--------+------+------+
| 081104 | 韦平平 |    1 |   65 |
| 081301 | 李计   |    1 |   71 |
| 081303 | 孙祥欣 |    1 |   63 |
| 081304 | 孙研   |    1 |   65 |
+--------+--------+------+------+
4 rows in set (0.00 sec)

!!!重点关注这道题

5、查找xscj数据库,查询没有被选修的课程(要求只显示没被选修的课程),显示的列为课程号、课程名、成绩

在这里插入图片描述

select  a.课程号 ,a.课程名,b.成绩 from kc a left join xs_kc b
on a.课程号 = b.课程号 where b.课程号 is null;
+--------+----------+------+
| 课程号 | 课程名   | 成绩 |
+--------+----------+------+
| 201    | 数据结构 | NULL |
+--------+----------+------+

》》》》》》》》》》》》》》》》》》》》》》》》》。。。。。。。。。。。。
补充一下 左外连接 这个知识点
在这里插入图片描述

感谢访问本实验,加油!!!

感谢访问本实验,加油!!!

感谢访问本实验,加油!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2008数据库实验 1.SQL SEVER 2000的系统工具、使用交互方式建库、建表 2.T—SQL的简单查询、连接查询 3.子查询及组合 4.数据控制、数据导入/导出、数据备份和恢复 实验1 SQL SEVER 2000的系统工具、使用交互方式建库、建表实验 实验目的和要求:了解SQL SEVER 2000的功能及组成,熟练掌握利用SQL SEVER 2000企业管理器和查询分析器创建数据库、表、索引和修改表结构及向数据库输入数据、修改数据和删除数据的操作方法和步骤,掌握定义数据约束条件的操作。 实验内容和步骤: (1)熟悉SQL SEVER 2000的界面和操作。 (3)熟悉企业管理器和查询分析器的界面和操作。 (3)创建数据库和查看数据库属性。 (4)创建表、确定表的主码和约束条件。 (5)查看和修改表的结构。 (6)向数据库输入数据,观察违反列级约束时出现的情况。 (7)修改数据。 (8)删除数据,观察违反表级约束时出现的情况。 实验2 T—SQL的简单查询、连接查询 实验目的和要求:,了解SQL语句的数据定义与数据更新功能,了解SQL语句的查询功能,掌握SQL中的数据定义语句的用法,熟练掌握SQL中的插入、修改和删除语句的操作,熟练掌握使用SQL语句进行数据库的简单查询、连接查询。 实验内容和步骤: (1)在SQL SEVER 2000的查询分析器里,用SQL语句建库、建表并插入记录。 (2)修改表结构,包括修改属性列的数据类型,增加新的属性列,删除已有的属性列。 (3)使用单个元组和多元组插入。 (4)简单查询操作,包括投影、选择、数据排序、模糊匹配查询等。如果结果不正确,要进行修改,直至正确为止。 (5)连接查询操作,包括等值连接、自然连接、一般连接、自身连接、外连接。 实验3 子查询及组合 实验目的和要求:了解SQL语句的查询功能,理解视图的概念。熟练掌握使用SQL语句进行数据库的嵌套查询及组合查询的操作;掌握视图创建语句和视图的使用方法,加深对视图作用的理解。 实验内容和步骤: (1)在DBMS的交互式环境里,用SQL语句建库、建表并插入记录。 (2)使用In、比较符和Exists操作符进行嵌套查询操作。 (3)分组查询,包括分组条件表达、选择组条件表达的方法。 (4)集合查询。 (5)使用视图创建语句建视图,通过视图查询数据 (6)带子查询的修改和删除 (7)通过视图修改和删除数据 实验4 数据控制、数据的导入/导出、数据库备份和恢复 实验目的和要求:掌握数据控制(安全性)的方法,了解SQL SEVER 2000的数据备份和恢复机制,掌握SQL SEVER 2000中数据库备份和恢复的方法。 实验内容和步骤: (1)使用SQL对数据进行安全性控制,包括授权和权利收回。 (2)查看授权和权利收回后的结果 (3)SQL SEVER 2000工具对表中的数据导出到其它格式的文件。 (4)将其它格式的文件数据导入到数据库中。 (5)使用SQL SEVER 2000工具创建一个数据库的备份(海量备份、增量备份)。 (6)使用SQL SEVER 2000工具及所创建的数据库备份恢复这个数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值