整理各种查询语句,需要查询数据请参考上篇博客
https://blog.csdn.net/chennuan1991/article/details/105240457
看一下4张表的结构
mysql> desc students;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| sno | varchar(20) | NO | PRI | NULL | |
| sname | varchar(20) | NO | | NULL | |
| ssex | varchar(10) | NO | | NULL | |
| birthday | datetime | YES | | NULL | |
| class | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql> desc teacher;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| tno | varchar(20) | NO | PRI | NULL | |
| tname | varchar(20) | NO | | NULL | |
| tsex | varchar(10) | NO | | NULL | |
| tbirthday | datetime | YES | | NULL | |
| prof | varchar(20) | NO | | NULL | |
| tdepar | varchar(20) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
mysql> desc course;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| cno | varchar(20) | NO | PRI | NULL | |
| cname | varchar(20) | NO | | NULL | |
| tno | varchar(20) | YES | MUL | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> desc score;
+--------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| sno | varchar(20) | NO | PRI | NULL | |
| cno | varchar(20) | NO | PRI | NULL | |
| degree | decimal(10,0) | YES | | NULL | |
+--------+---------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
一、基础查询语句
01 查询students表中所有记录
mysql> select * from students;
+-----+--------+------+---------------------+-------+
| sno | sname | ssex | birthday | class |
+-----+--------+------+---------------------+-------+
| 101 | 张三 | 男 | 1977-09-01 00:00:00 | 95033 |
| 102 | 李四 | 男 | 1975-10-02 00:00:00 | 95031 |
| 103 | 王五 | 女 | 1976-01-23 00:00:00 | 95033 |
| 104 | 铁柱 | 男 | 1976-02-20 00:00:00 | 95033 |
| 105 | 小丽 | 女 | 1975-02-10 00:00:00 | 95031 |
| 106 | 小红 | 男 | 1974-06-03 00:00:00 | 95031 |
| 107 | 小绿 | 男 | 1976-02-20 00:00:00 | 95033 |
| 108 | 大妞 | 女 | 1975-02-10 00:00:00 | 95031 |
| 109 | 乖乖 | 男 | 1974-06-03 00:00:00 | 95031 |
+-----+--------+------+---------------------+-------+
9 rows in set (0.01 sec)
02 查询students表中所有记录的sname,sex,class列
mysql> select sname,ssex,class from students;
+--------+------+-------+
| sname | ssex | class |
+--------+------+-------+
| 张三 | 男 | 95033 |
| 李四 | 男 | 95031 |
| 王五 | 女 | 95033 |
| 铁柱 | 男 | 95033 |
| 小丽 | 女 | 95031 |
| 小红 | 男 | 95031 |
| 小绿 | 男 | 95033 |
| 大妞 | 女 | 95031 |
| 乖乖 | 男 | 95031 |
+--------+------+-------+
9 rows in set (0.00 sec)
03 查询教师表中depart(单位)不重复的数据(distinct)
mysql> select distinct tdepar from teacher;
+-----------------+
| tdepar |
+-----------------+
| 计算机系 |
| 电子工程系 |
+-----------------+
2 rows in set (0.00 sec)
04 查询score表中成绩在60-80之间的所有记录(between...and...)
mysql> select * from score where degree between 60 and 80;
+-----+-------+--------+
| sno | cno | degree |
+-----+-------+--------+
| 105 | 3-245 | 75 |
| 105 | 6-166 | 79 |
| 109 | 3-105 | 76 |
| 109 | 3-245 | 68 |
+-----+-------+--------+
4 rows in set (0.00 sec)
05 查询score表中成绩为85,86,或88的记录(in())
mysql> select * from score where degree in(85,86,88);
+-----+-------+--------+
| sno | cno | degree |
+-----+-------+--------+
| 103 | 3-245 | 86 |
| 103 | 6-166 | 85 |
| 105 | 3-105 | 88 |
+-----+-------+--------+
3 rows in set (0.00 sec)
06 查询students表中95031班或性别为女的同学的记录(or)
mysql> select * from students where class = '95031' or ssex='女';
+-----+--------+------+---------------------+-------+
| sno | sname | ssex | birthday | class |
+-----+--------+------+---------------------+-------+
| 102 | 李四 | 男 | 1975-10-02 00:00:00 | 95031 |
| 103 | 王五 | 女 | 1976-01-23 00:00:00 | 95033 |
| 105 | 小丽 | 女 | 1975-02-10 00:00:00 | 95031 |
| 106 | 小红 | 男 | 1974-06-03 00:00:00 | 95031 |
| 108 | 大妞 | 女 | 1975-02-10 00:00:00 | 95031 |
| 109 | 乖乖 | 男 | 1974-06-03 00:00:00 | 95031 |
+-----+--------+------+---------------------+-------+
6 rows in set (0.00 sec)
07 以class降序查询students表的所有记录(order by xxx desc)
mysql> select * from students order by class desc;
+-----+--------+------+---------------------+-------+
| sno | sname | ssex | birthday | class |
+-----+--------+------+---------------------+-------+
| 101 | 张三 | 男 | 1977-09-01 00:00:00 | 95033 |
| 103 | 王五 | 女 | 1976-01-23 00:00:00 | 95033 |
| 104 | 铁柱 | 男 | 1976-02-20 00:00:00 | 95033 |
| 107 | 小绿 | 男 | 1976-02-20 00:00:00 | 95033 |
| 102 | 李四 | 男 | 1975-10-02 00:00:00 | 95031 |
| 105 | 小丽 | 女 | 1975-02-10 00:00:00 | 95031 |
| 106 | 小红 | 男 | 1974-06-03 00:00:00 | 95031 |
| 108 | 大妞 | 女 | 1975-02-10 00:00:00 | 95031 |
| 109 | 乖乖 | 男 | 1974-06-03 00:00:00 | 95031 |
+-----+--------+------+---------------------+-------+
9 rows in set (0.00 sec)
08 以cno升序,degree降序查询score表的所有记录(order by xxx asc,xxx desc)
mysql> select * from score order by cno asc,degree desc;
+-----+-------+--------+
| sno | cno | degree |
+-----+-------+--------+
| 103 | 3-105 | 92 |
| 105 | 3-105 | 88 |
| 109 | 3-105 | 76 |
| 103 | 3-245 | 86 |
| 105 | 3-245 | 75 |
| 109 | 3-245 | 68 |
| 103 | 6-166 | 85 |
| 109 | 6-166 | 81 |
| 105 | 6-166 | 79 |
+-----+-------+--------+
9 rows in set (0.01 sec)
09 查询95031班学生人数(count())
mysql> select count(*) from students where class ='95031';
+----------+
| count(*) |
+----------+
| 5 |
+----------+
1 row in set (0.00 sec)
10 查询score表中最高分的学生学号和课程号
mysql> select sno,cno,degree from score where degree = (select max(degree) from score);
+-----+-------+--------+
| sno | cno | degree |
+-----+-------+--------+
| 103 | 3-105 | 92 |
+-----+-------+--------+
1 row in set (0.00 sec)
参考:
感谢code 158编程俱乐部