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(分數)最大記錄,結果如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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