RDBMSとSQLについて
RDBMSとは、「リレーショナル・データベース・マネジメント・システム」の略でリレーショナルデータベースを管理するためのソフトウェアのことです。「リレーショナルデータベース(RDB)」とは、データベースのうち、データを表に似た構造で管理するものを指します。
下図はリレーショナルデータベースで扱うデータのイメージ図です。関連のある属性を列(カラム)とする表(テーブル)の形でデータを格納し、行単位でデータを操作するデータベースのことです。
リレーショナルデータベースは、在庫の管理、eコマーストランザクションの処理、大量の重要な顧客情報の管理などに利用されています。
データベース管理システムは、ユーザーやアプリケーションがRDBMSに指示を与え、データを利用するための言語(データベース言語)を提供します。RDBMSのデータベース言語は「SQL」です。
データベース言語は以下の3要素から成っています。
1.DML(データ操作言語)
データの検索、新規登録、更新、削除を行うための言語です。SQLのSELECT、INSERT、UPDATE、DELETE等を指します。
DML文はテーブルに格納されたレコードに対して操作を行いますが、実際の運用では条件を指定した特定のレコード抽出や、複数のテーブル結合、特定レコード集計など、応用した操作が必要になります。DML文の基本構文に、下記のようなSQL記述を組み合わせて操作を行います。
2.DDL(データ定義言語)
データの構造、格納場所等を定義するための言語です。テーブルやインデックスを作成するCREATE、変更・削除するALTER、DROP等を指します。
3.DCL(データ制御言語)
データへのアクセス制御を行ったり、データの管理をして信頼性を保証するための言語です。
データベース利用者に特定の権限を与えるGRANT、権限を剥奪するREVOKE、トランザクション管理のためのCOMMIT、ROLLBACK等を指します。
商用のRDBMSとして主なものは以下になります。
・Oracle Database(Oracle)
・Microsoft SQL Server(Microsoft)
・IBM DB2(IBM)
一方、代表的なオープンソースのRDBMSは以下です。
・MySQL
・Postgre SQL
・SQLite
SQL(Structured Query Language)は上述したリレーショナルデータベース(RDB)のデータを操作する言語です。さまざまなRDBがこのSQLを標準のデータ操作用言語として採用しており、SQLによりデータベースの定義からDBテーブル上のデータ操作を行うことができます。また、SQLは国際標準化されているため、さまざまなデータベースで利用できます。
なお、SQLは厳密にはプログラミング言語ではありません。あくまでもデータベースを操作するための言語(データベース言語)です。
SQLとプログラミング言語は似ていますが、それぞれが持つ役割は大きく異なります。大きな違いとして、SQLはデータベース操作に特化した言語なので、プログラムを動かすことはできないという点が挙げられます。
データベース言語(SQL)は、用途の限られた簡潔な言語となっており「対話型」と「埋め込み型」があります。
<対話型>
ユーザーがプログラムのコマンドラインなどでSQLのコマンドを打ち込み、直接操作する方法で、対話型と呼ばれています。この場合は、処理の結果が表示されるのを待って次の命令を送ります。
<埋め込み型>
Javaなどほかのプログラミング言語で記述したソースコードに直接SQL文を埋め込み、動的に操作する方法です。ほかのプログラムに埋め込むことで、SQLをシステムの一部として使用します。
命令文をネスト構造(入れ子)にして、命令1の結果に応じて「~ならば命令2、そうでなければ命令3」などの処理を行うことで最終的な結果を得ることができます。これをサブクエリといいます。