Mysql 多表查询

查询;

建表

mysql> create database mydb11_stu;
Query OK, 1 row affected (0.01 sec)

mysql> use mydb11_stu;
Database changed
mysql> create table student (
    -> id int (10) not null unique primary key ,
    -> name varchar(20) not null,
    -> sex varchar(4),
    -> birth year ,
    -> department varchar (20),
    -> address varchar(50)
    -> );
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql>
mysql>
mysql> create table score (
    -> id int(10) not null unique primary key auto_increment ,
    -> stu_id int(10) not null ,
    -> c_name varchar(20) ,
    -> grade int(10)
    -> );
Query OK, 0 rows affected, 3 warnings (0.01 sec)

插入数据:

mysql> insert  student values(901,'张三丰','男',2002,'计算机系','北京市海淀区');
Query OK, 1 row affected (0.00 sec)

mysql>  insert  student values(902,'周全有','男',2000,'中文系','北京市昌平区');
Query OK, 1 row affected (0.00 sec)

mysql> insert  student values(903,'张思维','女',2003,'中文系','湖南省永州市');
Query OK, 1 row affected (0.00 sec)

mysql> insert  student values(904,'李广昌','男',1999,'英语系','辽宁省皋新市');
Query OK, 1 row affected (0.00 sec)

mysql>  insert  student values(905,'王翰','男',2004,'英语系','福建省厦门市');
Query OK, 1 row affected (0.00 sec)

mysql>  insert  student values(906,'王心凌','女',1998,'计算机系','湖南省衡阳市');
Query OK, 1 row affected (0.00 sec)

mysql>  insert into score values(null,901,'计算机',98);
Query OK, 1 row affected (0.00 sec)

mysql>  insert into score values(null,901,'英语',80);
Query OK, 1 row affected (0.00 sec)

mysql>  insert into score values(null,901,'英语',80);
Query OK, 1 row affected (0.00 sec)

mysql>  insert into score values(null,902,'中文',88);
Query OK, 1 row affected (0.00 sec)

mysql>  insert into score values(null,903,'中文',95);
Query OK, 1 row affected (0.00 sec)

mysql>  insert into score values(null,904,'计算机',70);
Query OK, 1 row affected (0.00 sec)

mysql> insert into score values(null,904,'英语',92);
Query OK, 1 row affected (0.00 sec)

mysql>  insert into score values(null,905,'英语',94);
Query OK, 1 row affected (0.00 sec)

mysql>  insert into score values(null,906,'计算机',49);
Query OK, 1 row affected (0.00 sec)

mysql>  insert into score values(null,906,'英语',83);
Query OK, 1 row affected (0.00 sec)

1.

mysql> select * from student;
+-----+--------+------+-------+------------+--------------+
| id  | name   | sex  | birth | department | address      |
+-----+--------+------+-------+------------+--------------+
| 901 | 张三丰 | 男   |  2002 | 计算机系   | 北京市海淀区 |
| 902 | 周全有 | 男   |  2000 | 中文系     | 北京市昌平区 |
| 903 | 张思维 | 女   |  2003 | 中文系     | 湖南省永州市 |
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市 |
| 905 | 王翰   | 男   |  2004 | 英语系     | 福建省厦门市 |
| 906 | 王心凌 | 女   |  1998 | 计算机系   | 湖南省衡阳市 |
+-----+--------+------+-------+------------+--------------+
6 rows in set (0.00 sec)

mysql> select * from score;
+----+--------+--------+-------+
| id | stu_id | c_name | grade |
+----+--------+--------+-------+
|  1 |    901 | 计算机 |    98 |
|  2 |    901 | 英语   |    80 |
|  3 |    901 | 英语   |    80 |
|  4 |    902 | 中文   |    88 |
|  5 |    903 | 中文   |    95 |
|  6 |    904 | 计算机 |    70 |
|  7 |    904 | 英语   |    92 |
|  8 |    905 | 英语   |    94 |
|  9 |    906 | 计算机 |    49 |
| 10 |    906 | 英语   |    83 |
+----+--------+--------+-------+
10 rows in set (0.00 sec)

2.

mysql> select * from student limit 2,5
    -> ;
+-----+--------+------+-------+------------+--------------+
| id  | name   | sex  | birth | department | address      |
+-----+--------+------+-------+------------+--------------+
| 903 | 张思维 | 女   |  2003 | 中文系     | 湖南省永州市 |
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市 |
| 905 | 王翰   | 男   |  2004 | 英语系     | 福建省厦门市 |
| 906 | 王心凌 | 女   |  1998 | 计算机系   | 湖南省衡阳市 |
+-----+--------+------+-------+------------+--------------+
4 rows in set (0.00 sec)

3.

mysql> select * from student
    -> where department = '计算机系' or department = '英语系';
+-----+--------+------+-------+------------+--------------+
| id  | name   | sex  | birth | department | address      |
+-----+--------+------+-------+------------+--------------+
| 901 | 张三丰 | 男   |  2002 | 计算机系   | 北京市海淀区 |
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市 |
| 905 | 王翰   | 男   |  2004 | 英语系     | 福建省厦门市 |
| 906 | 王心凌 | 女   |  1998 | 计算机系   | 湖南省衡阳市 |
+-----+--------+------+-------+------------+--------------+
4 rows in set (0.00 sec)

4.

mysql> SELECT
    ->     s.id,
    ->     s.name,
    ->     s.sex,
    ->     s.birth,
    ->     s.department,
    ->     s.address,
    ->     sc.id AS score_id,
    ->     sc.c_name,
    ->     sc.grade
    -> FROM
    ->     student s
    -> JOIN
    ->     score sc ON s.id = sc.stu_id
    -> WHERE
    ->     TIMESTAMPDIFF(YEAR, STR_TO_DATE(CONCAT(s.birth, '-01-01'), '%Y-%m-%d'), CURDATE()) < 22;
+-----+--------+------+-------+------------+--------------+----------+--------+-------+
| id  | name   | sex  | birth | department | address      | score_id | c_name | grade |
+-----+--------+------+-------+------------+--------------+----------+--------+-------+
| 903 | 张思维 | 女   |  2003 | 中文系     | 湖南省永州市 |        5 | 中文   |    95 |
| 905 | 王翰   | 男   |  2004 | 英语系     | 福建省厦门市 |        8 | 英语   |    94 |
+-----+--------+------+-------+------------+--------------+----------+--------+-------+
2 rows in set (0.00 sec)

5.

mysql> select department ,count(department) '各个院系人数' from student
    -> group by department;
+------------+--------------+
| department | 各个院系人数 |
+------------+--------------+
| 计算机系   |            2 |
| 中文系     |            2 |
| 英语系     |            2 |
+------------+--------------+
3 rows in set (0.00 sec)

6.

mysql> select c_name ,max(grade) from score
    -> group by c_name;
+--------+------------+
| c_name | max(grade) |
+--------+------------+
| 计算机 |         98 |
| 英语   |         94 |
| 中文   |         95 |
+--------+------------+
3 rows in set (0.00 sec)

7.

mysql> select c_name , grade from student join score on student.id=score.stu_id
    -> where student.name='李广昌';
+--------+-------+
| c_name | grade |
+--------+-------+
| 计算机 |    70 |
| 英语   |    92 |
+--------+-------+
2 rows in set (0.00 sec)

8.

mysql> select * from student join score on student.id=score.stu_id;
+-----+--------+------+-------+------------+--------------+----+--------+--------+-------+
| id  | name   | sex  | birth | department | address      | id | stu_id | c_name | grade |
+-----+--------+------+-------+------------+--------------+----+--------+--------+-------+
| 901 | 张三丰 | 男   |  2002 | 计算机系   | 北京市海淀区 |  1 |    901 | 计算机 |    98 |
| 901 | 张三丰 | 男   |  2002 | 计算机系   | 北京市海淀区 |  2 |    901 | 英语   |    80 |
| 901 | 张三丰 | 男   |  2002 | 计算机系   | 北京市海淀区 |  3 |    901 | 英语   |    80 |
| 902 | 周全有 | 男   |  2000 | 中文系     | 北京市昌平区 |  4 |    902 | 中文   |    88 |
| 903 | 张思维 | 女   |  2003 | 中文系     | 湖南省永州市 |  5 |    903 | 中文   |    95 |
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市 |  6 |    904 | 计算机 |    70 |
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市 |  7 |    904 | 英语   |    92 |
| 905 | 王翰   | 男   |  2004 | 英语系     | 福建省厦门市 |  8 |    905 | 英语   |    94 |
| 906 | 王心凌 | 女   |  1998 | 计算机系   | 湖南省衡阳市 |  9 |    906 | 计算机 |    49 |
| 906 | 王心凌 | 女   |  1998 | 计算机系   | 湖南省衡阳市 | 10 |    906 | 英语   |    83 |
+-----+--------+------+-------+------------+--------------+----+--------+--------+-------+
10 rows in set (0.00 sec)

9.

mysql> select name,sum(grade) from student join score on student.id=score.stu_id
    -> group by name;
+--------+------------+
| name   | sum(grade) |
+--------+------------+
| 张三丰 |        258 |
| 周全有 |         88 |
| 张思维 |         95 |
| 李广昌 |        162 |
| 王翰   |         94 |
| 王心凌 |        132 |
+--------+------------+
6 rows in set (0.00 sec)

10.

mysql> select c_name ,round(avg(grade)) from score group by c_name;
+--------+-------------------+
| c_name | round(avg(grade)) |
+--------+-------------------+
| 计算机 |                72 |
| 英语   |                86 |
| 中文   |                92 |
+--------+-------------------+
3 rows in set (0.00 sec)

11.

mysql> SELECT
    ->     s.id,
    ->     s.name,
    ->     s.sex,
    ->     s.birth,
    ->     s.department,
    ->     s.address,
    ->     sc.id AS score_id,
    ->     sc.c_name,
    ->     sc.grade
    -> FROM
    ->     student s
    -> JOIN
    ->     score sc ON s.id = sc.stu_id
    -> WHERE
    ->     sc.c_name = '计算机'  -- 筛选计算机课程
    ->     AND sc.grade < 95;     -- 筛选成绩未达到 95 分的记录
+-----+--------+------+-------+------------+--------------+----------+--------+-------+
| id  | name   | sex  | birth | department | address      | score_id | c_name | grade |
+-----+--------+------+-------+------------+--------------+----------+--------+-------+
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市 |        6 | 计算机 |    70 |
| 906 | 王心凌 | 女   |  1998 | 计算机系   | 湖南省衡阳市 |        9 | 计算机 |    49 |
+-----+--------+------+-------+------------+--------------+----------+--------+-------+
2 rows in set (0.00 sec)

12.

mysql> select * from  student join score on student.id=score.stu_id
    -> where c_name = '计算机'  order by grade desc;
+-----+--------+------+-------+------------+--------------+----+--------+--------+-------+
| id  | name   | sex  | birth | department | address      | id | stu_id | c_name | grade |
+-----+--------+------+-------+------------+--------------+----+--------+--------+-------+
| 901 | 张三丰 | 男   |  2002 | 计算机系   | 北京市海淀区 |  1 |    901 | 计算机 |    98 |
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市 |  6 |    904 | 计算机 |    70 |
| 906 | 王心凌 | 女   |  1998 | 计算机系   | 湖南省衡阳市 |  9 |    906 | 计算机 |    49 |
+-----+--------+------+-------+------------+--------------+----+--------+--------+-------+
3 rows in set (0.00 sec)

13.

mysql>  select stu_id,name from  student join score on student.id=score.stu_id;
+--------+--------+
| stu_id | name   |
+--------+--------+
|    901 | 张三丰 |
|    901 | 张三丰 |
|    901 | 张三丰 |
|    902 | 周全有 |
|    903 | 张思维 |
|    904 | 李广昌 |
|    904 | 李广昌 |
|    905 | 王翰   |
|    906 | 王心凌 |
|    906 | 王心凌 |
+--------+--------+
10 rows in set (0.00 sec)

14.

mysql>  select name, department,score.c_name,score.grade from  student join score on student.id=score.stu_id
    -> where name like '张%' or name like '王%';
+--------+------------+--------+-------+
| name   | department | c_name | grade |
+--------+------------+--------+-------+
| 张三丰 | 计算机系   | 计算机 |    98 |
| 张三丰 | 计算机系   | 英语   |    80 |
| 张三丰 | 计算机系   | 英语   |    80 |
| 张思维 | 中文系     | 中文   |    95 |
| 王翰   | 英语系     | 英语   |    94 |
| 王心凌 | 计算机系   | 计算机 |    49 |
| 王心凌 | 计算机系   | 英语   |    83 |
+--------+------------+--------+-------+
7 rows in set (0.00 sec)

15.

+--------+----------------------------------------------------------------------------------+------------+--------+-------+
| name   | TIMESTAMPDIFF(YEAR, STR_TO_DATE(CONCAT(birth, '-01-01'), '%Y-%m-%d'), CURDATE()) | department | c_name | grade |
+--------+----------------------------------------------------------------------------------+------------+--------+-------+
| 张思维 |                                                                               21 | 中文系     | 中文   |    95 |
| 王心凌 |                                                                               26 | 计算机系   | 计算机 |    49 |
| 王心凌 |                                                                               26 | 计算机系   | 英语   |    83 |
+--------+----------------------------------------------------------------------------------+------------+--------+-------+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值