2013年1月7日月曜日

開発環境

  • OS: OS X Lion - Apple
  • データベース言語: SQL
  • リレーショナルデータベース: MySQL

『初めてのSQL』(Alan Beaulieu 著、株式会社クイープ 翻訳、オライリー・ジャパン、2006年、ISBN4-8733-181-8) の4章(フィルタリング)、4.5(練習問題)4-1を解いてみる。

4-1.

トランザクションID1、 2、 3、 5、 6、 7が返される。

確認。

SQL文(BBEdit)

SELECT *
FROM tmp
WHERE txn_date < '2005-02-26' AND
(txn_type_cd = 'DBT' OR amount > 100);

入出力結果(Terminal)

$ mysql -u lrngsql -p bank
Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.5.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show tables;
+----------------+
| Tables_in_bank |
+----------------+
| account        |
| branch         |
| business       |
| customer       |
| department     |
| employee       |
| individual     |
| officer        |
| product        |
| product_type   |
| tmp            |
| transaction    |
+----------------+
12 rows in set (0.00 sec)

mysql> desc tmp;
+-------------+-------------------+------+-----+---------+-------+
| Field       | Type              | Null | Key | Default | Extra |
+-------------+-------------------+------+-----+---------+-------+
| txn_id      | int(11)           | YES  |     | NULL    |       |
| txn_date    | date              | YES  |     | NULL    |       |
| account_id  | int(11)           | YES  |     | NULL    |       |
| txn_type_cd | enum('CDT','DBT') | YES  |     | NULL    |       |
| amount      | float             | YES  |     | NULL    |       |
+-------------+-------------------+------+-----+---------+-------+
5 rows in set (0.03 sec)

mysql> SELECT *
    -> FROM tmp
    -> WHERE txn_date < '2005-02-26' AND
    -> (txn_type_cd = 'DBT' OR amount > 100);
+--------+------------+------------+-------------+--------+
| txn_id | txn_date   | account_id | txn_type_cd | amount |
+--------+------------+------------+-------------+--------+
|      1 | 2005-02-22 |        101 | CDT         |   1000 |
|      2 | 2005-02-23 |        102 | CDT         | 525.75 |
|      3 | 2005-02-24 |        101 | DBT         |    100 |
|      5 | 2005-02-25 |        101 | DBT         |     50 |
|      6 | 2005-02-25 |        103 | DBT         |     25 |
|      7 | 2005-02-25 |        102 | CDT         | 125.37 |
+--------+------------+------------+-------------+--------+
6 rows in set (0.10 sec)

mysql> quit;
Bye
$

0 コメント:

コメントを投稿