前回
1. データベースとは何か
情報を大量に保存しコンピュータを使ってそれらに効率よくアクセスできるように加工したデータの集まりをデータベース(DB)という。DBを管理するコンピュータシステムをデータベースマネジメントシステム(DBMS)という。
1.5 SQLの概要
1.5.1 SQLとは
SQLはRDBを操作するための言語で、DBからのデータ検索やデータ登録や削除を行うことができる。SQLには国際標準化機構で定められた標準規格があり、それに準拠したSQLを標準SQLという。しかし標準SQLに準拠したRDBMSは少なく、たいてい独自のSQL文が定義されている。
1.6 テーブルの作成
- テーブルはCREATE TABLE文で作成する。
- テーブルや列の名前に利用してよい文字は規定がある。
- 列にはデータ型を指定する。
- テーブルには制約を設定できる。
1.6.1 データベースの作成
まずテーブルを格納するためのデータベースを作成する。
CREATE DATABASE <データベース名>;
次にテーブルをそのデータベース内に作成する
CREATE TABLE <テーブル名>; (<列名1> <データ型> <この列の制約>, <列名2> <データ型> <この列の制約>, <列名3> <データ型> <この列の制約>, ........ <このテーブルの制約1> <このテーブルの制約2>,... ... ... ...);
1.6.2 命名ルール
標準SQLではデータベースやテーブル、列の名前には半角文字のアルファベット、数字およびアンダーバーのみが利用できる。また名前の最初は必ず半角のアルファベットを用いなければならない。テーブル名は重複してはならない。
1.6.3 データ型の指定
テーブルの列にはデータ型を必ず定義しなければならない。標準SQLには以下のような型がある*2。
(1) | INTEGER型 | 整数を入れる列に指定する。 | |
(2) | CHAR型 | 文字列を入れる列に指定する。列に入れる文字列の長さを指定する。 | |
(3) | VARCHAR型 | 文字列を入れる列に指定する。列に入れる文字列の長さを指定する。CHAR型は指定した文字列になるように半角空欄を入力する必要があるものの、VARCHAR型は指定した長さ以下であればよい。 | |
(4) | DATE型 | 日付を入れる列に指定する。 |
1.6.4 制約の設定
列に入れるデータに与える制約・条件を追加するのが制約の設定である。たとえば「NOT NULL」はNULL(空欄)を許さないことを意味する。また「主キー設定」は特定のデータを指定するときに使う列の組み合わせを指す。
1.7 テーブルの削除と変更
- テーブルを削除する場合、DROP TABLE文を用いる。
- テーブル列の追加・削除を行う場合にはALTER TABLE文を用いる。
1.7.2 テーブル定義の変更
既存のテーブルの列名定義を変更する*3。
ALTER TABLE <テーブル名> ADD (COLUMN) <列の定義>; --列名を変更する ALTER TABLE <テーブル名> DROP COLUMN <列名>; --列を削除する
テーブルにデータを登録する場合は以下のとおりにする。
BEGIN TRANSACTION; INSERT INTO <テーブル名> VALUES (<データ列1の値>,<データ列2の値>,…,<データ列nの値> ) INSERT INTO <テーブル名> VALUES (<データ列1の値>,<データ列2の値>,…,<データ列nの値> ) … INSERT INTO <テーブル名> VALUES (<データ列1の値>,<データ列2の値>,…,<データ列nの値> ) COMMIT;
1.7.3 テーブルの訂正
テーブルを定義しデータをある程度登録した後にテーブル名を修正したい場合、登録したデータ数が少なければそのテーブルを一度削除し、再定義およびデータの再登録をすればよい。しかし一定程度のデータが登録されていればそれは困難である。そこでテーブル名を変更したい場合、以下のようにする*4。
-- Oracle, PostgreSQL ALTER TABLE <変更対象のテーブル名> RENAME TO <変更後のテーブル名> -- DB2 RENAME TABLE <変更対象のテーブル名 TO <変更後のテーブル名> -- SQL Server sp_rename <変更対象のテーブル名>, <変更後のテーブル名> -- MySQL RENAME TABLE <変更対象のテーブル名 to <変更後のテーブル名>