创建mydb11_stu并使用
mysql> create database mydb11_stu;
Query OK, 1 row affected (0.00 sec)mysql> use mydb11_stu;
Database changed
创建student表
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)
创建score表
mysql> CREATE TABLE score (
-> id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,
-> stu_id INT(10) NOT NULL,
-> cname VARCHAR(20),
-> grade INT(10)
-> );
Query OK, 0 rows affected, 3 warnings (0.02 sec)
向student表添加数据
mysql> insert into student values (901, '张三丰', '男', 2002, '计算机系', ' 北京市海淀区');
Query OK, 1 row affected (0.03 sec)mysql> insert into student values (902, '周全有', '男', 2000, '中文系', ' 北京市昌平区');
Query OK, 1 row affected (0.01 sec)mysql> insert into student values (903,'张思维','女',2003,'中文系','湖南省 永州市');
Query OK, 1 row affected (0.01 sec)mysql> insert into student values (904, '李广昌', '男', 1999, '英语系', '辽 宁省皋新市');
Query OK, 1 row affected (0.03 sec)
mysql> insert into student values (905, '王翰', '男', 2004, '英语系', '福建 省厦门市');
Query OK, 1 row affected (0.01 sec)
mysql> insert into student values (906, '王心凌', '女', 1998, '计算机系', ' 湖南省衡阳市');
Query OK, 1 row affected (0.01 sec)
向score表添加数据
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, 902, '计算机', 65);
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, '英语', 83);
Query OK, 1 row affected (0.00 sec)
mysql> insert into score values (NULL, 906, '计算机', 49);
Query OK, 1 row affected (0.01 sec)
1. 分别查询student表和score表的所有记录
mysql> select * from score;
+----+--------+--------+-------+
| id | stu_id | cname | grade |
+----+--------+--------+-------+
| 1 | 901 | 计算机 | 98 |
| 2 | 901 | 英语 | 80 |
| 3 | 902 | 计算机 | 65 |
| 4 | 902 | 中文 | 88 |
| 5 | 903 | 中文 | 95 |
| 6 | 904 | 计算机 | 70 |
| 7 | 904 | 英语 | 92 |
| 8 | 905 | 英语 | 94 |
| 9 | 906 | 英语 | 83 |
| 10 | 906 | 计算机 | 49 |
+----+--------+--------+-------+
10 rows in set (0.00 sec)
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)
2. 查询student表的第2条到5条记录
mysql> # 2. 查询student表的第2条到5条记录
mysql> select * from student limit 4 offset 1;
+-----+--------+------+-------+------------+---------------+
| id | name | sex | birth | department | address |
+-----+--------+------+-------+------------+---------------+
| 902 | 周全有 | 男 | 2000 | 中文系 | 北京市昌平区 |
| 903 | 张思维 | 女 | 2003 | 中文系 | 湖南省 永州市 |
| 904 | 李广昌 | 男 | 1999 | 英语系 | 辽宁省皋新市 |
| 905 | 王翰 | 男 | 2004 | 英语系 | 福建省厦门市 |
+-----+--------+------+-------+------------+---------------+
4 rows in set (0.00 sec)
3. 从student表中查询计算机系和英语系的学生的信息
mysql> # 3. 从student表中查询计算机系和英语系的学生的信息
mysql> select * from student
-> where department IN ('计算机系', '英语系');
+-----+--------+------+-------+------------+--------------+
| id | name | sex | birth | department | address |
+-----+--------+------+-------+------------+--------------+
| 901 | 张三丰 | 男 | 2002 | 计算机系 | 北京市海淀区 |
| 904 | 李广昌 | 男 | 1999 | 英语系 | 辽宁省皋新市 |
| 905 | 王翰 | 男 | 2004 | 英语系 | 福建省厦门市 |
| 906 | 王心凌 | 女 | 1998 | 计算机系 | 湖南省衡阳市 |
+-----+--------+------+-------+------------+--------------+
4 rows in set (0.00 sec)
4. 从student表中查询年龄小于22岁的学生信息
mysql> select * from student where birth > 2003;
+-----+------+------+-------+------------+--------------+
| id | name | sex | birth | department | address |
+-----+------+------+-------+------------+--------------+
| 905 | 王翰 | 男 | 2004 | 英语系 | 福建省厦门市 |
+-----+------+------+-------+------------+--------------+
1 row in set (0.00 sec)
5. 从student表中查询每个院系有多少人
mysql> # 从student表中查询每个院系有多少人
mysql> select department,count(*) as student_count from student group by dep
artment;
+------------+---------------+
| department | student_count |
+------------+---------------+
| 计算机系 | 2 |
| 中文系 | 2 |
| 英语系 | 2 | +------------+---------------+
3 rows in set (0.00 sec)
6. 从score表中查询每个科目的最高分
mysql> # 从score表中查询每个科目的最高分
mysql> select cname,max(grade) as max_grade from score group by cname;
+--------+-----------+
| cname | max_grade |
+--------+-----------+
| 计算机 | 98 |
| 英语 | 94 |
| 中文 | 95 |
+--------+-----------+
3 rows in set (0.00 sec)
7. 查询李广昌的考试科目(cname)和考试成绩(grade)
mysql> select s.name,sc.cname,sc.grade
-> from student s
-> join score sc on s.id=sc.stu_id
-> where s.name='李广昌';
+--------+--------+-------+
| name | cname | grade |
+--------+--------+-------+
| 李广昌 | 计算机 | 70 |
| 李广昌 | 英语 | 92 |
+--------+--------+-------+
2 rows in set (0.00 sec)
8. 用连接的方式查询所有学生的信息和考试信息
mysql> select s.*, sc.*
-> from student s
-> join score sc on s.id = sc.stu_id;
9. 计算每个学生的总成绩
mysql> select s.id, s.name, sum(sc.grade) as total_grade
-> from student s
-> join score sc on s.id = sc.stu_id
-> group by s.id, s.name;
10. 计算每个考试科目的平均成绩
mysql> select cname,avg(grade) as average_grade
-> from score
-> group by cname;
11. 查询计算机成绩低于95的学生信息
mysql> select s.*
-> from student s
-> join score sc on s.id=sc.stu_id
-> where sc.cname='计算机' and sc.grade<95;
12. 将计算机考试成绩按从高到低进行排序
mysql> select s.*, sc.grade
-> from student s
-> join score sc on s.id=sc.stu_id
-> where sc.cname='计算机'
-> order by sc.grade desc;
13. 从student表和score表中查询出学生的学号,然后合并查询结果
mysql> select id as student_id from student
-> union
-> select stu_id from score;
14. 查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
mysql> select s.name,s.department,sc.cname,sc.grade
-> from student s
-> join score sc on s.id = sc.stu_id
-> where s.name like '张%' or s.name like '王%';
15. 查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
mysql> select s.name,s.birth,s.department,sc.cname,sc.grade
-> from student s
-> join score sc on s.id=sc.stu_id
-> where s.address like'%湖南%';