第六週 †RDBMS †RDBMS (Rlational Database Management System) とは、データをExcelのような表形式で管理するシステムのことです。 RDBMSの操作は、通常SQL (Structured Query Language) と呼ばれる言語を介して行います。 MySQLクライアント †第五週講座の宿題を提出された方には、MySQLサーバに接続するためのアカウントが作成されています。 MySQLサーバに接続するためには、MySQLクライアントを接続する必要があります。 mysql -u y_mahata -ppassword y_mahata_db すると、次のような画面が表示されます。 ここで表示されている、「mysql>」に続いて、 SQL を打ち込むことができます。 SQL †SQL について、DDL と DML に分けて説明します。 DDL †DDL (Data Definition Language) とは、データベースの構造を定義するためのコマンドです。
本講座では、テーブルの作成/削除のみを扱います。 テーブルの作成 †次のような SQL で、テーブルを作成することができます。 DROP TABLE IF EXISTS members; CREATE TABLE members ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, birthday DATE, department_id INT ) DEFAULT CHARSET = utf8; DROP TABLE IF EXISTS departments; CREATE TABLE departments ( id INT, name VARCHAR(255) NOT NULL ) DEFAULT CHARSET = utf8; 「DROP TABLE IF EXISTS テーブル名;」は、「"テーブル名"で定義されたテーブルがあれば削除する」という意味です。 CREATE TABLE テーブル名 ( カラム1 カラム1のデータ型 [カラム1の制約], カラム2 カラム2のデータ型 [カラム2の制約], ... カラムN カラムNのデータ型 [カラムNの制約] ) テーブル設定; このように記述します。 先ほどの例では、「members」と「departments」という二つのテーブルを作成しています。 「カラムのデータ型」として指定できる項目は多数存在します。 詳しくは参考資料に譲りますが、先ほどの例で使用しているものについてのみ、ここで紹介します。
「カラムの制約」として指定できる項目も多数存在します。
後の DML の説明でこれらのテーブルを使用します。 DML †DML (Data Manipulation Language) とは、データベース内のデータを操作するためのコマンドです。
それぞれの操作について次から説明します*2。 データを検索する - SELECT †次のような SQL を記述します。 「()」でくくられている部分は必須ではない項目です。 mysql> SELECT * FROM members; +----+----------+------------+---------------+ | id | name | birthday | department_id | +----+----------+------------+---------------+ | 1 | y-mahata | 1983-02-16 | 1 | | 2 | y-geshi | 1983-01-29 | 2 | | 3 | s-tanno | NULL | 3 | | 4 | usapon | NULL | 4 | +----+----------+------------+---------------+ 4 rows in set (0.00 sec) mysql> SELECT * FROM members WHERE id = 1; +----+----------+------------+---------------+ | id | name | birthday | department_id | +----+----------+------------+---------------+ | 1 | y-mahata | 1983-02-16 | 1 | +----+----------+------------+---------------+ 1 row in set (0.35 sec) mysql> SELECT id, name FROM departments LIMIT 1; +------+-----------------------+ | id | name | +------+-----------------------+ | 1 | ディレクトリ部 | +------+-----------------------+ 1 row in set (0.00 sec) ここでは詳しくは扱いませんが、複数のテーブルを同時に扱いたい場合があります。 次の SQL は結合のサンプルです。 mysql> SELECT * FROM members INNER JOIN departments ON members.department_id = departments.id; +----+----------+------------+---------------+------+-----------------------+ | id | name | birthday | department_id | id | name | +----+----------+------------+---------------+------+-----------------------+ | 1 | y-mahata | 1983-02-16 | 1 | 1 | ディレクトリ部 | | 2 | y-geshi | 1983-01-29 | 2 | 2 | 美女部 | | 3 | s-tanno | NULL | 3 | 3 | 神部 | | 4 | usapon | NULL | 4 | 4 | 漫画部 | +----+----------+------------+---------------+------+-----------------------+ データを挿入する - INSERT †次のような SQL を記述します。 mysql> INSERT INTO departments (id, name) VALUES (1, 'ディレクトリ部');
mysql> INSERT INTO departments (id, name) VALUES (2, '美女部');
mysql> INSERT INTO departments (id, name) VALUES (3, '神部');
mysql> INSERT INTO departments (id, name) VALUES (4, '漫画部');
mysql> INSERT INTO members (name, birthday, department_id) VALUES ('y-mahata', '1983-02-16', 1);
mysql> INSERT INTO members (name, birthday, department_id) VALUES ('y-geshi', '1983-01-29', 2);
mysql> INSERT INTO members (name, department_id) VALUES ('s-tanno', 3);
mysql> INSERT INTO members (name, department_id) VALUES ('usapon', 4);
データを更新する - UPDATE †次のような SQL を記述します。 「()」でくくられている部分は必須ではない項目です。 mysql> SELECT id FROM members WHERE name = 'usapon'; +----+ | id | +----+ | 4 | +----+ 1 row in set (0.00 sec) mysql> UPDATE members SET name = 'usami' WHERE id = 4; データを削除する - DELETE †次のような SQL を記述します。 「()」でくくられている部分は必須ではない項目です。 mysql> DELETE FROM members WHERE id = 1; 落ち穂拾い †DDL でも DML でもないコマンドで、便利なものをいくつか紹介します。
実際にコマンドを打ち、表示される内容を確かめてみてください。 宿題 †あなたが所属する企業を表現するテーブル群を作成してください。
テーブル群の作成後、いくつかサンプルデータを投入した上で、次のデータを参照するSELECT文を作成してください*5。
テーブル群を作成するために書いた「CREATE TABLE」文と、それぞれの「SELECT」文を「6th_week_homework.html」というファイルにまとめ、 参考資料 † |