[[プログラミング言語]]

*SQL [#n5bc80f0]

データベース(特にRDBMS)を操作するために使われる言語。~
標準規格はあるものの、各RDMBSの独自仕様も多い。~

**RDBMSって? [#te32579b]

関係データベース管理システム(Relational Database Management System)。関係モデルに基づいてデータを持つ。~
超簡単に言うと、excelで作るような表形式(テーブルと呼ばれる)でデータを持つということ。~
~
表形式なので、データを取得する場合は行と列を選択する。~
RDBMSでは列を列名、行を主キー(Primary Key、よくPKと略される)の値で選択する。~
~
主キーとは、データが絶対に重複しない列のこと。~
出席番号、社員番号、ログインIDなんかをイメージすると良いかも。~

**なんでRDMBSが使われてるの? [#g472f3a3]

主な理由は大量のデータを取り扱えて性能がいいから。~
プログラム中で処理とデータを分けることはよくあるのだけど、大量にデータがあるとCSVみたいなテキストファイルでデータを管理するのは無理。~

**主なRDBMS [#gba75dd0]

RDMBSは各ソフトウェアによって微妙な差異が結構ある。~
性能を気にする場合などは各RDBMSの仕様を確認しよう。~

-Oracle &br;
有料(高い)。資格試験もある。非商用利用に限り無料版が提供されている。商用で使う場合はデファクトスタンダード。
有料(高い)。資格試験もある。非商用利用に限り無料版が提供されている。商用で使う場合はデファクトスタンダード。~
Oracle10g Express(Free Version)
http://www.oracle.com/technetwork/database/express-edition/downloads/index.html
-MySQL &br;
オープンソースのRDBMS。Javaを開発したSun Microsystemsが提供していたが、Oracleに買収された。無料で使えるDBとしてはデファクトスタンダード。
オープンソースのRDBMS。Javaを開発したSun Microsystemsが提供していたが、Oracleに買収された。無料で使えるDBとしてはデファクトスタンダード。~
http://www.mysql.gr.jp/
http://dev.mysql.com/downloads/
-PostgreSQL &br;
オープンソースのRDBMS。日本でよく使われている。
オープンソースのRDBMS。日本でよく使われている。~
http://www.postgresql.jp/
-Microsoft SQL Server &br;
Microsoftが提供しているRDBMS。無料版もある。VisualStudioをインストールすると一緒に入ってくる場合がある。エディタもあるので使いやすい。
Microsoftが提供しているRDBMS。無料版もある。VisualStudioをインストールすると一緒に入ってくる場合がある。エディタもあるので使いやすい。~
MS-SQLServer 2008Express
http://www.microsoft.com/downloads/details.aspx?familyid=58CE885D-508B-45C8-9FD3-118EDD8E6FFF&displaylang=ja~
MSDE2000
http://www.microsoft.com/japan/sqlserver/2005/msde/default.mspx
-DB2 &br;
IBMが提供しているRDBMS。
-SQLite &br;
アプリ組み込み用。単体版もある。EXEファイル1個だけなので気軽に使える。
アプリ組み込み用。単体版もある。EXEファイル1個だけなので気軽に使える。~
http://www.sqlite.org/

**SQLの使い方 [#b2ce284a]

SQLを使うためには、まずDBをインストール。~
各SQL文はOracleを使う前提で書いてるので、他のDBを使う場合は型を適当に読み替えてください(><)
~
***テーブルの作成 [#oe0a478d]
まずvipperidとvippernameを持つvipperというテーブルを作ってみる。

 CREATE TABLE vipper(
  vipperid INT(9, 0) PRIMARY KEY,
  vippername VARCHAR(20)
 );

CREATE Table [テーブル名](列名 型, 列名 型, ・・・)でテーブルを作ることができる。~
vipperidはINT型で最大9桁、vippernameは文字列型で最大20文字。~
「PRIMARY KEY」と後ろに書かれているvipperidが主キー。~

**データの追加 [#ha27ed84]
データはINSERT文を使って挿入する。

 INSERT INTO vipper(vipperid, vippername) VALUES(1, 'ブーン');
 INSERT INTO vipper(vipperid, vippername) VALUES(2, 'vipper');
 INSERT INTO vipper(vipperid, vippername) VALUES(3, '(^ω^)')

INSERT INTO [テーブル名](列名1, 列名2, ・・・) VALUES(列名1の値, 列名2の値, ・・・);~
文字列は「'」で囲む必要あり。他のデータを入れる場合は主キーのvipperidがかぶらないようにね。主キーがかぶったデータを入れようとすると・・・?~
データ挿入後はこんな感じ。~
|vipperid|vippername|
|1|ブーン|
|2|vipper|
|3|(^ω^)|

**データの参照 [#ee61d329]
SELECT文を使ってデータを参照~
~
テーブルの全てのデータを参照
 SELECT * FROM vipper;

取得データ
|vipperid|vippername|
|1|ブーン|
|2|vipper|
|3|(^ω^)|

指定した列だけ参照(この場合はvippernameだけ)
 SELECT vippername FROM vipper;

取得データ
|vippername|
|ブーン|
|vipper|
|(^ω^)|

特定の行だけを参照
 SELECT vipperid, vippername FROM vipper WHERE vipperid = 1;

取得データ
|vipperid|vippername|
|1|ブーン|

**データの更新 [#a8088778]
UPDATE文を使って更新

 UPDATE vipper SET vippername = 'vippest' where vipperid = 2;

データ更新後
|vipperid|vippername|
|1|ブーン|
|2|vippest|
|3|(^ω^)|

※注意 whereで更新する行を絞らないとvipperテーブルの全データが更新される!

**データの削除 [#o2b7381f]
DELETE文を使って削除

 DELETE FROM vipper WHERE vipperid = 3;

データ削除後
|vipperid|vippername|
|1|ブーン|
|2|vippest|

※注意 DELETE文もWHEREで行を絞らないと、全データ削除される!