SQL

"Structured Query Language" の略。データベースを操作するための簡易言語。

目次



基本的な SQL 文


SQL は非常に複雑ですので、基本的な構文だけご紹介します。

CREATE TABLE


テーブルを作成します。

CREATE TABLE [IF NOT EXISTS] テーブル名 (カラム定義[, カラム定義]...)

IF NOT EXISTS
これを付けると、同じ名前のテーブルがあってもエラーになりません。
テーブル名
作成するテーブル名を指定します。
カラム定義
各カラムの定義を列挙します。詳細は後述。

カラム定義は以下の書式になります。

名前 型名 [制約 [制約]...]

名前
カラムの名前を指定します。
型名
カラムの型名を指定します。後述の「SQL のデータ型」を参照。
制約
そのカラムに保存できるデータの条件を指定します。後述の「SQL の制約」を参照。

例:
CREATE TABLE addressbook (name VARCHAR, address VARCHAR);

DELETE


テーブル内の指定したレコードを削除します。

DELETE FROM テーブル名 WHERE 条件

テーブル名
対象のテーブル名を指定します。
条件
削除するレコードの条件を指定します。該当するレコードが複数ある場合は、そのすべてが削除されます。

例:
DELETE FROM addressbook WHERE name='hokousya';

DROP TABLE


テーブルを削除します。

DROP TABLE [IF EXISTS] テーブル名

IF EXISTS
これを付けると、指定した名前のテーブルが存在しなくてもエラーになりません。
テーブル名
削除するテーブル名を指定します。

例:
DROP TABLE addressbook

INSERT


テーブルにレコードを挿入します。

INSERT INTO テーブル名 (カラム名[,カラム名]...) VALUES (値[,値]...)

テーブル名
対象のテーブル名を指定します。
カラム名
値を設定するカラムの名前を指定します。
カラムに設定する値をフィールドと同じ並び順で指定します。

例:
INSERT INTO addressbook (name, address) VALUES ('hokousya', 'Tokyo, Japan');

SELECT


テーブルの内容を表示します。

SELECT カラム名[,カラム名]... FROM テーブル名 [WHERE 条件]

カラム名
表示するカラムの名前を指定します。 * ですべてのカラムを表します。また、カラム名の代わりに式を記述することも可能です。
テーブル名
対象のテーブル名を指定します。
条件
表示するレコードの条件を指定します。

例:
SELECT name, address FROM addressbook WHERE name = 'hokousya';

UPDATE


レコードの内容を変更します。

UPDATE テーブル名 SET カラム名 = 評価式[, カラム名 = 評価式]... WHERE 条件

テーブル名
対象のテーブル名を指定します。
カラム名
更新するカラムの名前を指定します。
評価式
代入する値を指定します。
条件
表示するレコードの条件を指定します。

例:
UPDATE addressbook SET address = 'Chiba, Japan' WHERE name = 'hokousya';

その他の SQL の文法要素


文字列


SQL では、文法的に明らかな場所では引用符なしで文字列を記述できます。しかし、文字列が空白を含む場合や、データとしての文字列かオブジェクト名(テーブル名やカラム名など)かが曖昧な場合には、以下の規則で引用符を用います。

引用符意味
"〜"(ダブルクォーテーション)オブジェクト名
'〜'(シングルクォーテーション)データとしての文字列

たいていの場合は上記の 2 つを混同しても自動的に判別してくれますが、間違いを防ぐためにもきっちりと使い分けるのが無難です。

データ型


SQL で使えるデータ型はかなり方言があります。最低限、以下のものを把握しておけばなんとかなるのではないかと。

型名保持できるデータ備考
INTEGER整数値たいていは 32bit 整数
REAL浮動小数点値MySQL, SQLite は 64bit, PostgreSQL は 32bit
VARCHAR(n)最大 n 文字の文字列SQLite では TEXT と同じ
TEXT可変長文字列
BLOBバイナリデータPostgreSQL では bytea が同等

制約


制約とはデータベースに保存できる値の条件を指定し、それを満たさない値を確実に弾くためのものです。以下のものが一般的に使えるようです。

制約禁止される値
NOT NULLNULL
UNIQUE他の行と重複する値(NULL を除く)
PRIMARY KEY他の行と重複する値および NULL
CHECK(条件)条件を満たさない値

また、値の制約以外の目的で使用される制約もあります。代表が DEFAULT で、 INSERT で値が指定されなかった際に設定される値が指定できます。 DEFAULT 制約がない場合は NULL になります。

制約の詳細に関しては、 PostgreSQL のマニュアルがわかりやすいです。

キーワード



参考


解説



リファレンス



セキュリティー


2008年03月30日(日) 23:35:49 Modified by sourcewalker




スマートフォン版で見る