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

SQL SELECT文を覚えよう 初心者向け

Posted at

データベースからデータを取得する際にSELECT文を覚えていないと、
思ったように取得出来ずに時間が経過した経験の持ち主です。

SELECT文では、
・特定のレコードを取得
・〇〇円以上の商品データのみ取得
・あるテキストデータ(例:Tシャツ)が含まれているデータのみ取得
等々覚える必要があることがわかります。

それではSELECT文を学習した内容をアウトプットしていきます。

前提

テーブル box

カラム id name message price time

で登録されていることを前提例で進めていきます。

テーブルから特定のカラムを取得

※テーブルboxからnameのみ取得する場合

sql

SELECT name FROM box;


どのカラムを取得したいの(SELECT name) ①どのテーブルの(FROM box;)

データベースには複数のテーブルがありますので、
テーブル(box)を指定してあげた上でカラム(name)を指定する必要があります。

例えば、

sql

ログイン用データベース作成した場合(テーブルlogin)にも
ユーザー名(カラムname)をつけたとします
商品登録用データベース作成した場合(テーブルtouroku)にも
商品名(カラムname)をつけたとします

nameの区別をつけるため①が必要になるのです。

全てのデータを取得

※テーブルboxから全て取得する場合

sql

SELECT * FROM box;


どのカラムを取得したいの(SELECT *[全て]) ①どのテーブルの(FROM box;)



補足
勿論全てのカラム名を打ち込んでも同じ処理になります

SELECT id name message time FROM box;

特定のデータを取得する

※テーブルboxから「とあるカラム(条件に当てはまる)」を取得する場合

「WHERE(どこの)」が登場します。
SELECT(どのテーブル)FROM(どのカラム)を取得するかを決めた後、
更に「その中でもズボンの含まれるデータのみ取得」する

sql

SELECT * FROM box WHERE name = "ズボン";

テーブルboxの全てのカラムからカラムnameにズボンが入っているデータのみ取得

注意点:数値はクオーテーションで囲むのはダメ!

sql
 
カラムpriceがある場合

SELECT * FROM box WHERE  price= 4800;

比較演算子で特定データを取得

※テーブルboxから「〇〇円以上のデータのみ」を取得する場合

sql

カラムpriceがある場合

SELECT * FROM box WHERE  price >= 5000;


テーブルboxの全てのカラムから 5000円以上のみ取得


SELECT * FROM box WHERE  price <= 5000;


テーブルboxの全てのカラムから 5000円未満のみ取得

ある文字を含むデータを取得 -LIKE演算子-

% = ワイルドカードとして扱う
ワイルドカードとは・・・どんな文字列にも一致する。

LIKE演算子とは・・・指定したカラムが〇〇を含むレコードという条件

sql

LIKE演算子で%を前後につけた場合

SELECT * FROM box WHERE name LIKE = "%ズボン%";

取得できるできない(取得できた×取得できない)

ズボン = 

ダメージズボン = 

ズボンダボダボ = 



LIKE演算子で%を前につけた場合

SELECT * FROM box WHERE name LIKE = "%ズボン";

取得できるできない(取得できた×取得できない)

ズボン = 

ダメージズボン = 

ズボンダボダボ = ×



LIKE演算子で%を後ろにつけた場合

SELECT * FROM box WHERE name LIKE = "ズボン%";

取得できるできない(取得できた×取得できない)

ズボン = 

ダメージズボン = ×

ズボンダボダボ = 


NOT演算子を使い〇〇以外を取得する

※テーブルboxから「〇〇以外、含まないデータのみ」を取得する場合

sql

ズボン以外のデータを全て取得したい場合

SELECT * FROM box WHERE NOT name = "ズボン";

ズボンという単語が入っている以外のデータを全て取得したい場合

SELECT * FROM box WHERE NOT name LIKE "%ズボン%";



③〇〇円を含まないデータを全て取得したい場合

SELECT * FROM box WHERE NOT price > 5000;

要するにそれを除きそれ以外を取得したい場合 NOT演算子を使います。

中身が入ってないカラムデータを取得

※テーブルboxから「中身が入っていない(NULL)」を取得する場合

NULLに関するデータを取得する場合 =イコールはつけてはダメ!

sql
指定したカラムのデータがNULLであるものを取得する場合
SELECT * FROM box WHERE name IS NULL;

指定したカラムデータのNULL以外を取得する場合
SELECT * FROM box WHERE name IS NOT NULL;

ここで以外NOT演算子が出てきました

NULLに関するデータを取得する場合 =イコールはつけてはダメ

AND演算子とOR演算子で複数条件選択しよう

AND演算子
※テーブルboxから「条件1と条件2」共に満たしたデータを検索

OR演算子
※テーブルboxから「条件1または条件2」どちらかを満たすデータを検索

sql
AND演算子
SELECT * FROM box WHERE price >= 2000 AND name = "ズボン";
2000円以上のズボンをテーブルboxから検索

OR演算子
SELECT * FROM box WHERE name = "ズボン" OR name = "Tシャツ";
テーブルboxからズボンまたはTシャツが入っているデータを検索

データを昇順と降順で並べ替える方法 -ORDER BY-

ORDER BY ASC
※昇順

ORDER BY DESC
※降順

sql
price(金額)の大きい順から並べ替えたい
SELECT * FROM box ORDER BY DESC;
小さい順から並べ替えたいなら[ASC]

Tシャツ 6000
ズボン 4800
ズボン 2800
Tシャツ 2000

カラムnameズボンのpriceを大きい順から並べ替えたい
SELECT * FROM box WHERE name ="ズボン" ORDER BY DESC;
小さい順から並べ替えたいなら[ASC]

ズボン 4800
ズボン 2800

何件取得するか決める -LIMIT-

LIMIT = 制限する

WHEREとも、ORDERとも併用することが可能なので、
・上から10件
・下から10件
・カラムnameズボンだけ10件
等々可能

sql
10件だけ取得したい
SELECT * FROM box LIMIT 10;

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?