3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

これからSQLを触る人向けに、SQLの基礎をまとめていくよ。今回記載する内容は、

  • テーブルの作成
  • SQLの基礎(SELECT、JOIN、UNION、UPDATE、DELETEなど)

この辺りを中心にまとめていくよ。

SQL基礎

今回利用するテーブルは以下の3つだよ。

student1

id name club_id
 

student2

id name club_id
 

club

id club_name
 

テーブル作成

テーブルを作成するには、CREATE TABLEを使うよ。

CREATE TABLE テーブル名 (列名1 データ型, 列名2 データ型, 列名3 データ型, ……);

実際に使ってみるよ。上記の3つのテーブルは以下のSQLで作成するよ。

CREATE TABLE student1 (id int, name varchar(255), club_id int);
CREATE TABLE student2 (id int, name varchar(255), club_id int);
CREATE TABLE club (id int, club_name varchar(255));

データ投入

さっき作ったテーブルにデータを投入していくよ。データ投入にはINSERT INTOを使うよ。列名を指定する場合(カラムの順番関係なく、特定のカラムにデータを投入したい場合)はテーブル名の後に列名を指定するよ。

INSERT INTO テーブル名 (列名1, 列名2, ……) VALUES (値1, 値2, ……);

では実際にコードを書くよ。ここではstudent1、student2、clubテーブルを作成するよ。student1student2テーブルは列名を指定して、clubテーブルは列名を指定せずデータを投入するよ。

INSERT INTO student1 (id, name, club_id) 
VALUES (1, 'Qiita Taro', 1), (2, 'Qiita Jiro', 2), (3, 'Qiita Saburo', 1);

INSERT INTO student2 (id, club_id, name) 
VALUES (1, 3, 'Qiita Shiro'), (2, 2, 'Qiita Goro');

INSERT INTO club 
VALUES (1, 'baseball'), (2, 'soccer'), (3, 'tennis');

そうするとこんな感じにデータが投入されているよ。
student1

id name club_id
1  Qiita Taro 1
2 Qiita Jiro 2
3 Qiita Saburo 1

student2

id name club_id
1  Qiita Shiro 3
2 Qiita Goro 2

club

id club_name
1 baseball
2 soccer
3 tennis

データ取得

先ほどデータを投入したテーブルからデータを取得するよ。データの取得にはSELECTを使うよ。

SELECT 取得したい列名(全て取得したい場合は*) FROM テーブル名;

では実際に使っていくよ。今回はstudent1テーブルからidnameを取得するよ。

SELECT id,name FROM student1;

取得結果はこうだよ。

id name
1  Qiita Taro
2 Qiita Jiro
3 Qiita Saburo

また、id=1のデータだけ取得したい場合はWHEREを使うよ。

SELECT 取得したい列名(全て取得したい場合は*) FROM テーブル名 WHERE 条件式;

実際に使ってみるよ。今回はWHEREでid=1を指定してデータを取得するよ。

SELECT * FROM student1 WHERE id = 1;

取得結果はこんな感じ。

id name club_id
1  Qiita Taro 1

テーブル結合

次にstudent1clubテーブルを結合して、student1からidnameを、clubテーブルからclub_nameを取得するよ。テーブル結合はJOINを使うよ。JOINにはいろいろ種類があるけど、ここではよく使われるINNER JOINを使うよ。

SELECT テーブル名.列名, テーブル名.列名 ... FROM テーブル名1 INNER JOIN テーブル名2 ON 条件式;

実際に使っていくよ。

SELECT student1.id, student1.name, club.club_name 
FROM student1 
INNER JOIN club ON student1.club_id = club.id;

取得結果はこんな感じ。

id name club_name
1  Qiita Taro baseball
2 Qiita Jiro soccer
3 Qiita Saburo baseball

データ更新

データの更新にはUPDATEを用いるよ。

UPDATE テーブル名 SET 列名=値 WHERE 条件;

ここでは、student1テーブルのQiita Saburo野球部からサッカー部に転部したとするよ。そして、部活動が変更出来たかをSELECT文で確認するよ。

// データ更新
UPDATE student1 SET club_id = 2 WHERE id = 3;

// データ確認
SELECT student1.id, student2.name, club.club_nam 
FROM student1 
INNER JOIN club ON student1.club_id = club.id;

取得結果はこんな感じ。

id name club_name
1 Qiita Taro baseball
2 Qiita Jiro soccer
3 Qiita Saburo soccer

取得データの結合

UNIONは複数のテーブルから得たデータを結合することができるよ。
UNION ALLUNIONがあるけど、構文は基本的に同じでだよ。
違いは、

  • UNION:重複した行を除いて表示
  • UNION ALL:重複した行もすべて表示
  • だよ。
    構文は次の通り。
SELECT 列名 FROM テーブル名1 UNION SELECT 列名 FROM テーブル名2;

今回はテーブルstudent1student2のテーブルからサッカー部のメンバーを取得し結合するよ。

SELECT student1.name, club.club_name 
FROM student1 
INNER JOIN club ON student1.club_id = club.id 
WHERE student1.club_id = 2 
UNION
SELECT student2.name, club.club_name 
FROM student2 
INNER JOIN club ON student2.club_id = club.id 
WHERE student2.club_id = 2 

取得結果はこんな感じ。

name club_name
Qiita Jiro soccer
Qiita Saburo soccer
Qiita Goro soccer

データ削除

最後に、データの削除はDELETEを使うよ。DELETEWHERE句を書かないと、テーブルの全レコードが削除されてしまうので注意が必要だよ。

DELETE FROM テーブル名 WHERE 条件;

今回はstudent1テーブルからQiita Saburoを削除するよ。

// データ削除
DELETE FROM student1 WHERE id = 3;
// データ確認
SELECT * FROM student1;
id name club_id
1  Qiita Taro 1
2 Qiita Jiro 2

このようにしっかりデータが削除されたことがわかるね。
ちなみに、WHERE句を指定しないと、以下のようにデータがすべて消えるよ(テーブルは削除されない。テーブルごと削除したい場合はDROP TABLE テーブル名)。

id name club_id
 

まとめ

SQLの基本的な操作をまとめたよ。これである程度はSQLを使うことができるよ。
まだまだSQLを自在に使いこなすのは難しい、、、。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?