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.