DataBase vol.4

  • ある条件でレコードを絞り込む(続き)
  • ある条件でレコードを絞り込む2

ある意味でレコードを絞り込む(続き)

WHERE句を間違えるとどうなるか?

SELECT
        id
FROM
        なんとか
WHERE
        login_id = $login_id
        AND
        password = password
;

なんてものがあった場合、IDさえ当てはまれば誰でも入れるようなシステムができてしまう。
なので、すごく重要。

AND

〜かつ〜

問題8-4

テーブルSalesからSalesDateが2007/6/1以降のSaleIDを取り出してください。
SalesDateの表記は2007-06-01となっている。

SELECT
        SaleID
        ,SaleDate
FROM
        Sales
WHERE
        SaleDate >= "2007-06-01"
;
  • 日付や文字列を指定する場合は"か'を使わなくてはいけない。
発展

上の問題を2007/06/01から現在までにするには

SELECT
        SaleID
        ,SaleDate
FROM
        Sales
WHERE
        SaleDate >= "2007-06-01"
        AND
        SaleDate <= "2009-04-21"
;

ある条件でレコードを絞り込む2

SELECT
        選択リスト
FROM
        テーブル名
WHERE
        列名 LIKE パターン
;
% 任意の文字列
_ 任意の1文字

問題9-1

テーブルCustomersからCustomerNameに株式会社を含むCustomerNameを取り出しなさい。

SELECT
        CustomerName AS "会社名"
FROM
        Customers
WHERE
        CustomerName LIKE '%株式会社%'
;
実行結果
$ mysql5 -uroot sql_drill < 042103.sql
会社名
株式会社スズナリ
パーコ株式会社

問題9-5

テーブルCustomersからCustomerNameに株式会社を含まず、
Addressに江戸川区を含むレコードを取り出しなさい。

SELECT
        CustomerName
FROM
        Customers
WHERE
        CustomerName NOT LIKE '%株式会社%'
        AND
        Address LIKE '%江戸川区%'
;
  • 両端に%をつけた方があいまい検索の場合はよい。
実行結果
$ mysql5 -uroot sql_drill < 042104.sql
CustomerName	Address
タマ	江戸川区下小岩
ハナ	江戸川区北小岩
キク	江戸川区西小岩
スーパーニャンコ	江戸川区南小岩
ぶち雑貨店	江戸川区南小岩
タロ	江戸川区南小岩
雑貨サクラ	江戸川区西小岩
チー	江戸川区南小岩
エリザベス商会	江戸川区東小岩
ポンタ	江戸川区南小岩
ジロー	江戸川区南篠崎
ニャン太	江戸川区南小岩
チロ	江戸川区南小岩
トニー商店	江戸川区北篠崎

5分を超える場合は他人に頼る。

  • 5分ルール
  • ハマって時間がかかりそうな場合は聞く。
    • 時間の損失はチームに迷惑をかけるので。