4
5

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 3 years have passed since last update.

[SQL]すっきりわかるSQL入門のまとめ①

Last updated at Posted at 2021-06-15

#はじめに
昨日から「スッキリわかる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 カラム名 DESCASC

####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

#おわり

かなりざっくりまとめました。
引き続き学習を進めていきます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?