#はじめに
昨日から「スッキリわかるSQL入門」を参考に学び始めたのでこちらにまとめていきます。
以前書いた記事と似ている部分がありますが、復習と捉えていただければと思います。
※こちらは教材ではないので、ストーリー性のないまとまり方をしてます。
※参考図書を丸写しするなどはしておりません。
#基本の4大命令
SQLにおける基本的な4大命令文
- SELECT
SELECT カラム名 FROM テーブル名 WHERE 条件~~
- INSERT
INSERT INTO テーブル名(カラム1,カラム2....) VALUES(値1,値2....)
- UPDATE
UPDATE テーブル名 SET カラム=値 WHERE 条件〜〜〜
- DELETE
DELETE FROM テーブル名
#検索結果の加工
WHEREのような修飾の中で、SELECTにしかつけられないものを紹介します。
####DISTINCT
結果表内で内容が重複しているものを除く
SELECT DISTINCT カラム FROM テーブル名
####ORDER BY
並び替えを行う。デフォルトでは昇順になっていて指定は省略できるが、降順にする際は指定が必要。また、複数の列を基準に並び替えを行うことも可能。
なお、列番号による指定も可能。
SELECT カラム名 FROM テーブル
WHERE ~~
ORDER BY カラム名 DESC(ASC)
####OFFSET -FETCH
先頭から○行目を起点に、△行だけ表示する。LIMITとよく似ている。
SELECT * FROM テーブル名
WHERE ~
ORDER BY ~
OFFSET 先頭から除外する行数 ROWS
FETCH NEXT 表示する行数 ROWS ONLY
###集合演算子
検索結果の加工では集合演算子なるものがある。
####UNION
和集合を求める。
SELECT ~~
UNION (ALL)
SELECT ~~
ORDER BY ~~
####EXCEPT
差集合を求める。
SELECT ~~~
EXCEPT
SELECT ~~~
####INTERSECT
積集合を求める。
SELECT ~~
INTERRSECT
SELECT ~~
#演算子と関数
##CASE演算子
これはもうRubyでもC言語でもさんざんぱらやってきたので説明は割愛。
記述例は以下。
SELECT 費目, 出金額,
CASE 費目 WHEN '家賃' THEN '固定費'
WHEN '光熱費' THEN '固定費'
ELSE '変動費'
END AS 出費の分類
FROM 家計簿
SELECT 費目,入金額,
CASE WHEN 入金額 < 10000 THEN '仕送り'
WHEN 入金額 < 20000 THEN 'バイト代'
ELSE `一時的な収入`
END AS 収入ジャンル
FROM 家計簿
##関数
####LENGTH関数
文字列の長さを返す。
LENGTH(引数)
####TRIM
対象文字列の左右の空白を削除
TRIM(文字列)
####REPLACE
置換する
REPLACE(置換対象文字列(カラムとか),置換前の文字列,置換後の文字列)
####SUBSTRING
文字の抽出。
SUBSTRING(対象文字列,抽出開始位置,抽出終了位置)
####CONCAT
文字列を連結する関数
CONCAT(文字列,文字列)
####ROUND
指定桁で四捨五入
ROUND(数値、有効桁数)
--有効桁数は正の場合は少数部分の桁数、負の場合は整数桁数
####TRUNC
指定桁で切り捨てる
TRUNC(数値、有効桁数)
####POWER
べき乗する
POWER(数値、何乗するかを指定する数値)
####CURRENT_DATE
現在の日付を得る関数で、現在の時刻を得たい場合は、CURRENT_TIME関数を使用する。
####COALESCE関数
最初に登場するNULLでない値を返す。これについては、以下が分かりやすい。
書体コードがもともと割り振られており、一部のレコードではそれが欠損してNULLとなっている。
二行目のコアレス関数では、欠損がなければそのままの値を返し、欠損(NULL)していれば1を返す仕組みとなっている。
SELECT 受注日, 受注ID, 文字数,
CASE COALESCE(書体コード, '1')
WHEN '1' THEN 'ブロック体'
WHEN '2' THEN '筆記体'
WHEN '3' THEN '草書体'
END AS 書体名,
FROM 受注
ORDER BY 受注日, 受注ID
#おわり
かなりざっくりまとめました。
引き続き学習を進めていきます。