はじめに
私はWebエンジニアでありながら普段あまりSQLを書くことがありません。だからこそ、突発的にSQLを書く際には毎回ググって文法を確認しています。毎回ぐぐるのはさすがにだるいのもあり、今回は私のような境遇の人でもさらっと見返せるようなSQL備忘録を記載したいと思います。
ちなみに、DBMSはMySQLを用いていることが前提です。また、[hoge]
には任意のワードなり数値なりを入れることとします。
Create
基本的な文法
insert.sql
# 新しいレコードを追加(※1)
INSERT INTO [table_name] ([column_name],[column_name],[column_name],[column_name])
VALUES ([value],[value],[value],[value])
# 新しいレコードを複数追加
INSERT INTO [table_name] ([column_name],[column_name],[column_name],[column_name])
VALUES ([value],[value],[value],[value]),
([value],[value],[value],[value]),
([value],[value],[value],[value]),
([value],[value],[value],[value])
# SELECT文と組み合わせてレコードを追加
INSERT INTO [table_name]
SELECT * FROM [table_name] WHERE [column_name] = [value]
補足事項
(※1)
全カラムのうち一部に値を指定してデータを追加することも可能
Read
基本的な文法
select.sql
# あるカラムのデータを抽出
SELECT [column_name] FROM [table_name]
# 複数のカラムのデータを抽出
SELECT [column_name],[column_name],[column_name] FROM [table_name]
# すべてのカラムのデータを抽出
SELECT * FROM [table_name]
# あるカラムの値にある数値を乗算して抽出(※2)
SELECT [column_name] * [number] FROM [table_name]
# あるカラムが特定の値であるデータを抽出(※3)
SELECT * FROM [table_name] WHERE [column_name] = [value]
# 複数条件を満たすデータを抽出(※4)
SELECT * FROM [table_name] WHERE [column_name] = [value] AND [column_name] = [value]
# データを昇順にソートして抽出
SELECT * FROM [table_name] ORDER BY [column_name]
# データを降順にソートして抽出
SELECT * FROM [table_name] ORDER BY [column_name] DESC
# あるカラムの値の総和を抽出(※5)
SELECT SUM([column_name]) FROM [table_name]
# あるカラムの値の最大値と最小値を抽出
SELECT MAX([column_name]),MIN([column_name]) FROM [table_name]
# 範囲指定してデータを抽出
SELECT * FROM [table_name] WHERE [column_name] BETWEEN [number] AND [number]
# パターン検索してデータを抽出(※6)
SELECT * FROM [table_name] WHERE [column_name] LIKE '%[word]%'
# 特定のカラムでグループ化してデータを抽出
SELECT [column_name],AVG([column_name]) FROM [table_name] GROUP BY [column_name]
# グループ化してテーブルから条件選択
SELECT [column_name] FROM [table_name] GROUP BY [column_name] HAVING AVG([column_name]) <= [number]
# 重複行が削除された結果を抽出
SELECT DISTINCT [column_name] FROM [table_name]
補足事項
(※2)
主な算術演算子 | 意味 |
---|---|
+ | 加算 |
- | 減算 |
* | 乗算 |
/ | 除算 |
(※3)
主な比較演算子 | 意味 |
---|---|
= | 左辺が右辺と等しい |
< | 左辺が右辺より小さい |
<= | 左辺が右辺以下 |
> | 左辺が右辺より大きい |
>= | 左辺が右辺以上 |
<> | 左辺と右辺が等しくない |
(※4)
主な論理演算子 | 意味 |
---|---|
AND | かつ |
OR | または |
NOT | 否定 |
(※5)
集合関数 | 意味 |
---|---|
SUM | 総和を求める |
MAX | 最大値を求める |
MIN | 最小値を求める |
AVG | 平均値を求める |
COUNT | 総数を求める |
(※6)
LIKE記述 | 意味 |
---|---|
% | 任意の文字列 |
_ | 任意の一文字 |
Update
基本的な文法
update.sql
# 特定の条件を持つレコードを更新(※7)
UPDATE [table_name] SET [column_name] = [value],[column_name] = [value] WHERE [column_name] = [value]
補足事項
(※7)
WHERE句で用いるカラムについて特に指定がなければ主キーを指定しよう。思わぬレコードが変更されることを防ぐためです。
Delete
基本的な文法
delete.sql
# 特定の条件を持つレコードを更新(※7)
DELETE [table_name] WHERE [column_name] = [value]
補足事項
(※8)
WHERE句は基本的に指定しよう。WHERE句を指定しないとそのテーブルの全データが消し飛びます。
さいごに
単数の表を操作する例に留めましたが以上になります。複数の表への問い合わせ等はまた別の機会にまとめようと思います。