MYSQL研究ノート2のパンチ

MYSQL研究ノート2のパンチ

2.1 MySQLの基本(2)-テーブル操作

#学習コンテンツ#

  1. MySQLテーブルのデータ型
  2. SQLステートメントでテーブルを作成する
    ステートメントの説明
    列のタイプ、サイズ、制約を
    設定する主キーを設定する
  3. SQLステートメントを使用してテーブルにデータを追加します
    ステートメントの説明
    複数の追加方法(列名を指定します。列名は指定しないでください)
  4. SQLステートメントを使用してテーブルを削除します。
    ステートメントは
    DELETE
    DROP
    TRUNCATEの
    さまざまな方法の違いを説明しています
  5. SQLステートメントを使用してテーブルを変更する
    列名を
    変更するテーブル内のデータを変更する

    削除する列を削除する
    新しい列
    新しい行

アイテム3

以下に示すようにコーステーブルを作成します。学生(学生)とクラス(コース)があります。
たとえば、テーブル:
±--------±----------- +
| student | class |
±--------±--------- -+
| A |数学|
| B |英語|
| C |数学|
| D |生物学|
| E |数学|
| F |コンピューター|
| G |数学|
| H |数学|
| I |数学|
| A |数学|
±--------±----------- +

5人以上の生徒がいるすべてのクラスをリストするSQLクエリを記述します。
出力する必要があります:
±-------- +
| class |
±-------- +
| Math |
±-------- +
注:
学生は繰り返し計算。

-テーブルを作成

CREATE TABLE courses
(student VARCHAR(255) NOT NULL,
 class VARCHAR(255) NOT NULL);

-データを挿入

INSERT INTO courses VALUES ('A', 'Math');
INSERT INTO courses VALUES ('B', 'English');
INSERT INTO courses VALUES ('C', 'Biology');
INSERT INTO courses VALUES ('D', 'Math');
INSERT INTO courses VALUES ('E', 'Math');
INSERT INTO courses VALUES ('F', 'Computer');
INSERT INTO courses VALUES ('G', 'Math');
INSERT INTO courses VALUES ('H', 'Math');
INSERT INTO courses VALUES ('I', 'Math');
INSERT INTO courses VALUES ('A', 'Math');

-コード(5人以上の生徒がいるすべてのクラスをリストするSQLクエリを記述します)

SELECT class FROM courses
GROUP BY class
HAVING COUNT(DISTINCT student) >= 5;

-結果
ここに画像の説明を挿入

プロジェクト4:賃金の交換(難易度:簡単)

以下に示すように、m = maleおよびf = femaleの値を持つ給与表を作成します。
例えば:

id 名前 セックス 給料
1 メートル 2500
2 B f 1500
C メートル 5500
4 D f 500

すべてのf値とm値を入れ替えます(たとえば、すべてのf値をmに、またはその逆に変更します)。更新クエリが必要であり、中間一時テーブルはありません。
作成したクエリステートメントを実行すると、次の表が表示されます。

id 名前 セックス 給料
1 f 2500
2 B メートル 1500
C f 5500
4 D メートル 500

-テーブルを作成

CREATE TABLE salary
 (id INT PRIMARY KEY NOT NULL,
NAME VARCHAR ( 10 ) NOT NULL,
sex VARCHAR ( 10 ) NOT NULL,
salary INT NOT NULL
);

-データを挿入

INSERT INTO salary
VALUES
	( 1, "A", "m", 2500 ),
	( 2, "B", "f", 1500 ),
	( 3, "C", "m", 5500 ),
	( 4, "D", "f", 500 );

-コード(データの更新)

UPDATE salary 
SET sex =
CASE
		sex 
	WHEN 'm' THEN
	'f' ELSE 'm' END;

-結果
ここに画像の説明を挿入

2.2 MySQLの基本(3)-テーブル結合

#学習内容#MySQL
エイリアス
INNER JOIN
LEFT JOIN
CROSS JOIN
自己接続
UNION
上記の方法の違いと接続

アイテム5:2つのテーブルを組み合わせる(難易度:簡単)

データベースに表1と表2を作成し、3行のデータ(自分で作成)を挿入します
表1:個人
±------------±-------- +
|列名|タイプ|
±------------±-------- +
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
±-------- ----±-------- +
PersonIdは上記のテーブルの主キーです

表2:アドレス
±------------±-------- +
|列名|タイプ|
±------------±--- ----- + t
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
±------------±-------- +
AddressIdは、上記のテーブルの主キーです

条件を満たすSQLクエリを記述します。個人に住所情報があるかどうかに関係なく、上記の2つのテーブルに基づいて、個人の次の情報を提供する必要があります:FirstName、LastName、City、State

-テーブルを作成(人)

CREATE TABLE person(PersonId INT,
        FirstName VARCHAR(10),
        LastName VARCHAR(10));

-テーブル(アドレス)を作成する

CREATE TABLE address(AddressId INT,
        PersionId INT,
        City VARCHAR(255),
        State VARCHAR(255));

-データを挿入(人と住所)

INSERT INTO person VALUES (1,'kobe','bryant'),
            (2,'lebron','james'),
            (3,'chris','paul');
INSERT INTO address VALUES(001,1,'Los Angeles','california'),
            (002,2,'Cleveland Cavaliers','Ohio'),
            (003,2,'Houston','Texas');

–コード(人物が住所情報を持っているかどうかに関係なく、上記の2つのテーブルに基づいて、人物の次の情報を提供する必要があります:FirstName、LastName、City、State)

SELECT FirstName, LastName, City, State FROM 
        person LEFT JOIN address ON person.PersonId=address.PersionId; 

プロジェクト6:重複するメールボックスを削除する(難易度:簡単)

SQLクエリを記述して、電子メールテーブル内の重複する電子メールアドレスをすべて削除し、重複するメールボックス内のIDが最も小さいアドレスのみを保持します。
±—±-------- +
| Id | Email |
±—±-------- +
| 1 | [email protected] |
| 2 | [email protected] |
| 3 | [email protected] |
±—±-------- +
Idはこのテーブルの主キーです。
たとえば、クエリを実行した後、上記のPersonテーブルは次の行を返す必要があります:
±—±----------------- +
| Id | Email |
±—±- ---------------- +
| 1 | [email protected] |
| 2 | [email protected] |
±—±------------ ----- +

-テーブルを作成

CREATE TABLE email 
( id INT PRIMARY KEY, Email VARCHAR ( 255 ) );

-データを挿入

INSERT INTO email ( id, Email )
VALUES( 1, '[email protected]' ),
	    ( 2, '[email protected]' ),
	    ( 3, '[email protected]' );

-コード(SQLクエリを記述して、電子メールテーブル内の重複するすべての電子メールアドレスを削除し、重複するメールボックスで最小のIDを持つアドレスのみを保持します)

DELETE FROM email 
WHERE id NOT IN 
( SELECT a.min_id FROM ( SELECT MIN( id ) AS min_id FROM email GROUP BY Email ) a );

-結果
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Baby1601tree/article/details/88993115