MySQL の一般的なテーブル式
このチュートリアルは、MySQL で一般的なテーブル式を使用する方法を理解することを目的としています。
ほとんどのデータアナリストは、さまざまなクエリの結果を保存して、それらを別々のクエリとマージする必要があります。共通のテーブルの助けを借りて、式を可能にすることができます。これらは、WITH
句と呼ばれることもあります。
これをもっと深く理解してみましょう。
ただし、始める前に、動作する 2つのダミーテーブルを作成します。ここでは、いくつかの行とともにテーブル student_dates
を作成します。
-- create the table student_dates
CREATE TABLE student_dates(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_date date,
primary key(stu_id)
);
同様に、次のクエリを使用して、テーブル student_details
といくつかの定義済み行を作成できます。
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
INSERT
ステートメントを使用した student_dates
および student_details
テーブルへのエントリの挿入
student_dates
は、名前の付いたテーブルを作成し、名前の付いたテーブルを作成します。
INSERT
ステートメントを使用して、数人の生徒のデータを追加してみましょう。この操作は次のように実行できます。
-- insert rows to the table student_dates
INSERT INTO student_dates(stu_firstName,stu_date)
VALUES("Preet",STR_TO_DATE('24-May-2005', '%d-%M-%Y')),
("Dhruv",STR_TO_DATE('14-June-2001', '%d-%M-%Y')),
("Mathew",STR_TO_DATE('13-December-2020', '%d-%M-%Y')),
("Jeet",STR_TO_DATE('14-May-2003', '%d-%M-%Y')),
("Steyn",STR_TO_DATE('19-July-2002', '%d-%M-%Y'));
上記のコードは、student_dates
に学生データを入力できます。次のコマンドは、このテーブルを次のように視覚化できます。
SELECT * from student_dates;
上記のコードブロックは、次の出力を生成します。
stu_id stu_firstName stu_date
1 Preet 2005-05-24
2 Dhruv 2001-06-14
3 Mathew 2020-12-13
4 Jeet 2003-05-14
5 Steyn 2002-07-19
同様に、student_details
テーブルに値を挿入すると、次のクエリを使用してこれを行うことができます。
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
student_details
テーブルは、次のクエリを使用して視覚化できます。
SELECT * from student_details;
出力:
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
MySQL の一般的なテーブル式
それでは、WITH
句を理解してみましょう。
この句を使用して、2つのテーブルをマージし、学生の名と日付を取得できます。これらの 2つのテーブルは、主キーとして機能する stu_id
を使用して照合できます。
この操作は、次のクエリを使用して実行できます。
WITH
cte1 AS (SELECT stu_id, stu_firstName FROM student_details),
cte2 AS (SELECT stu_id, stu_date FROM student_dates)
SELECT stu_firstName, stu_date FROM cte1 JOIN cte2
WHERE cte1.stu_id = cte2.stu_id;
前のクエリでは、次の出力が得られます。
stu_firstName stu_date
Preet 2005-05-24
Rich 2001-06-14
Veron 2020-12-13
Geo 2003-05-14
Hash 2002-07-19
上記のコードブロックから、stu_firstName
列は、stu_id
列の助けを借りて、関連する stu_date
と照合されます。
したがって、WITH
句を使用すると、一般的なテーブル式を効率的に記述して、後で MySQL で使用できる特定の変数にクエリを格納できます。