MySQL数据库(内连接)练习题

一、创建数据库

1、打开cmd窗口,执行命令:

mysql -u root -p

按回车键,再输入密码即可登录MySQL环境

2、执行如下命令,创建数据库,数据库名称叫:test(不分大小写)

CREATE DATABASE test character set gbk;

3、执行如下命令,使用创建好的test数据库

use test;

4、进入MySQL的安装目录下的data目录,此时会看到一个创建好的test数据库

5、连接Navicat,也可以查看到创建好的Test数据库

二、创建数据表

1、创建学生表

(1)输入如下命令,创建一个students学生表

CREATE TABLE students(
id INT NOT NULL PRIMARY KEY,
name CHAR(20) NOT NULL,
score INT,
class INT);

(2)连接Navicat,查看创建好的students学生表

(3)往创建好的students学生表中插入数据

INSERT INTO students VALUES
(1,'张三',80,1),
(2,'李四',70,2),
(3,'王五',90,1),
(4,'赵七',60,2);

(4)连接Navicat,查看往students学生表插入数据后的记录

2、创建学科表

(1)输入如下命令,创建一个class学科表

CREATE TABLE class(
id INT NOT NULL PRIMARY KEY,
name CHAR(20) NOT NULL
);

(2)连接Navicat,查看创建好的class学科表

(3)往创建好的class学科表中插入数据

INSERT INTO class VALUES
(1,'语文'),
(2,'数学');

(4)连接Navicat,查看往class学科表插入数据后的记录

三、练习题

查询出每个学科分数最高的学生

(1)输入如下命令,执行查询结果

SELECT C.name AS class,S.name,S.score
FROM students AS S 
	JOIN class AS C
	ON S.class = C.id
WHERE score IN(
	SELECT MAX(score)
	FROM students
	GROUP BY class);

(2)连接Navicat,执行查询语句,查看查询后的结果

四、解析

SELECT C.name AS class,S.name,S.score

—>这里的AS是重命名的意思。也就是用大写字母C来作为class学科表,大写字母S来表示students学生表。
C.name就是表示class学科表里面的name列
S.name就是表示students学生表里面的name列
S.score就是表示students数据表里面的score列

 

FROM students AS S     

           JOIN class AS C

           ON S.class = C.id

—>这里用到了内连接的语法知识:使用的关键字 inner join,其中inner可以省略。

语法:显示内连接: select * from A inner join B on 条件;

这句话意思就是用JOIN来连接students学生表和class课程表,其中用大写字母S代表students学生表,用大写字母C代表class学科表。

—>这里的ON后面跟的是内连接查询的条件,此处的条件是:students学生表里面的class字段值等于class学科表里面的id字段值。

 

WHERE score IN(

—>这里是查询的条件,条件是:score

 

             SELECT MAX(score)

             FROM  students

—>这里的MAX()是一个数据库函数,是用来找出一个记录集中的最大值记录。这里再次使用了SELECT,表示这里是一个嵌套查询,也就是从students学生表里面查询出score(分数)最大的记录。

 

GROUP BY class);
—>这里的GROUP BY表示分组查询和显示,分组的条件是:class。查出来这个最大记录后,利用GROUP BY分组方法,根据class这个记录来分组显示。

● 如果不加GROUP BY class);这句话,这里不会根据任何条件分组展示,会显示出所有score(分数)最大记录,结果如下:

 

● 如果加了GROUP BY class);这句话,这里会展示出每个部门score(分数)最大记录,结果如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章