0
1

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

【SQL】 検索基礎

0
Last updated at Posted at 2020-05-03

基本の検索の構文

1.基本的な検索文の形(SELECT句とFROM句)

SELECT *
FROM テーブル名

FROM句はテーブルを指定。SERECT句はカラムを指定。
*はワイルドガードSERECT句において、全て取得の意味。

2.検索条件の指定(WHERE句とAND演算子・OR演算子・NOT演算子)

WHERE句

WHERE 条件
/*WHERE句の条件には比較演算子を使用することができる。*/
WHERE id = 1
WHERE id <= 5
WHERE first_name = "田中"

AND演算子

WHERE a AND b
/*ageが22以下かつprefectureが神奈川県のレコードを取得*/
SELECT *
FROM users
WHERE age <= 22 AND prefecture = "神奈川県"

OR演算子

WHERE a OR b
/*ageが20以下またはprefectureが東京都であるレコードを取得*/
SELECT *
FROM users
WHERE age <= 20 OR prefecture = "東京都"

NOT演算子

WHERE NOT a
/*prefectureが東京都でないレコードを取得*/
SELECT *
FROM users
WHERE NOT prefecture = "東京都"

3.単一カラムの範囲検索

BETWEEN演算子
 1つのカラムに対し上限と下限を指定して、その範囲に含まれる値を取得する

WHERE カラム名 BETWEEN 下限 AND 上限
/*ageが21以上24以下のuserを探す*/
SELECT *
FROM users
WHERE age BETWEEN 21 AND 24

4.単一カラムのリスト検索

IN演算子
 1つのカラムに対しリストを指定して、そのリストに含まれる値を取得する

WHERE カラム名 IN (1, 2, ……)
/*prefectureが"東京都"もしくは"神奈川県"であるuserを検索*/
SELECT *
FROM users
WHERE prefecture IN ("東京都", "神奈川県")

検索したデータの形成

1.データの結合(COUNAT関数)

COUNAT関数
 複数の文字列を連結させることが出来る関数

CONCAT(文字列1, 文字列2, ……)
/*フルネームで取得できる*/
SELECT CONCAT(family_name, first_name)
FROM users

2.結合した値を別のカラムにする(AS句)

AS句
 SELECT句で取得したデータを別のカラム名に指定できる。

SELECT 取得するデータ AS 別名

SELECT CONCAT(family_name, first_name) AS "名前"
FROM users

3.重複する値の除外する(DISTINCTキーワード)

DISTINCTキーワード
 DISTINCTキーワードで指定したカラムの値が重複する場合、重複する行を除外してデータを取得する。

SELECT DISTINCT カラム名
/*2015年7月1日にシフトに入った人の"user_id"を取得*/
SELECT DISTINCT user_id /*DISTINCTキーワード*/
FROM shifts
WHERE date = "2015-07-01"

4.レコードをグループ化する(GROUP BY句)

GROUP BY句
 指定したカラムの中で、同じ値を持つデータを1つのグループとしてまとめることで、
そのグループ単位で集計した結果を取得することが出来る。

GROUP BY カラム名
/*グループ化された一覧の"user_id"のみを表示*/
SELECT user_id
FROM shifts
WHERE date = "2015-07-01"
GROUP BY user_id

5.レコードの数を数える(COUNT関数)

COUNT関数
 グループ化されたデータに対して使用することが出来る集計関数

SELECT COUNT(カラム名)
/*"2015-07-01"に誰が、何コマずつシフトに入ったか取得*/
SELECT
    user_id, 
    COUNT(*) "コマ数"
FROM shifts
WHERE date = "2015-07-01"
GROUP BY user_id

カラム名の指定でワイルドカードを使用すると、行の値が全てNULLであるレコードも含め、その行数を取得。
AS句でカラム名を"コマ数"に変更。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?