SQL 入門演習
Sqliteman で既存のデータベースを開く
作成済みのデータベースファイルは,次の手順で開く. (Open an existing database file)
- Sqliteman を起動する
- 「File」→
「Open」
- データベースファイルを開く
* Ubuntu での実行例
データベースファイル /home/ubuntuuser/mydb を選び, 「開く」をクリック (Click '開く' after choosing the database file "/home/ubuntuuser/mydb")
* Windows での実行例
データベースファイル C:\sqlite3\mydb を選び, 「開く」をクリック (Click '開く' after choosing the database file "C:\sqlite3\mydb")
SQL を用いたテーブル定義と一貫性制約の記述
この演習では products テーブルを使う. products テーブルが定義済みの場合は,この節の操作は不要である.
リレーショナル・スキーマ (relational schema): products( id, product_name, type, cost, created_at )
- products テーブルの定義 (Define a table)
次の SQL を入力し,「Run SQL」のアイコンをクリック (Write the following SQL, and click "Run SQL" icon).
create table products ( id INTEGER PRIMARY KEY autoincrement not null, product_name TEXT UNIQUE not null, type TEXT not null, cost real, created_at DATETIME not null );* 「SQL Editor」のウインドウに SQL プログラムを書く. (You can write down SQL program(s) in the 'SQL Editor' window.)
- コンソールの確認 (Inspect console)
エラーメッセージが出ていないことを確認する.
SQL を用いたテーブルへの行の挿入
次の操作により,演習用のデータ(1000 行)を products テーブルに格納する.
- Sqliteman で,products を右クリック (right click) し,「Populate Table...」を選ぶ.
- Number of Rows to Populate に「1000」を設定,
cost の行を「Random Number」に設定し,
「Populate」をクリック
- 「Close」をクリック
条件を満足する行のみの表示 (List the rows which satisfy a given condition)
次の SQL を入力し,「Run SQL」のアイコンをクリック
SELECT * FROM products WHERE id = 123;
LIKE と % の組み合わせ: 文字列のパターンマッチ
「%」は 0 文字以上の任意の文字列にマッチする. 次の SQL では,type の値が「AA」を含む行が表示される. SQLite 3 の LIKE は,アルファベットの大文字と小文字を区別しないため, 「aa」,「aA」,「Aa」,「AA」のいずれもマッチする.
次の SQL を入力し,「Run SQL」のアイコンをクリック
SELECT * FROM products WHERE type LIKE '%AA%';
ORDER BY: ソート
ORDER BY は,指定した属性の値で行を並べ替える.
次の SQL を入力し,「Run SQL」のアイコンをクリック
SELECT * FROM products ORDER BY cost;
GROUP BY と COUNT の組み合わせ: グループごとの数え上げ
GROUP BY は,指定した属性の値が同じ行をグループにまとめる. COUNT は,グループごとの行数を求める.
次の SQL を入力し,「Run SQL」のアイコンをクリック
SELECT type, COUNT(*) FROM products GROUP BY type;
GROUP BY と COUNT と HAVING の組み合わせ: グループの絞り込み
HAVING は,グループに対する条件を指定する. 次の SQL では,行数が 5 以上のグループのみが表示される.
次の SQL を入力し,「Run SQL」のアイコンをクリック
SELECT type, COUNT(*) FROM products GROUP BY type HAVING COUNT(*) >= 5;