SQLとは。SQLでできること

SQLを学習することになりました。

SQLはデータベースからデータを取得するための言語というイメージがあります。 他にもできることはあるのでしょうか? あと、SQLはプログラミング言語とは違うのですか?

今回はこのような疑問に答えていきます。

SQL自体はプログラミング言語ではなく、 PHPやRubyなどのプログラミング言語と組み合わせて使う言語です。
データベースを操作するための言語で、 データを取得する以外にもいろいろなことができます。

そこでこの記事では、 SQLとは、SQLでできることについて解説します。

SQLとは

SQLは「Structured Query Language」の略で普通は 「エスキューエル」と読みます。

Query(問い合わせ)とはRDB(リレーショナルデータベース) に対する処理要求(データの取得・更新など)のことをいい、 このことからSQLは 「問い合わせ言語(データベース言語)」と言われています。

SQLは問い合わせ言語(データベース言語)であって、 プログラミング言語ではありません。 アプリケーションを作る場合は、 Python、PHP、Rubyなどのプログラミング言語にSQLを組み込む形で使います。

SQLを使うと大量のデータの取得、更新、削除を高速で行うことができるため、 ある程度の規模のアプリ開発にはSQLの知識が要求されます。 多くのアプリ開発者にとってSQLは遅かれ早かれマスターする必要のある言語です。

SQLの規格はISOによって標準化されていて、 Oracle、DB2、SQL Server、My SQL、PostgreSQLなどの 複数のデータベースでほぼ同じように使うことが可能です。 (若干の違いはありますが)

SQLでできること

具体的にSQLでできることを紹介します。

できること①:データベース・テーブル作成

データベース

通常データベースを扱う場合、 まずは最初にデータベースという大きな枠組みを作成し、 次にデータベースの中に複数のテーブルを作成します。

データベースがイメージしづらい場合は、 エクセルをイメージしてください。
エクセルブックの中に複数のシートがあって、 シートの中に実際のデータを入力しますよね。 エクセルブックがデータベースで、 各シートがテーブルのイメージです。

SQLはデータベースやテーブルを作る以外にも 削除や変更を行うことも可能です。
使うSQLは次の通り。


CREATE DATABASE: データベース作成
CREATE TABLE   : テーブル作成

DROP DATABASE  : データベース削除
DROP TABLE     : テーブル削除

ALTER DATABASE : データベース変更
ALTER TABLE    : テーブル変更

上のCREATE、DROP、ALTERを使ったSQLのことを「DDL(Data Definition Language)・ データ定義言語」と言います。

できること②:データ(レコード)検索・操作

検索

SQLで一番使用頻度の高いのがこのデータ検索・操作の部分です。
テーブルに入っているデータを検索したり、 挿入・削除・更新したりできます。

使うSQLは次の通りです。


SELECT: データ検索
INSERT: データ挿入
DELETE: データ削除
UPDATE: データ更新

上のSELECT、INSERT、DELETE、UPDATEを使ったSQLのことを 「DML(Data Manipulation Language)・データ操作言語」と言います。

できること③:データ権限制御

許可

SQLでデータに対する権限を制御することもできます。
例えば、

  • ユーザーAはデータ検索のみ可能
  • ユーザーBはデータ検索+データ更新が可能
  • ユーザーCは管理者として全ての操作が可能

このように、ユーザーごとに適切な権限を与えることで セキュリティを高めることができます。
データ権限制御で使うSQLは次の通りです。


GRANT: 権限の追加
REVOKE: 権限の削除

GRANT、REVOKEを使ったSQLのことを 「DCL(Data Control Language)・データ制御言語」と言います。

できること④:トランザクション制御

トランザクション

トランザクションとは処理の単位のことです。
データベースの更新処理において、 複数の処理を1つの処理としてまとめて行う場合に使われます。

例えば、あなたがA銀行の口座からB銀行の口座へ10万円移動させるとします。 この場合、必要な更新処理は次の2つです。

  • A銀行の口座をマイナス10万円
  • B銀行の口座をプラス10万円

この2つの処理はワンセットであって、 どちらか片方だけの処理では不整合が生じます。 このような 切り離せない複数の処理を、1つの処理として行うのが トランザクション処理です。

トランザクションの制御を行うSQLには次のようなものがあります。


COMMIT           : 確定
ROLLBACK         : 元に戻す
SET TRANSACTION  : トランザクションを設定
SAVEPOINT        : セーブポイントを指定

COMMIT、ROLLBACK、SET TTANSACTION、SAVEPOINTのことを 「TCL(Transaction Control Language)・トランザクション制御言語」と言います。

但し、DBMSによってはTCLはDCL(Data Control Language)として扱われる場合があります。

できること⑤:ストアドプロシージャ作成

ストアドプロシージャ(stored procedure)とは、 プログラミングでいう関数のようなものです。
「プロシージャ」は複数の処理を1つにまとめたもので、 「ストアド(stored)」 はデータベース上に保存されているという意味。 つまりストアドプロシージャとは 「データベースに保存された1かたまりの処理」 のことです。

ストアドプロシージャを使えば、 関数のようにいつでも呼び出せるため、 複数のSQLを発行する手間が省けます。
使うSQLは次の通りです。


CREATE PROCEDURE : ストアドプロシージャの作成
DROP PROCEDURE   : ストアドプロシージャの削除
ALTER PROCEDURE  : ストアドプロシージャの再コンパイル

CREATE、DROP、ALTERを使っているので、 「DDL(Data Definition Language)・データ定義言語」です。

できること⑥:ビュー(View)作成

複数テーブル

ビュー(View)とは仮想的なテーブルのことです。

データベースには複数のテーブルが存在し、 それらが有機的につながっています。 1つのテーブルからだと欲しい情報が得られない場合は、 複数のテーブルを結合して情報を取得します。

ビューは複数のテーブルからユーザーの欲しい情報のみを取得し、 あたかも1つのテーブルのように見せることが出来る機能です。

ユーザーが検索する際は SELECT文の対象としてテーブルを指定するのではなく、 ビューを指定します。 ビューの指定を行うことでユーザーが複数のテーブルを自分で結合する必要はなく、 1つのビューから欲しい情報を得ることが可能です。
使うSQLは次の通りです。


CREATE VIEW : ビューの作成
DROP VIEW   : ビューの削除
ALTER VEIW  : ビューの変更

CREATE、DROP、ALTERを使っているので、 「DDL(Data Definition Language)・データ定義言語」です。

SQLの学習方法

タイトルとURLをコピーしました