2012年8月15日水曜日

5.1 テーブルの作成と更新(2)


5.1.2 主キー

主キーを設定するには、CREATE TABLEコマンドを実行する際、データ型
の直後に「PRIMARY KEY」と指定します。次の例では、id列を主キーと
して設定しています。

mysql> CREATE TABLE staff (id SMALLINT PRIMARY
KEY, name VARCHAR(20), age TINYINT, bid SMALLINT);
どの列に主キーが設定されているかは、以下のようにして確認できます。

mysql> DESC staff;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | smallint(6) | NO | PRI | | |
| name | varchar(20) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
| bid | smallint(6) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+

key欄に「PRI」とあるフィールドが主キーです。

5.1.3 NOT NULL


レコードを識別するためのキーとして使いたい列にデータが入っていなけ
れば、困ったことになります。データの入力を必須とする列を指定するには、
NOT NULLを指定します。次の例では、id列への入力を必須としています。


mysql> CREATE TABLE staff (id SMALLINT NOT
NULL, name VARCHAR(20), age TINYINT, bid
SMALLINT);
DESCコマンドを使ってテーブルの情報を調べてみます。

mysql> DESC staff;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id | smallint(6) | NO | | | || name | varchar(20) | YES | | NULL | || age | tinyint(4) | YES | | NULL | || bid | smallint(6) | YES | | NULL | |+-------+-------------+------+-----+---------+-------+



id列のNull欄が「NO」になっているのが確認できます。「YES」となってい
る列は、値が格納されていなくてもかまわない、ということです。

5.1.4 レコードの追加


テーブルにレコードを追加するには、SQLコマンドのINSERTを使います。

INSERT INTO テーブル名[(列名1[, 列名2, ...])] VALUES
(値1[, 値2, ...]);
次の例では、staffテーブルにレコードを追加しています。

mysql> INSERT INTO staff VALUES ('1', 'Sato', '23', '1');
以下のように、複数のレコードをまとめて追加することもできます。

mysql> INSERT INTO staff VALUES ('2', 'Suzuki', '24', '2'), ('3', 'Takahashi', '28', '1');



もちろん、見やすいように、複数行に分けてもかまいません。

mysql> INSERT INTO staff VALUES
> ('2', 'Suzuki', '24', '2'),
> ('3', 'Takahashi', '28', '1');
次のようにすると、指定した列にのみ値を追加することができます。



mysql> INSERT INTO staff (id, name) VALUES
('9', 'Kobayashi');
mysql> SELECT * FROM staff;
+----+-----------+------+------+
| id | name | age | bid |
+----+-----------+------+------+
| 1 | Sato | 23 | 1 |
| 2 | Suzuki | 24 | 2 |
| 3 | Takahashi | 28 | 5 |
| 4 | Tanaka | 26 | 3 |
| 5 | Watanabe | 30 | 2 |
| 9 | Kobayashi | NULL | NULL |
+----+-----------+------+------+

値を指定しなかった列はNULLとなります。



0 件のコメント:

コメントを投稿