5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SQLを普段あまり書かないエンジニアのためのSQL備忘録

Last updated at Posted at 2017-06-24

はじめに

 私は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句を指定しないとそのテーブルの全データが消し飛びます。

さいごに

 単数の表を操作する例に留めましたが以上になります。複数の表への問い合わせ等はまた別の機会にまとめようと思います。

5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?