「MySQL - テーブル」の版間の差分

285行目: 285行目:
  USE <データベース名>;
  USE <データベース名>;
  SHOW TABLES;
  SHOW TABLES;
</syntaxhighlight>
<br><br>
== 制約 ==
==== NOT NULL ====
NULL値を禁止する。<br>
<syntaxhighlight lang="sql">
CREATE TABLE product 
(
    product_id      INT PRIMARY KEY,
    product_name    VARCHAR(16) UNIQUE NOT NULL,
    price            INT
);
</syntaxhighlight>
<br>
==== CHECK ====
条件を指定して、条件を満たさないデータを禁止する。<br>
<syntaxhighlight lang="sql">
CREATE TABLE user
(
  user_id    INT PRIMARY KEY,
  age        INT,
  city_code  CHAR(4),
  gender      CHAR(1),
  CONSTRAINT  agecity_check  CHECK(age >= 18 OR city_code = '0003'),
  CONSTRAINT  gendercheck    CHECK(gender IN('M', 'F')))
);
</syntaxhighlight>
<br>
==== UNIQUE KEY ====
* 重複したデータを禁止する。
* 複数のカラムに設定できる。
* ただし、<code>NULL</code>を禁止するわけではない。
<br>
<syntaxhighlight lang="sql">
CREATE TABLE user
(
    user_id      INT PRIMARY KEY,
    telephone    CHAR(8),
    addreess    VARCHAR(255),
    UNIQUE (telephone, address)
);
</syntaxhighlight>
<br>
==== PRIMARY KEY ====
* 一意を保証する。
* 重複と<code>NULL</code>を禁止する。
* 1つのテーブルに1つしか指定できない。
<br>
<syntaxhighlight lang="sql">
CREATE TABLE user
(
    user_id      INT PRIMARY KEY,
    telephone    CHAR(8),
    age          INT
);
</syntaxhighlight>
<br>
複合主キーも指定できる。<br>
<syntaxhighlight lang="sql">
CREATE TABLE price
(
    shop_code      CHAR(4),
    product_code  CHAR(4),
    price          INT,
    PRIMARY KEY(shop_code , product_code)
);
</syntaxhighlight>
<br>
==== FOREIGN KEY ====
他のテーブルのカラムを参照して、そのカラムに存在しないデータを禁止する。<br>
<syntaxhighlight lang="sql">
CREATE TABLE order
(
    order_id      INT PRIMARY KEY,
    shop_code    CHAR(5),
    product_code  CHAR(4),
    number        INT,
    date          DATE,
    FOREIGN KEY (shop_code)
              REFERENCES shop_table(shop_code),
    FOREIGN KEY (product_code)
              REFERENCES product_table(product_code)
);
</syntaxhighlight>
<br>
2つのカラムを外部参照することもできる。<br>
<syntaxhighlight lang="sql">
CREATE TABLE item
(
    maker_id    CHAR(10),
    product_id  CHAR(10),
    PRIMARY KEY (maker_id , product_id)
);
</syntaxhighlight>
<br>
<syntaxhighlight lang="sql">
CREATE TABLE dealer
(
    shop_id        CHAR(10) NOT NULL,
    maker_id      CHAR(10) NOT NULL,
    product_id    CHAR(10) NOT NULL,
    PRIMARY KEY (shop_id , maker_id , product_id),
    FOREIGN KEY (maker_id , product_id)
          REFERENCES item(maker_id , product_id)
);
</syntaxhighlight>
<br>
==== 制約の名前を設定 ====
<syntaxhighlight lang="sql">
CONSTRAINT <制約の名前> <制約>
</syntaxhighlight>
<br>
==== 制約の削除 ====
<syntaxhighlight lang="sql">
ALTER TABLE <テーブル名> DROP CONSTRAINT <制約の名前>;
</syntaxhighlight>
<br>
==== デフォルト値の設定 ====
<syntaxhighlight lang="sql">
CREATE TABLE product
(
    product_id  INT NOT NULL PRIMARY KEY,
    name        CHAR(16) UNIQUE,
    price      INT DEFAULT 2000
);
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>