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