一、导入练习数据
mysql> source C:\Users\me\Desktop\studydata.sql
Query OK, 3 rows affected (0.15 sec)
......
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+---------------------+
| Tables_in_studydata |
+---------------------+
| t_grade |
| t_student |
| t_teacher |
+---------------------+
3 rows in set (0.04 sec)
#三张表的结构
mysql> desc t_grade;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| grade | char(3) | NO | PRI | NULL | |
| min | int | YES | | NULL | |
| max | int | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
3 rows in set (0.04 sec)
mysql> desc t_student;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| stno | int | NO | PRI | NULL | |
| stname | varchar(10) | YES | | NULL | |
| stsex | char(2) | YES | | NULL | |
| stclass | varchar(3) | YES | | NULL | |
| steacherno | int | YES | | NULL | |
| stmath | int | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
mysql> desc t_teacher;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| teno | int | NO | PRI | NULL | |
| tename | varchar(10) | YES | | NULL | |
| Englishname | varchar(32) | YES | | NULL | |
| tesalary | int | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
4 rows in set (0.04 sec)
二、简单查询
#查询学生表的全部信息
mysql> select * from t_student;
+------+--------+-------+---------+------------+--------+
| stno | stname | stsex | stclass | steacherno | stmath |
+------+--------+-------+---------+------------+--------+
| 5101 | 赵钱 | 男 | 1班 | 9801 | 78 |
| 5102 | 王五 | 女 | 3班 | 9804 | 68 |
| 5103 | 上下 | 男 | 1班 | 9804 | 47 |
......
| 5126 | 孙李 | 男 | 3班 | 9802 | 74 |
+------+--------+-------+---------+------------+--------+
26 rows in set (0.00 sec)
#查询教师的姓名
mysql> select tename from t_teacher;
+--------+
| tename |
+--------+
| 点赞 |
| 关注 |
| 收藏 |
| 订阅 |
+--------+
4 rows in set (0.00 sec)
mysql> select teno teacherno, tename as 'teacher name' from t_teacher;
+-----------+--------------+
| teacherno | teacher name |
+-----------+--------------+
| 9801 | 点赞 |
| 9802 | 关注 |
| 9803 | 收藏 |
| 9804 | 订阅 |
+-----------+--------------+
4 rows in set (0.00 sec)
#计算各位教师的年薪
mysql> select tename,tesalary*12 as '年薪' from t_teacher;
+--------+--------+
| tename | 年薪 |
+--------+--------+
| 点赞 | 102000 |
| 关注 | 111600 |
| 收藏 | 158400 |
| 订阅 | 105600 |
+--------+--------+
4 rows in set (0.00 sec)
三、条件查询
条件有哪些?
#数学成绩大于80分的学生的学号、姓名、数学成绩
mysql> select stno,stname,stmath from t_student where stmath>80;
+------+--------+--------+
| stno | stname | stmath |
+------+--------+--------+
| 5104 | 钱七 | 93 |
| 5107 | 左右 | 88 |
| 5110 | 周四 | 94 |
| 5112 | 夏 | 82 |
| 5114 | 张三 | 87 |
| 5115 | 甲乙 | 88 |
| 5117 | 前后 | 93 |
| 5118 | 周五 | 99 |
| 5120 | 冷烬 | 100 |
| 5123 | 丙丁 | 91 |
| 5125 | 秋 | 89 |
+------+--------+--------+
11 rows in set (0.00 sec)
#数学成绩等于100的学生的学号、姓名、数学成绩
+------+--------+--------+
| stno | stname | stmath |
+------+--------+--------+
| 5120 | 冷烬 | 100 |
+------+--------+--------+
1 row in set (0.00 sec)
#学生名字为'张三' 的的学号、姓名、数学成绩
mysql> select stno,stname,stmath from t_student where stname='张三';
+------+--------+--------+
| stno | stname | stmath |
+------+--------+--------+
| 5114 | 张三 | 87 |
+------+--------+--------+
1 row in set (0.00 sec)
#查询数学成绩在75到85之间的所有学生的学号、姓名、数学成绩
mysql> select stno,stname,stmath from t_student where stmath between 75 and 85;
+------+--------+--------+
| stno | stname | stmath |
+------+--------+--------+
| 5101 | 赵钱 | 78 |
| 5109 | 周三 | 77 |
| 5112 | 夏 | 82 |
| 5113 | 赵六 | 76 |
| 5122 | 周二 | 78 |
+------+--------+--------+
5 rows in set (0.00 sec)
mysql> select stno,stname,stmath from t_student where stmath >= 75 and stmath <= 85;
+------+--------+--------+
| stno | stname | stmath |
+------+--------+--------+
| 5101 | 赵钱 | 78 |
| 5109 | 周三 | 77 |
| 5112 | 夏 | 82 |
| 5113 | 赵六 | 76 |
| 5122 | 周二 | 78 |
+------+--------+--------+
5 rows in set (0.00 sec)
#数学成绩为空的学生的学号、姓名、数学成绩
mysql> select stno,stname,stmath from t_student where stmath is null;
+------+--------+--------+
| stno | stname | stmath |
+------+--------+--------+
| 5116 | 南北 | NULL |
+------+--------+--------+
1 row in set (0.00 sec)
# 性别为男,且数学成绩大于80分的学生的学号、姓名、性别、数学成绩
mysql> select stno,stname,stsex,stmath from t_student where stsex='男' and stmath>80;
+------+--------+-------+--------+
| stno | stname | stsex | stmath |
+------+--------+-------+--------+
| 5107 | 左右 | 男 | 88 |
| 5110 | 周四 | 男 | 94 |
| 5118 | 周五 | 男 | 99 |
| 5120 | 冷烬 | 男 | 100 |
| 5123 | 丙丁 | 男 | 91 |
| 5125 | 秋 | 男 | 89 |
+------+--------+-------+--------+
6 rows in set (0.00 sec)
#’1班‘的学生或者数学成绩大于90的学生的学号、姓名、班级、数学成绩
mysql> select stno,stname,stclass,stmath from t_student where stclass='1班' or stmath>90;
+------+--------+---------+--------+
| stno | stname | stclass | stmath |
+------+--------+---------+--------+
| 5101 | 赵钱 | 1班 | 78 |
| 5103 | 上下 | 1班 | 47 |
| 5104 | 钱七 | 1班 | 93 |
| 5109 | 周三 | 1班 | 77 |
| 5110 | 周四 | 2班 | 94 |
| 5114 | 张三 | 1班 | 87 |
| 5117 | 前后 | 1班 | 93 |
| 5118 | 周五 | 2班 | 99 |
| 5119 | 春 | 1班 | 73 |
| 5120 | 冷烬 | 2班 | 100 |
| 5121 | 冬 | 1班 | 54 |
| 5123 | 丙丁 | 1班 | 91 |
+------+--------+---------+--------+
12 rows in set (0.00 sec)
#查询数学成绩高于80分,并且是'1班'或者'3班'的学生的学号、姓名、班级、数学成绩
mysql> select stno,stname,stclass,stmath from t_student where stmath>80 and stclass='1班' or stclass='3班';
+------+--------+---------+--------+
| stno | stname | stclass | stmath |
+------+--------+---------+--------+
| 5102 | 王五 | 3班 | 68 |
| 5104 | 钱七 | 1班 | 93 |
| 5112 | 夏 | 3班 | 82 |
| 5114 | 张三 | 1班 | 87 |
| 5115 | 甲乙 | 3班 | 88 |
| 5116 | 南北 | 3班 | NULL |
| 5117 | 前后 | 1班 | 93 |
| 5122 | 周二 | 3班 | 78 |
| 5123 | 丙丁 | 1班 | 91 |
| 5124 | 周六 | 3班 | 58 |
| 5125 | 秋 | 3班 | 89 |
| 5126 | 孙李 | 3班 | 74 |
+------+--------+---------+--------+
12 rows in set (0.00 sec)
mysql> select stno,stname,stclass,stmath from t_student where stmath>80 and (stclass='1班' or stclass='3班');
+------+--------+---------+--------+
| stno | stname | stclass | stmath |
+------+--------+---------+--------+
| 5104 | 钱七 | 1班 | 93 |
| 5112 | 夏 | 3班 | 82 |
| 5114 | 张三 | 1班 | 87 |
| 5115 | 甲乙 | 3班 | 88 |
| 5117 | 前后 | 1班 | 93 |
| 5123 | 丙丁 | 1班 | 91 |
| 5125 | 秋 | 3班 | 89 |
+------+--------+---------+--------+
7 rows in set (0.00 sec)
#成绩为82,87,88,100 的学生的学号、姓名、班级、数学成绩
mysql> select stno,stname,stclass,stmath from t_student where stmath in (82,87,88,100);
+------+--------+---------+--------+
| stno | stname | stclass | stmath |
+------+--------+---------+--------+
| 5107 | 左右 | 2班 | 88 |
| 5112 | 夏 | 3班 | 82 |
| 5114 | 张三 | 1班 | 87 |
| 5115 | 甲乙 | 3班 | 88 |
| 5120 | 冷烬 | 2班 | 100 |
+------+--------+---------+--------+
5 rows in set (0.00 sec)
#找出姓’张‘的?
mysql> select stno,stname from t_student where stname like '张%';
+------+--------+
| stno | stname |
+------+--------+
| 5114 | 张三 |
+------+--------+
1 row in set (0.04 sec)
找出名字以’四‘结束的?
mysql> select stno,stname from t_student where stname like '%四';
+------+--------+
| stno | stname |
+------+--------+
| 5105 | 李四 |
| 5110 | 周四 |
+------+--------+
2 rows in set (0.00 sec)
找出名字第二个字是’五‘的?
mysql> select stno,stname from t_student where stname like '_五%';
+------+--------+
| stno | stname |
+------+--------+
| 5102 | 王五 |
| 5118 | 周五 |
+------+--------+
2 rows in set (0.00 sec)
找出名字第三个字是’五‘的?
mysql> select stno,stname from t_student where stname like '__五%';
Empty set (0.00 sec)
四、排序
#按薪水升序排列
mysql> select * from t_teacher order by tesalary;
+------+--------+----------+
| teno | tename | tesalary |
+------+--------+----------+
| 9801 | 点赞 | 8500 |
| 9804 | 订阅 | 8800 |
| 9802 | 关注 | 9300 |
| 9803 | 收藏 | 13200 |
+------+--------+----------+
4 rows in set (0.00 sec)
#按成绩升序排列,学号降序排列
mysql> select stno,stname,stmath from t_student order by stmath,stno desc;
+------+--------+--------+
| stno | stname | stmath |
+------+--------+--------+
| 5116 | 南北 | NULL |
...........
| 5117 | 前后 | 93 |
| 5104 | 钱七 | 93 |
| 5110 | 周四 | 94 |
| 5118 | 周五 | 99 |
| 5120 | 冷烬 | 100 |
+------+--------+--------+
26 rows in set (0.00 sec)
总结练习:
mysql> select
-> stno,stname,stclass,stmath
-> from
-> t_student
-> where
-> (stmath>=60 and stmath <=100) and (stclass='1班' or stclass='2班')
-> order by
-> stmath desc,stno;
+------+--------+---------+--------+
| stno | stname | stclass | stmath |
+------+--------+---------+--------+
| 5120 | 冷烬 | 2班 | 100 |
| 5118 | 周五 | 2班 | 99 |
| 5110 | 周四 | 2班 | 94 |
| 5104 | 钱七 | 1班 | 93 |
| 5117 | 前后 | 1班 | 93 |
| 5123 | 丙丁 | 1班 | 91 |
| 5107 | 左右 | 2班 | 88 |
| 5114 | 张三 | 1班 | 87 |
| 5101 | 赵钱 | 1班 | 78 |
| 5109 | 周三 | 1班 | 77 |
| 5113 | 赵六 | 2班 | 76 |
| 5119 | 春 | 1班 | 73 |
| 5111 | 周日 | 2班 | 69 |
| 5108 | 周一 | 2班 | 68 |
+------+--------+---------+--------+
14 rows in set (0.00 sec)
未完待续。。。。。。。。。。