自分用sqlまとめ(ちょっとずつ更新予定)
ここを参考にまとめます。
基本
データ(テーブル)の取得
- *はすべてのカラムを示す
SELECT columnx, columny, ... FROM table
データの追加
INSERT INTO table (column1, column2, column3) VALUES(value1, value2, value3)
データの更新
UPDATE table SET columnx = valuex, columny = valuey, ... WHERE columnz = valuez
データ削除
DELETE FROM table WHERE columnx = valuex
文字列検索
- % 1文字以上の任意の文字列
- _ 一文字の任意の文字列
WHERE columny like "_mojiretsu%"
条件式の拡張(ANDとOR)
WHERE columnx = valuex AND columny = valuey OR columnz = valuez
日付指定
WHERE date BETWEEN '2001-01-01' AND '2020-02-22'
ちょっと面倒
テーブルの結合
- table1 a テーブル名の省略
- JOIN 結合
- USING 共通項の指定
SELECT a.value1, b.value2, b.value3 FROM table1 a JOIN table2 b USING (value2)
テーブルの結合
和集合
SELECT x, y. z FROM table1 UNION SELECT x, y, z FROM table2 ORDER BY 2, 3, 1
差集合
前者のテーブルのみに存在する項目を抽出
SELECT column FROM table1 EXCEPT SELECT column FROM table2
積集合
両方のテーブルに存在する項目を抽出
SELECT column FROM table1 INTERSECT SELECT column FROM table2
複数候補から絞り込む
SELECT * FROM table WHERE column IN(value1, value2)
他のテーブルの項目を条件に絞り込む(IN)
SELECT x.* FROM tablex x WHERE x.key IN ( SELECT y.key FROM tabley y )
他のテーブルの項目を条件に絞り込む(EXISTS)
SELECT x.* FROM tablex x WHERE EXISTS ( SELECT column FROM tabley y WHERE x.key = y.key )
IDでソートして先頭行だけ抽出
SELECT * FROM table ORDER BY id DESC LIMIT 1
特殊
妖怪1増やす
UPDATE table SET hoge = hoge + 1 WHERE key = 1;