SQLとは?
SQLとは代表的なデータベース操作言語です。データベース操作言語とはデータの操作や定義を行う言語を指します。データベースはいくつかのデータモデルがあり、SQLはリレーショナルデータベース管理システム(RDBMS)で用いられるデータベース操作言語です。
SQLはコマンドラインからの対話実行、並びにアプリケーションAPIやプリプロセッサによるプログラムアクセスで用いられます。
データベースとは?
データベースとは、必要とされる情報を蓄積・検索する機能を有するデータの集まりを指します。日本では古くから台帳や帳簿を情報記録に用いていましたが、簡単に言うとデータベースとは台帳をシステム化し検索を容易にしたイメージです。
同様にデータベースシステムとは、データベースの仕組みをシステム化したものを指します。そのためデータベースシステムは主にデータベースをコンピュータ実装したものを意味します。
データベース管理システムとは?
データベース管理システムとは、データベースをコンピュータ実装する際に必要とされる以下の機能を有するソフトウェアを指します。
・データベース構築機能 データベースをコンピュータシステムで導入し、初期設定や必要なシステム資源を割り当てます。 ・データベース管理機能 データベースの論理設計に基づき、データの作成・更新・削除・検索を行います。 ・データベース運用機能 システム資源・データベース領域のモニター、バックアップ・リカバリー、保守・保全等を行います。
リレーショナルデータベースとは?
データベースはいくつかのデータモデルが定義されており、データモデルに即したデータベース管理システムがあります。以下に代表的なデータモデルを挙げておきます。
・階層型データモデル データを木構造の階層で表すモデル。検索は高速ですが設計難易度が求められます。
・ネットワーク型データモデル CODASYL型データセットにより親レコードと子レコードを持ちます。木構造より実体の定義が容易でしたが、リレーショナルデータベースに淘汰されました。
・リレーショナルデータモデル データの項目を整理し、論理的にテーブル(表)・レコード(行)・カラム(列)で表示されるモデルです。
・オブジェクトデータモデル オブジェクト指向プログラミングで用いるオブジェクト形式でデータを取り扱うモデルです。
現在リレーショナルデータベースがデータベース管理システムの主流です。合わせて、オブジェクトデータモデルを取扱い可能としたオブジェクトリレーショナルデータベースの機能追加・拡張も始まっていますので、今後の利用拡大が期待できます。
SQLの文法は?
SQLはリレーショナルデータベースで用いられており、大きく以下の分類に大別されます。 ・データ定義言語(DDL) ・データ操作言語(DML) ・データ制御言語(DCL)
SQLの規格は標準SQL規格としてANSI・ISOにより制定されていますが、統一規格制定前から各社からRDBMSが製品化されていたためそれぞれ独自拡張がされています。そのため、SQL構文やストアドプロシージャに各RDBMS製品の違いが見られます。
データ定義言語とは?
データ定義言語(DDL)とはデータベース化するデータを定義するための言語要素を指します。
代表的なコマンドは以下の通りです。 ・CREATE データベース、テーブル(表)、インデックス(索引)、ストアドプロシージャ等の作成 ・DROP データベース、テーブル(表)、インデックス(索引)、ストアドプロシージャ等の削除 ・ALTER 存在するオブジェクト属性の変更 ・TRUNCATE テーブル(表)からデータを削除
データ操作言語とは?
データ操作言語(DML)とは、データベースに対するデータの登録・更新・削除・検索を行うための言語要素を指します。
代表的なコマンドは以下の通りです。 ・SELECT データの検索・抽出 ・INSERT 行の追加・挿入 ・UPDATE データの更新 ・DELETE レコード(行)の削除
データ制御言語とは?
データ制御言語(DCL)とは、データベースに対するデータアクセス制御を行うための言語要素を指します。
代表的なコマンドは以下の通りです。 ・GRANT 権限の付与 ・REVOKE 権限の取り消し
SQLによるデータ操作は?
これまでにSQLはデータ定義言語(DDL)・データ操作言語(DML)・データ制御言語(DCL)から構成されていることをお話ししました。この中でデータ定義言語(DDL)およびデータ制御言語(DCL)は、主にデータベース管理者が行う作業で用いる命令群です。
SQLを用いてデータを扱う場合はデータ操作言語(DML)を理解することで利用できます。ここでは、データ操作言語(DML)の言語要素であるSELECT文・INSERT文・UPDATE文・DELETE文を説明していきます。
SELECT文の使い方は?
SELECT文はデータの検索・抽出を行います。
構文: SELECT [ALL | DISTINCT] 列名 FROM “テーブル(表)名” [WHERE 条件式] [GROUP BY “カラム(列)名” [HAVING 条件式]] [ORDER BY “カラム(列)名”];
以下に構文の解説を行います。 ・SELECT句 SELECT文の実行「データの検索・抽出」 [ALL | DISTINCT] ALL:デフォルト値、重複検索時もすべてを返す、DISTINCT:重複を除く 列名 列名称・複数指定可、 * を指定すると全ての列を対象とする ・FROM句 テーブル(表)の指定 テーブル(表)名 複数指定化 ・WHERE句 抽出条件を指定 条件式 演算子を用いた条件を指定 演算子 算術演算子、論理演算子、SQL演算子 算術演算子 =、 <>、>、 >=、<、<= 論理演算子 AND、OR SQL演算子 IN、BETWEEN、LIKE、IS NULL、IS NOT NULL IN 一致する値を判断 BETWEEN 指定範囲内に値があるか判断する LIKE 条件に合致する文字列を検索する IS NULL 値がNULL(空値)を検索 IS NOT NULL 値がNULLではないデータを検索 ・GROUP BY句 カラム(列)名のグループ化 HAVING句 GROUP BY句の集計結果に抽出条件を設定 ・ORDER BY句 ソートするカラム(列)名の指定
使用例: SELECT * FROM 従業員テーブル WHERE 従業員ID >= 2000 ORDER BY 所属部署; (従業員テーブルから従業員番号2000番以降の従業員情報を所属部署でソートし全件表示する)
INSERT文の使い方は?
INSERT文は行の追加・挿入を行います。
構文: INSERT INTO “テーブル(表)名” VALUES (値[,,]);
以下に構文の解説を行います。 ・INSERT句 INSERT文の実行「行の追加・挿入」 テーブル(表)名 テーブル(表)の指定、加えてカラム(列)名を指定化 ・VALUES句 値を指定 値 カラム(列)に応じたタイプの値を設定
使用例: INSERT INTO 従業員テーブル(氏名, 従業員ID, 所属部署) VALUES (‘Foo’, 3001, ’B005’) (従業員テーブルの氏名、従業員ID、所属部署に対して’Foo’、3001、’B005’を追加する)
UPDATE文の使い方は?
UPDATE文はデータの更新を行います。
構文: UPDATE “テーブル(表)名” SET “カラム(列)名” = 値 [WHERE 条件式];
以下に構文の解説を行います。 ・UPDATE句 UPDATE文の実行「データの更新」 テーブル(表)名 テーブル(表)の指定 カラム(列)名 カンマ(,)で区切ることで複数指定化 ・WHERE句 抽出条件を指定 条件式 演算子を用いた条件を指定
使用例: UPDATE 従業員テーブル SET 所属部署 = ‘C001’ WHERE 従業員ID = 3001; (従業員テーブルの従業員ID 3001の所属部署を’C001’に更新する)
DELETE文の使い方は?
DELETE文はレコード(行)の削除を行います。
構文: DELETE FROM “テーブル(表)名” [WHERE 条件式];
以下に構文の解説を行います。 ・DELETE句 DELETE文の実行「レコード(行)の削除」 テーブル(表)名 テーブル(表)の指定 ・WHERE句 抽出条件を指定 条件式 演算子を用いた条件を指定
使用例: DELETE FROM 従業員テーブル WHERE 従業員ID = 3001; (従業員テーブルから従業員IDが3001のレコード(行)を削除する)
データベースのサンプルは?
SQLはRDBMS製品によりそれぞれ違いが見られます。そのため、各製品に応じたSQL構文を確認することが望ましいでしょう。RDBMS提供各社ではサンプルデータベースを提供し、普及に努めています。詳しくは、以下のリンクにサンプルデータベース情報が記載されていますのでご確認ください。 参考:Oracle Database Sample Schemas 参考:MySQL Employees Sample Database 参考:Microsoft SQL のサンプル 参考:PostgreSQL Sample Database 参考:IBM db2sampl - サンプル・データベースの作成コマンド
上記RDBMSに関する情報、並びに標準SQLに関する情報については一般書籍が多数出版されていますので必要に応じてご参照ください。
SQL文を理解してデータ分析に強みを持ちましょう
Web系システムにおいても基幹系システム同様に、データを収集し分析するためにはDBMSの活用が有効です。DBMSの主流はRDBMSなため、RDBMSのデータ操作を行うSQL文は有力な武器となります。そのためSQL文の理解を深めて、今後ますます期待されるデータ分析の専門家として可能性を高めましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから