MySQL数据库 *实验12 查询-order by、limit、union、handler语句

1、将通信工程专业学生按其平均成绩降序排列。

 select 姓名,学号, avg(成绩) as 平均成绩,专业名 from xs_kc join xs using(学号)
 where 专业名 = '通信工程'
 group by 学号
 order by avg(成绩) desc;
 +--------+--------+----------+----------+
| 姓名   | 学号   | 平均成绩 | 专业名   |
+--------+--------+----------+----------+
| 马琳琳 | 081204 |  79.5000 | 通信工程 |
| 王林   | 081202 |  78.0000 | 通信工程 |
| 王敏   | 081201 |  76.0000 | 通信工程 |
| 严红   | 081203 |  75.2500 | 通信工程 |
+--------+--------+----------+----------+

2、用oder by和limit字句查找Employees表中年纪最大的员工的工号,姓名,出生日期,年龄。

select 编号 as 工号,姓名,出生日期,year(now())-year(出生日期) as 年龄 from employees
order by 出生日期
limit 1;
+--------+------+------------+------+
| 工号   | 姓名 | 出生日期   | 年龄 |
+--------+------+------------+------+
| 020018 | 李丽 | 1960-07-30 |   61 |
+--------+------+------------+------+
1 row in set (0.00 sec)

3、将员工信息按出生日期从小到大排列,只显示前5位。

 select * from employees order by 出生日期 desc limit 5;
+--------+--------+------+------------+------+----------+-----------------+----------+--------+
| 编号   | 姓名   | 学历 | 出生日期   | 性别 | 工作时间 | 住址            | 电话     | 部门号 |
+--------+--------+------+------------+------+----------+-----------------+----------+--------+
| 020010 | 王向容 | 硕士 | 1982-12-09 |    1 |        2 | 四牌楼 10-0-108 | 53792361 | 1      |
| 108991 | 钟敏   | 硕士 | 1979-08-10 |    0 |        4 | 中山路10-3-105  | 83346454 | 3      |
| 308759 | 叶凡   | 本科 | 1978-11-18 |    1 |        2 | 北京西路3-7-52  | 83364644 | 4      |
| 010008 | 伍容华 | 本科 | 1976-03-28 |    1 |        3 | 北京东路100-2   | 83321231 | 1      |
| 111006 | 张石兵 | 本科 | 1974-10-01 |    1 |        1 | 解放军34-1-203  | 33358777 | 5      |
+--------+--------+------+------------+------+----------+-----------------+----------+--------+
5 rows in set (0.00 sec)

4、一行一行地浏览xs_kc表中满足要求的内容,要求第一行为成绩大于等于90分的第一行数据,
再读取下一行,最后关闭该表。

mysql> use xscj;
Database changed
mysql> handler xs_kc open;
Query OK, 0 rows affected (0.00 sec)

mysql> handler xs_kc read first where 成绩 >= 90;
+--------+--------+------+------+
| 学号   | 课程号 | 成绩 | 学分 |
+--------+--------+------+------+
| 081102 | 101    |   91 |    5 |
+--------+--------+------+------+
1 row in set (0.00 sec)

mysql> handler xs_kc read next;
+--------+--------+------+------+
| 学号   | 课程号 | 成绩 | 学分 |
+--------+--------+------+------+
| 081102 | 301    |   80 |    4 |
+--------+--------+------+------+
1 row in set (0.00 sec)

mysql> handler xs_kc close;
Query OK, 0 rows affected (0.00 sec)

5、将xscj数据库中xs表信息和yggl数据库中员工信息合在一起显示,显示内容为编号,姓名,出生日期,还增加一列“来自”,凡是xs表的人员“来自”列的内容为“学生”,凡是yggl表的人员“来自”列的内容为“员工”

mysql> alter table xscj.xs add 来自 varchar(10) ;
Query OK, 12 rows affected (0.02 sec)
Records: 12  Duplicates: 0  Warnings: 0

mysql> alter table ygg1.employees add 来自 varchar(10) ;
Query OK, 13 rows affected (0.02 sec)
Records: 13  Duplicates: 0  Warnings: 0

select 编号,姓名,出生日期,
case
when 来自 is null then '员工'
end as 来自
from ygg1.employees
union
select 学号,姓名,出生日期,
case
when 来自 is null then '学生'
end as 来自
from xscj.xs ;
+--------+--------+------------+------+
| 编号   | 姓名   | 出生日期   | 来自 |
+--------+--------+------------+------+
| 000001 | 王林   | 1966-01-23 | 员工 |
| 010008 | 伍容华 | 1976-03-28 | 员工 |
| 020010 | 王向容 | 1982-12-09 | 员工 |
| 020018 | 李丽   | 1960-07-30 | 员工 |
| 102201 | 刘明   | 1972-10-18 | 员工 |
| 102208 | 朱俊   | 1965-09-28 | 员工 |
| 102345 | 朱慧名 | 1973-12-03 | 员工 |
| 108991 | 钟敏   | 1979-08-10 | 员工 |
| 111006 | 张石兵 | 1974-10-01 | 员工 |
| 210678 | 林涛   | 1972-10-18 | 员工 |
| 302566 | 李玉珉 | 1968-09-20 | 员工 |
| 308759 | 叶凡   | 1978-11-18 | 员工 |
| 504209 | 陈林琳 | 1969-09-03 | 员工 |
| 081101 | 王林   | 1994-02-10 | 学生 |
| 081102 | 程明   | 1995-02-01 | 学生 |
| 081103 | 王燕   | 1993-10-06 | 学生 |
| 081104 | 韦平平 | 1994-08-26 | 学生 |
| 081201 | 王敏   | 1993-06-10 | 学生 |
| 081202 | 王林   | 1993-01-29 | 学生 |
| 081203 | 严红   | 1993-08-11 | 学生 |
| 081204 | 马琳琳 | 1993-01-29 | 学生 |
| 081301 | 李计   | 1993-09-20 | 学生 |
| 081302 | 李红庆 | 1993-05-01 | 学生 |
| 081303 | 孙祥欣 | 1993-03-09 | 学生 |
| 081304 | 孙研   | 1994-10-09 | 学生 |
+--------+--------+------------+------+
25 rows in set (0.00 sec)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值