MySQLデータベース(内部接続)の練習用の質問

1つは、データベースを作成する

1. cmdウィンドウを開き、次のコマンドを実行します。

mysql -u root -p

Enterキーを押し、パスワードを入力してMySQL環境にログインします

2.次のコマンドを実行してデータベースを作成します。データベース名は次のとおりです。test(大文字と小文字は区別されません)

CREATE DATABASE test character set gbk;

3.作成したテストデータベースを使用するには、次のコマンドを実行します

use test;

4. MySQLインストールディレクトリの下にデータディレクトリを入力すると、作成されたテストデータベースが表示されます。

5. Navicatに接続し、作成したテストデータベースを表示することもできます

2つ目は、データテーブルを作成することです。

1.学生テーブルを作成します

(1)次のコマンドを入力して、学生テーブルを作成します

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

(2)Navicatを接続して、作成された学生テーブルを表示します

(3)作成したstudentsテーブルにデータを挿入します

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

(4)学生テーブルにデータを挿入した後、Navicatを接続してレコードを表示します

2.規律テーブルを作成します

(1)次のコマンドを入力して、クラスサブジェクトテーブルを作成します

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

(2)Navicatに接続し、作成されたクラス規律テーブルを表示します

(3)作成したクラスサブジェクトテーブルにデータを挿入します

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

(4)クラスサブジェクトテーブルにデータを挿入した後、Navicatを接続してレコードを表示します

3つ、練習用の質問

各科目で最高のスコアを持つ学生を見つけます

(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に接続し、クエリステートメントを実行して、クエリ結果を表示します

4、分析

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

—>ここでのASは、名前の変更を意味します。つまり、大文字のCはクラスのサブジェクトテーブルとして使用され、大文字のSは学生のテーブルを表すために使用されます。
C.nameは、クラスサブジェクトテーブルの名前列を意味し
ます
。S.nameは、studentsテーブルのname列を意味します。S.scoreは、studentsデータテーブルのスコア列を意味します。

 

Sとしての学生から     

           クラスASCに参加

           ON S.class = C.id

—>ここでは、内部結合の文法知識が使用されます。キーワード内部結合が使用され、内部は省略できます。

構文:display inner join:select * from A inner join B on condition;

この文の意味は、JOINを使用して、学生テーブルとクラスカリキュラムテーブルを接続することです。大文字のSは学生の学生テーブルを表し、大文字のCはクラスの科目テーブルを表します。

—>ここでONの後に、内部結合クエリの条件が続きます。ここでの条件は次のとおりです。studentsテーブルのclassフィールドの値が、classsubjectテーブルのidフィールドの値と等しい。

 

WHEREスコアIN(

—>クエリ条件は次のとおりです。条件は次のとおりです。スコア

 

             SELECT MAX(スコア)

             学生から

—> MAX()は、レコードセット内の最大レコードを見つけるために使用されるデータベース関数です。ここでもSELECTが使用されており、これがネストされたクエリであることを示しています。つまり、スコア(スコア)が最も高いレコードがstudentsテーブルからクエリされます。

 

GROUP BYクラス);
—>ここで、GROUP BYはクエリと表示をグループ化することを意味し、グループ化条件は次のとおりです。最大のレコードを見つけたらGROUP BYグループ化メソッドを使用して、クラスレコードに従ってグループ化して表示します。

GROUPBYクラスを追加しない場合);この文は条件に応じてグループで表示されず、すべてのスコア(スコア)レコードが表示されます。結果は次のとおりです。

 

GROUPBYクラスを追加した場合);この文は、各部門の最大スコア(スコア)レコードを示します。結果は次のようになります。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_43184774/article/details/106142266