🗄️
SQL基礎
概要
こんにちは、ゲーム大好き大野です。
今回は、SQL基礎の話です。
WEB開発、ゲーム開発などで絶対あるであろうデータベース。
それを操作するためのSQL。
本記事は、今一度SQLについて整理し、
具体的に理解を促すことを目的とします。
この記事のゴール
以下の理解を得ることをゴールとします。
- 簡単なSQLを調べずに書く事が出来る。
- 人に説明する事が出来る。
SELECT文
基本構文
SELECT [取得したい要素] FROM [使用テーブル];
全ての要素だけ表示する。
SELECT * FROM [使用テーブル];
特定の要素だけ表示する。
今回は、例として「名前」を取得するとします。
SELECT name FROM [使用テーブル];
複数の要素を表示する。
今回は、例として「名前」と「ID」を取得するとします。
SELECT name, id FROM [使用テーブル];
条件を絞る。
FROMの後に「WHERE」を追加すると条件の抽出が行えます。
SELECT * FROM [使用テーブル] WHERE WHERE [条件文];
今回は、例として「名前」が「太郎」という人物を抽出します。
SELECT * FROM [使用テーブル] WHERE name = '太郎';
整列(ソート)をする。
FROMの後に「ORDER BY」を追加すると条件の抽出が行えます。
SELECT * FROM [使用テーブル] ORDER BY [ソートしたい要素] [昇順・降順の指定(省略時昇順)];
「昇順・降順の指定」は、asc(昇順)、desc(降順)で指定できます。
今回は、例として「id」を「数値が多い順(降順)」で全データを表示させます。
SELECT * FROM [使用テーブル] ORDER BY id desc;
「GROUP BY」でグループわけ!
グループ分けに使用する場合は、「GROUP BY」を使用します。
SELECT [取得したい要素] FROM [使用テーブル] GROUP BY [グループ化したい要素];
使用例としては、所属人数や種類を知りたいときに使えます。
SELECT job, count( * ) FROM game_character GROUP BY job;
出力例
+--------------+----------+
| job | count(*) |
+--------------+----------+
| 僧侶 | 1 |
| 勇者 | 1 |
| 戦士 | 2 |
| 魔法使い | 1 |
+--------------+----------+
出力時に名前をつける。
表示時の各要素に名前をつけることが可能。
SELECT [要素名] AS [要素につけたい名前] FROM [使用テーブル];
例として、「name」に「名前」として出力しましょう。
SELECT name AS "名前" FROM [使用テーブル];
DML文
DML = Data Manipulation Languageの略で、
表内の行の追加(INSERT)や削除(DELETE)、列値更新(UPDATE)などを行う際に使用するSQL文
INSERT文
基本構文
INSERT INTO [データを追加したいテーブル名] (要素名A,要素名B) VALUES(要素Aに入れるデータ,要素Bに入れるデータ);
DELETE文
基本構文
DELETE [データを削除したいテーブル名] WHERE [条件文];
WHERE句はなくても大丈夫です。
ない場合は、全てのデータが削除されます。
UPDATE文
基本構文
UPDATE [データを更新したいテーブル名] WHERE [条件文];
WHERE句はなくても大丈夫です。
ない場合は、全てのデータが更新されます。
TRUNCATE文
テーブル内の全てのレコードを全て削除する場合に使用します。
基本構文
TRUNCATE [データを削除したいテーブル名];
TRUNCATE文とDELETE文
- 条件指定の可否
DELETE文ではWHERE句を使って削除対象のレコードを条件指定する事が出来るが、TRUNCATE文では条件を指定することが出来ません。 - 処理速度の違い
テーブル内のレコードを全削除する場合、DELETE文よりもTRUNCATE文を使う方が高速に削除することが可能。 - ロールバックの可否
DELETE文はコミットしていなければロールバック可能ですが、
TRUNCATE文はロールバックすることが出来ません。
TRUNCATE | DELETE | |
---|---|---|
条件指定 | 不可 | 可能 |
処理速度 | 速い | 遅い |
ロールバック | 不可 | 可能 |
Discussion