12,982
回編集
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> |