読者です 読者をやめる 読者になる 読者になる

理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

今月号の DB マガジンの内容が素晴らしすぎる

新人エンジニアのためのデータベース徹底入門という記事しか読んでないけど,これは素晴らしいなと思った.ちなみに DB マガジンを買ったのも今月号が初めてだったりする.DB Magazine ( マガジン ) 2009年 05月号 [雑誌]出版社/メーカー: 翔泳社発売日: 200…

複合キーに UNIQUE 制約を追加する

制約加えるとき,いっつも忘れるから書いとく!!!! ALTER TABLE table-name ADD CONSTRAINT UNIQUE(column1, column2);

MySQL で DBIC (DBIx::Class) の Example を実行するまで

Perl の ORM として大人気の DBIx::Class を試そうと思ったところ,わりと苦戦したので,その苦戦記なのです. DBIC のインストール DBIx::Class のインストールは非常に簡単でした. $ sudo cpanp i DBIx::Class DBD::mysql 今回は MySQL を使用するので DB…

Chapter 7: Excersises

7-1 mysql> SELECT SUBSTRING('Please find the substring in this string.', 17, 25-17+1); +---------------------------------------------------------------------+ | SUBSTRING('Please find the substring in this string.', 17, 25-17+1) | +-------…

Chapter 7. (Data Generation, Conversion, and Manipulation)

memo. varchar は格納する文字列に見合ったメモリしか確保しないので,CREATE 時,サイズに関しては十分大きな値を指定しておくべき.そうしないと長い文字列を登録しても truncate される. MySQL だと組み込み関数として QUOTE が使える.これは,文字列を…

集合演算

集合演算を行うためには,その演算対象となる (複数の) テーブルが以下の制約を満たす必要がある. 同数のカラムを持つ テーブル間の各カラムのデータ型が同じか,あるいは型変換が可能 UNION ALL と UNION 和集合演算を行う UNION ですが,厳密には UNION A…

Chapter 6: Working with Sets

6-1 A={L, M, N, O, P} B={P, Q, R, S, T} A union B = {L, M, N, O, P, Q, R, S, T} A union all B = {L, M, N, O, P, P, Q, R, S, T} A intersect B = {P} A except B = {L, M, N, O, Q, R, S, T} 6-2 mysql> SELECT fname, lname FROM individual -> UNIO…

Join

データベースを(第三)正規形にしようとすると,普通,確実にテーブルは 1 つじゃ無理.元々の (繰り返し,冗長を含む) 一つのテーブルは分割される運命にあります.でも,クエリを投げるときは,元々のテーブルを復元するか,復元までいかないまでも,いくつ…

問題 4-4 (Filtering)

ワイルドカードを使う問題.last name の 2 文字目が 'a',その後どこかに 'e' がつくような customer をリスティングする.ワイルドカードといえば LIKE ですね.> mysql> SELECT * -> FROM individual -> WHERE lname LIKE '_a%e%'; +---------+---------+…

問題 4-3 (Filtering)

2002 年に開いた口座の一覧を取得する. account テーブルはこんな風なスキーマの定義がされている. mysql> DESC account; +--------------------+----------------------------------+------+-----+---------+----------------+ | Field | Type | Null | K…

問題 4-2 (Filtering)

mysql> SELECT txn_id -> FROM tb_section4 -> WHERE account_id IN (101,103) -> AND NOT (txn_type_cd = 'DBT' OR amount > 100); このクエリを投げたときに出力されるものを探す.account_id が 101 か 103 であることは必須として,トランザクションのタ…

問題 4-1 (Filtering)

Section 4 の Filtering に突入した.WHERE 句をどうやって使うかが説明された,まだ初歩的な章です. この章の練習問題を解くために,まずは Scheme を作成しよう! mysql> CREATE TABLE tb_section4 ( -> Txn_id TINYINT UNSIGNED, -> Txn_date DATE, -> Ac…

問題3-4 (Query Primer)

mysql> SELECT p.product_cd, a.cust_id, a.avail_balance -> FROM product p INNER JOIN account a -> ON p.product_cd = a.product_cd -> WHERE p.product_type_cd = 'ACCOUNT'; +------------+---------+---------------+ | product_cd | cust_id | avail…

問題3-3 (Query Primer)

口座を開いた従業員の ID をリストする (重複は含まない) mysql> SELECT DISTINCT open_emp_id -> FROM account; +-------------+ | open_emp_id | +-------------+ | 1 | | 10 | | 13 | | 16 | +-------------+ 4 rows in set (0.00 sec)

問題3-2 (Query Primer)

ステータスが ACTIVE で,その残高が $2,500 以上の口座の account ID,customer ID と available balance をリストする. ysql> SELECT account_id, cust_id, avail_balance -> FROM account -> WHERE status = 'ACTIVE' -> and avail_balance > 2500; +---…

問題 3-1 (Query Primer)

employee テーブルから,employee ID,first name, last name を取り出し,last name,first name の順でソートする. mysql> SELECT emp_id, fname, lname FROM employee -> ORDER BY lname, fname; +--------+----------+-----------+ | emp_id | fname | …

重複レコードを除去する DISTINCT

重複するレコードを表示しないためには,SELECT に DISTINCT を指定する. mysql> SELECT DISTINCT cust_id FROM account; +---------+ | cust_id | +---------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | | 12 | | 13 | +-----…

Learning SQL Chapter 3

発行した Query の行く先 ユーザが発行した Query は以下の 3 ステップをクリアして初めて query optimizer に渡される. ユーザに statement を実行する権限がある データにアクセスする権限がある statement の文法が正しい Alias 結果として返ってくるテ…

主キーとなる id を自動インクリメントする

まだ Chapter 2.Learning SQL作者: Alan Beaulieu出版社/メーカー: Oreilly & Associates Inc発売日: 2005/08/31メディア: ペーパーバック クリック: 4回この商品を含むブログを見る値の挿入段階において,挿入するレコードの主キーの id は,その時点での…

Learning SQL を読むことに

Interop に行ったときに,洋書は全部 1,000 円とかワケの分からないセールを O'Reilly ブースでやっていて (2008-06-12 - 理系学生日記),ぼくは ワケの分からないまま 4 冊くらい買ってやったんですけど,そのうちの一つが Learning SQL でした.Learning S…