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?

More than 1 year has passed since last update.

【SQL基礎】データの取得・加工

Posted at

はじめに

最近SQLの学習を始めたので、その内容を整理していきます。

本記事の概要

どんな人に読んで欲しいか

  • SQLの学習を始めたばかりの人
  • データの取得・加工の基本的な操作方法をまだ整理できていない人

この記事に書くこと

  • SQLを使ってデータベースから特定のデータを取得する基本的なクエリの書き方
  • 取得したデータを並び替えるなど、基本的なデータの加工方法

目次

  • SELECT
  • FROM
  • WHERE
  • ORDER BY, LIMIT

今回用いるテーブルデータ

お惣菜屋さんの売り上げデータと想定します。販売した商品名と販売者名、売り上げ金額から構成されています。

sales_data

food name sales
ローストビーフ あさひ 2000
ハンバーグ たかと 1000
ローストビーフ たつや
ハンバーグ ゆうき 1000
ローストビーフ たかと 3000
ローストビーフ たつや 1000
ハム たかと 500

具体的な内容

SELECT

まず一番初めにSELECTを使ってテーブルのどのカラムからデータを取得するかを指定します。例えば、foodのカラムを取り出したいときは、

SELECT food

とします。
しかし、このままではデータを取得することはできません。どのテーブルデータなのかを指定していないからです。そこで次のFROMを使います。

FROM

先ほどカラムを指定するためにSELECTを使用しました。ただ、カラムを指定するには、どのテーブルデータから取り出すのかを明示しなければなりません。その時に用いるのがFROMです。今回であれば、sales_dataのテーブルを使っているので次のように指定します。

SELECT food
FROM sales_data;

最後にセミコロン;がついていると思います。これはここまでがクエリであるということをデータベースに伝える役割をしています。なので、最後に必ずセミコロンを忘れないようにします。

個人的にはSELECTFROM順番逆の方がわかりやすいなと思ったのですが、最初にSELECTを持ってくるらしいです。

※クエリ:データベースに対して情報を取得したり、データを操作するための要求や命令文のことを指します。

実行結果

food
ローストビーフ
ハンバーグ
ローストビーフ
ハンバーグ
ローストビーフ
ローストビーフ
ハム

このようにfoodのカラムを取り出すことができました。

複数のカラムを取り出したい時

この場合はSELECTの時に複数のカラムを指定するだけでOKです。

SELECT food, name
FROM sales_data;

実行結果

food name
ローストビーフ あさひ
ハンバーグ たかと
ローストビーフ たつや
ハンバーグ ゆうき
ローストビーフ たかと
ローストビーフ たつや
ハム たかと

全てのカラムを取り出したい時

この場合は*を用いてSELECT *とすればOKです。

WHERE

これまではテーブルのカラムを指定してデータを取り出す基本的な操作のみでした。ここからは、さらに条件を絞ってデータを取り出す方法を紹介します。その基本となるのがWHEREです。

WHEREで用いる主なメソッドの一覧

  • 等号:=
  • 比較演算子:<=, <, >, >=
  • LIKE演算子:name LIKE
  • ワイルドカード:%
  • NOT演算子:NOT
  • IS NULL
  • AND,OR演算子:AND, OR

ここでは特に、LIKE演算子とワイルドカード、IS NULL、AND,OR演算子について整理します。

LIKE演算子とワイルドカード

カラム内の特定の文字列と一致するデータだけを取り出したいときに用います。例えば、sales_dataの「たかと」だけのデータを取り出したい時は以下のように実行します。

SELECT *
FROM sales_data
WHERE name LIKE '%たかと%';

実行結果

food name sales
ハンバーグ たかと 1000
ローストビーフ たかと 3000
ハム たかと 500

このようにして「たかと」のみのデータを取得することができました。この時%たかと%と指定しましたが、%のことをワイルドカードと呼びます。ワイルドカードを使うことで指定した文字列を含むデータを取得することができます。

ワイルドカードの使い方
  • '%指定した文字列%':指定した文字列が含むデータを全て取得する
  • '指定した文字列%':前方一致(%以降はどんな文字列にも一致する)
  • '%指定した文字列':後方一致(%以前はどんな文字列にも一致する)

IS NULL

何もデータが入っていないデータを取り出すためのものになります(NULLはデータが入っていないという意味)。今回であれば、このように

food name sales
ローストビーフ あさひ 2000
ハンバーグ たかと 1000
ローストビーフ たつや
ハンバーグ ゆうき 1000
ローストビーフ たかと 3000
ローストビーフ たつや 1000
ハム たかと 500

「たつや」の売り上げが記録されていません。このデータを取り出そうと思ったら、

SELECT *
FROM sales_data
WHERE sales IS NULL;

実行結果

food name sales
ローストビーフ たつや

逆に記録されているもののみのデータを取り出すときはNOTを使って次のように書きます。

SELECT *
FROM sales_data
WHERE sales IS NOT NULL;

実行結果

food name sales
ローストビーフ あさひ 2000
ハンバーグ たかと 1000
ハンバーグ ゆうき 1000
ローストビーフ たかと 3000
ローストビーフ たつや 1000
ハム たかと 500

AND,OR演算子

WHEREに複数の条件を指定したいときに用います。ANDであればWHERE 条件1 AND 条件2とすることで、条件1と条件2を共に満たすデータを取り出すことができます。

例えば、商品がローストビーフかつ、売り上げが2000円以上のデータを取り出したいときはANDを使って次のように条件を指定します。

SELECT *
FROM sales_data
WHERE food = 'ローストビーフ' AND sales >= 2000;

実行結果

food name sales
ローストビーフ あさひ 2000
ローストビーフ たかと 3000

ORに関してもANDと同様にして条件を指定します。例えば、「あさひ」または「たかと」のデータを取り出したいときは、

SELECT *
FROM sales_data
WHERE name = 'あさひ' OR name = 'たかと';

実行結果

food name sales
ローストビーフ あさひ 2000
ハンバーグ たかと 1000
ローストビーフ たかと 3000
ハム たかと 500

ORDER BY, LIMIT

この2つはデータの並び替えをしたい時に用います。

ORDER BY

例えば、売り上げの高い順に並べたいときは、次のように書きます。

SELECT *
FROM sales_data
ORDER BY sales DESC;

実行結果

food name sales
ローストビーフ たかと 3000
ローストビーフ あさひ 2000
ハンバーグ たかと 1000
ハンバーグ ゆうき 1000
ローストビーフ たつや 1000
ハム たかと 500

降順:DESC
昇順:ASC

また、ORDER BYWHEREと併用が可能です。

Pythonのsorted()メソッドのような感じ。

LIMIT

これは最大で何件データを取得するかを指定する際に使います。先頭から数えていくつだけとるといったような感じです。Pythonの.head()のようなイメージです。クエリの末尾に記述することで、取得するデータの数を指定できます。

先ほどのORDER BYで並べ替えたデータの先頭3件を取り出すとすると、

SELECT *
FROM sales_data
ORDER BY sales DESC
LIMIT 3;

実行結果

food name sales
ローストビーフ たかと 3000
ローストビーフ あさひ 2000
ハンバーグ たかと 1000

まとめ

今回はSQLの基本の基本を整理しました。
まず最初にSELECTで取り出したいカラムを指定、次にFROMを使ってどのテーブルデータなのかを指定します。その後にWHERELIMITなどを用いて条件を追加していくという流れになります。

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?