トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

SQL

SQL

SQLとは、データベースにアクセスするための専用言語(のようなもの)です。一般的には、データベースサーバ(ここでは、「サーバ」というのは物理的なサーバマシンのことではなく、「サーバプログラム」のことを指します)のプロセス(サービス)に対してSQLでデータベースの作成から情報の取り出し・書き込みまで行うことができます。また、JavaではJDBC経由でSQLを指定してデータベースサーバにアクセスすることもできます。

データベースの構成は、以下のようになっています。

構成として、「データベース」という大きなくくりの中に「テーブル」を複数持つことができ、さらに「テーブル」は複数の行(レコードと言います)で構成されています。一番小さい単位が、レコードに含まれる「項目」ということになります。また、テーブル同士を関連づけるといったことも可能でです。

例えば、複数のプロジェクトで個々のデータベースを使いたい場合は、まずデータベース名を指定して、さらに使用するテーブルを選択、そしてレコード情報を取り出す・または加える、ということになります。これらの制御はSQL文にて行います。

また、SQL文には「方言」があり、データベースごと(Oracle/DB2/MySQLなど)に差がある場合があります。が、たいていは統一されています。

以下、そのSQL文の例を列挙します。

SQL文の例

テーブルの作成

create tableにて行います。データベース製品に大きく依存します。MySQLでのcreate tableについては、MySQLでのデータベースのページを参照してください。

レコードを列挙するもの

select * from testtbl;
テーブル「testtbl」の内容(レコード)をすべて列挙。
select ename,job from testtbl;
テーブル「testtbl」の内容から「ename」「job」で示される項目のみを列挙。
select count(*) from testtbl;
テーブル「testtbl」の総レコード数を表示。
select * from testtbl order by empno;
テーブル「testtbl」にて、empnoの昇順にレコードを列挙。
select * from testtbl order by empno desc;
テーブル「testtbl」にて、empnoの降順にレコードを列挙。

レコードの挿入

insert into testtbl values(1,'d1','d2');
テーブル「testtbl」に、1レコード分の値として、1/'d1'/'d2'を挿入。なお、values内は、テーブル内の項目番号順に並べること。文字列を入れる場合は、シングルクォーテーションで囲む。シングルクォーテーションを指定する場合は、シングルクォーテーションを2つ並べる。
例:'I''m xxx.' → I'm xxx.
insert into testtbl set empno=10,ename='test',job='programmer';
テーブル「testtbl」に、1レコード分の値として項目名を指定して情報を挿入。

レコードの情報を変更

update testtbl set ename='foo' where empno=1;
テーブル「testtbl」の、empnoが1のレコードを探し出し、そのenameの値を「foo」に変更する。whereを指定市内場合は、すべてのレコードが変更される。
update testtbl set ename='foo',job='wk' where empno<2 and ename='yy2';
テーブル「testtbl」の、empnoが2以下で、かつenameが「yy2」のレコードを探しだし、そのenameの値を「foo」にjobの値を「wk」に変更する。

レコードを削除

delete from testtbl where empno=2;
テーブル「testtbl」にて、empnoが2のレコードを削除する。whereを指定しない場合は、テーブル内のレコードがすべて削除される。

テーブルの削除

drop table testtbl;
テーブル「testtbl」自身を削除する。

テーブルに新たに列を追加

alter table testtbl add mytime datetime;
テーブル「testtbl」の列として、日時型の「mytime」を追加する。既存のレコードのmytimeにはnullが入る。なお、add後の型指定はデータベース製品により依存するため注意。

テーブルの列を削除

alter table testtbl drop mytime;
テーブル「testtbl」の、列「mytime」を削除する。

テーブルの列情報を変更

alter table testtbl modify ename char(20);
テーブル「testtbl」の、列enameの文字列長さを20バイトに変更。文字列長の変更などで使用する。ダイナミックに型自身を変更することはできない。(文字型から数値型への変更、など)

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.