SQLデータベースの例
Oracle社のOracle Database、Microsoft社のMicrosoft SQL ServerやAccess、オープンソースのMySQLやPostgreSQLなどがある。
それぞれ異なるデータベース・エンジンを搭載し、どれもSQLで操作可能。
SQL(Structured English Query Language)
データベースを制御するための言語。
SQLの3要素
3要素は、データベースを制御したり操作したりする際に使い分けられ、すべて命令文で動詞と目的語を組み合わせた構文。
1. DDL (Data Definition Language)
DDL(データ定義言語)は、RDBMSで扱うオブジェクト(テーブルやインデックスなど)の構造や、オブジェクト同士の関係を定義する構文。
- CREATE:新しいデータベースやテーブルなどのオブジェクトを定義する
- JOIN:テーブル同士を結合する
- DROP:定義したオブジェクトを削除する
- ALTER:定義したオブジェクトの内容を変更する
- TRUNCATE:データをすべて削除する
2. DML (Data Manipulation Language)
DML (データ操作言語)は、データベースを操作するための構文。
目的語やさまざまな条件を示すキーワードと組み合わせて使用。
目的語には「~以上」「~以下」などの条件をつけることもでき、SQL関数と呼ばれる関数を使用可能。
- SELECT:データベースを検索する
- INSERT:データを挿入する
- DELETE:データを削除する
- UPDATE:データを更新する
3. DCL (Data Control Language)
DCL (データ制御言語)は、データへのアクセスを制御する構文。
トランザクションやシステムを管理したり、ユーザーのアクセス権を制御したりするために使用。
- GRANT:ユーザー権限を付与する
- REVOKE:ユーザー権限を削除する
- BEGIN:トランザクションを開始する
- COMMIT:トランザクションを確定する
- ROLLBACK:トランザクションを取り消す
SQLによるデータベースの操作方法
1. 対話型
ユーザーがプログラムのコマンドラインなどでSQLのコマンドを打ち込み、直接操作する方法。
この場合は、処理の結果が表示されるのを待って次の命令を送る。
2. 埋め込み型
Javaなどほかのプログラミング言語で記述したソースコードに直接SQL文を埋め込み、動的に操作する方法。
ほかのプログラムに埋め込むことで、SQLをシステムの一部として使用します。
命令文をネスト構造(入れ子)にして、命令1の結果に応じて「~ならば命令2、そうでなければ命令3」などの処理を行うことで、最終的な結果を得る。これをサブクエリという。
RDB ( Relational Database)
RDBはデータ同士の関係をテーブル(表形式)で表現し、テーブルとテーブルが連携してデータの構造を表現。
SQLデータベースは、リレーショナルデータベース。
NoSQLデータベースは、リレーショナルでない。
Praimary Key
RDBのテーブル内でレコードを一意に識別することができるように指定される項目(列/カラム
)。
Foreign Key
RDBで、テーブルのある列に、別のテーブルの特定の列に含まれる項目しか入力できないようにする制約。また、その際に指定する列。
参照先のデータの変更に追随して自動的に参照元も書き換えるよう指定したり、参照先の削除や変更を禁じるよう指定することもできる。
例えば、受注テーブルの顧客コードの列に、顧客テーブルの顧客コードの列を外部キーとして設定すれば、顧客テーブルに登録されていない顧客コードを受注テーブルに誤って入力してしまうことを防ぐことができる。既存顧客から選択して入力するような形にすることもできるようになる。