SQL プログラミング

【SELECTの基本】データをどうやって取得するの?

スポンサーリンク

SQLec01

頼れる人
いろんなデータが入っている中から、欲しいデータを取得する方法を教えるよ
まずは簡単にデータベースの基本から説明します

SQLを触ったことがない人、少しは知っているけどもう一度おさらいしたい人は、どうやってデータを取得するんだろう?ということが理解できるようになるよ
ぴよちゃん

もうすでにSELECT文を使ったデータ取得の方法は知ってるよ!という人は、ここは読まなくていいですよ
こけさん

データベースってなに?

 社員の名前や住所・電話番号・生年月日や、お店で購入した商品・金額・買った日時などが入っているところをデータベースと言います。
 名前や住所などそれぞれの項目にわかれて入っていますが、この項目を列(カラム)と呼ばれます。
 1人ずつのデータがわかれて入っており、これを行(レコード)と呼ばれます。

 上の図のように、社員の情報がカラム・レコードで仕切られている中に入っています。
 すべての社員の名前をほしいときには、名前のカラムを参照しますし、山田太郎さんの情報がほしいときには、1番目のレコードを参照します。

 社員の情報や、お店で購入した情報はそれぞれの表(テーブル)と呼ばれる中に入っています。

データベースからデータを取得しよう(SELECT文)

DataBase_arrow1

最初にデータベースの「どこから何を」取得するのかを確認しましょう。

 上の社員テーブル(employee)から、全社員の名前を取得してみましょう。 
 ・どこのテーブルから?・・・社員テーブル(employee)
 ・何のカラムを?   ・・・社員テーブルの名前(name)

データを取得するには、「SELECT文」を使います。

FROM」でどこから取得するのかを指定します。
社員テーブル(employee)から取得するので、FROM employeeと書きます。

SELECT」で何のカラムを取得するかを指定します。
社員テーブルの名前(name)を取得するので、SELECT nameと書きます。

// 社員テーブルから名前 [name] を取得
SELECT name
FROM employee;

複数のカラムを取得するには…

先ほどは社員テーブルの中から1つのカラムを取得する方法をお伝えしました。
2つ以上のカラムを取得するには、対象のカラムをカンマ区切りでつなげて指定するだけでOKです。
社員テーブルから、名前と住所を取得したいときには、このように書きます。

// 社員テーブルから名前 [name] と住所 [address] を取得
SELECT name
      ,address
FROM employee;

すべてのカラムを取得するには…

テーブルの中にあるすべてのカラムを取得したいときには、すべてのカラムを書いてもOKですが、このようにアスタリスク(*)で書くことでもできます。

// 社員テーブルからすべてのカラムを取得
SELECT *
FROM employee;

それぞれのデータの型を知ろう

カラムには、保存するデータの種類に合った型というのがあります。

「数値型」「文字列型」「日付型」などのいろんなデータ型があります。
どういった種類のデータを入れるかによって、それに見合ったデータ型をカラムごとに決めています。

金額や数量といった数値しか入れないカラムは「数値型」、名前や住所といった文字を入れるカラムは「文字列型」、登録した日や誕生日のような日付を入れるカラムは「日付型」となります。
指定されたデータ型に沿ったデータしか入れることができません。例えば、数値型のカラムに文字や日付を入れることはできません。

データ型には、以下のような種類があります。
データベースの種類によって、データ型の名前が違いますので、注意しましょう。

  • 文字列型(CHAR・VARCHAR)
  • 数値型(NUMBER・INTEGER・LONG)
  • 日付型(DATE・TIMESTAMP)

上記だけではなく、これ以外にもいろいろなデータ型があります。

欲しいデータだけを取得しよう(WHERE句)

DataBase_arrow2

テーブルの中からほしいデータだけを取得するには「WHERE句」を使います。

WHEREのあとに、絞り込みしたいカラム名と条件を指定します。
社員テーブルからIDが1と等しいデータを取得するには、このように書きます。〇〇と△△が等しいという条件を作成するときには、イコール(=)を使います。

// 社員テーブルからIDが1のレコードを取得
SELECT *
FROM employee
WHERE id = 1;

〇〇以上や〇〇未満でデータを取得するには…

〇〇と△△が等しいという条件を作成するときには、イコール(=)を使いました。
〇〇より大きい△△という条件のときには、>を使います。また、〇〇が△△以上という条件のときは、>と=を使います。
逆に〇〇より小さい△△という条件のときには、<を使います。〇〇が△△以下という条件のときは、<と=を使います。
このような、より大きいとかより小さいといった大小比較をするときは、数値型のカラムや日付型のカラムで利用するケースとなります。

// 社員テーブルからIDが10以上のレコードを取得
SELECT *
FROM employee
WHERE id >= 10;
// 社員テーブルから誕生日 [birthday] が2000/1/1より前のレコードを取得
SELECT *
FROM employee
WHERE birthday < '2000-01-01';

〇〇ではないデータを取得するには(NOT)

〇〇が△△ではないという否定条件とするときには、先ほどの条件式の前にNOTを付けます。
〇〇と△△が等しくないという否定条件のときは、NOTの代わりに<>でも構いません。

// 社員テーブルから性別 [sex] が1(男性)以外のレコードを取得
SELECT *
FROM employee
WHERE NOT sex = 1;
// 社員テーブルから性別 [sex] が1(男性)以外のレコードを取得
SELECT *
FROM employee
WHERE sex <> 1;

文字列型や日付型のときは値の前後にシングルコーテーション(’ )を付けます。数値型のときは付けないようにします。

まとめ

レコードからデータを取得するには、SELECT文を使います。
どこから何を取得するのかを確認したうえで、SELECT文を作成していきましょう。

また、WHERE句を使って、テーブルの中からほしいレコードだけを選択することができます。
等しいもの、〇〇以上や〇〇未満、〇〇以外といった条件を指定することができます。
(=、>、>=、<、<=、NOT)

この内容はデータ取得の基本的な部分ですので、あまり難しく考えることはありません。

▶ 一覧に戻る

    スポンサーリンク

    -SQL, プログラミング

    PAGE TOP

    © 2021 ちょこぱいぶろぐ Powered by AFFINGER5