一、創建數據庫
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(分數)最大記錄,結果如下: