0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

超初心者向けSQLノート(SELECT編)

Last updated at Posted at 2024-10-23

僕のように0からSQLを使う人向けに記載していく。
実際は自分用の辞書として用いる予定だが、初心者が読んで有用であるよう心がけて作成するよう心がけている。

はじめに:超役に立つサイト

経験則から、おそらくガンガン実践しながらわからない部分を検索 or youtubeの動画で補充していくのが最も効率が良いので、上記のサイトが有用。問題数が少ないのが難点だが、初心者がやるには十分そう。
これで問題解きながら色々実験していく。問題外のことも試してみると◎

ベーシック

SELECT variable
FROM table_name

条件の指定

SELECT variable
FROM table_name
WHERE variable = value

空欄の指定方法

SELECT variable
FROM table_name
WHERE variable IS NULL

昇順並び替え

SELECT variable
FROM table_name
ORDER BY ;

降順並び替え

...(同上)
ORDER BY DESC

複数指定も可能

....
ORDER BY mogumogu ASC, hamuhamu DESC みたいな。

JOIN 系 

↑とても参考になるサイト。JOINについて解説している

INNER JOIN

条件をもとに、テーブルとテーブルを合体する

2つのテーブルの合体可能なデータのみを抜き出して合体させるやり方が「内部結合」です。

テーブル1:名前、性別 テーブル2:名前、年齢が入っているとする。
どちらにもデータが入っている人について、名前、性別、年齢を表示させる2は以下のようにINNER JOINする。

SELECT
table1.【名前】,
table1.【性別】,
table2.【年齢】
FROM
 table1
INNER JOIN
 table2
ON
 table1.【名前】 = table2.【名前】

ONにて名前が一致するという条件を指定した上でtable1にtable2をINNER JOINしている。

COUNT系

文字通りカウントする。括弧の中に*を入れたり数字(1,2など)を入れる用法があるらしい。後々追記。

基本的な用法

SELECT COUNT ()
FROM table

COUNT()ですべてのrowをカウントする。これを引数として扱うこともできる。

例)
SELECT category_id,
COUNT ()
FROM book_categories
GROUP BY category_id
ORDER BY COUNT() DESC

GROUP BY

データを分類して表示。(グループ化)
例えば「スーパーの商品」テーブルに全商品の品名とそのジャンルがあったとする。
ジャンルごとに表示したければGROUP BYだし、そのジャンルの商品の個数を出すのもGROUP BYらしい。

細々としたメモ

stringを引数として扱う方法

引数としてstringを扱う際は、''で挟む。例は以下の通り。

SELECT *
FROM books
WHERE name = 'ココア'

処理の順序について

GROUP BYは最後になされなければならず、GROUP BYの後にJOINすることはできない。

コメントアウトの方法

-- または/*によってコメントアウトできる。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?