本記事は教養記事シリーズその32です。その他の教養記事はコチラの目次をご覧ください。
データベースとは?
種類は?
文法は?
読みたい場所へジャンプ!
SQLとは?
SQLは「エスキューエル」「シークェル」「シーケル」などと呼ばれ,言語の一種です。
SQLはプログラミング言語と異なり,データベースとのやり取りに特化した言語です。しかし,データベースと言われてもパッとこないですよね。そこで,データベースに関して簡単に説明を加えていきます。
データベース
データベースは「ある一定の規則に従って整理された大量のデータの集まり」のことを指します。規則の定め方によって,データベースは主に4種類に分類されます。
階層型
階層型は歴史の一番古いデータベースの種類で,木の形をしたデータベースです。このような構造は,根本の要素(○○大学)から葉の要素(…学科)まで木に似た形で可視化されるため,一般にツリー構造(木構造)と呼ばれています。データの検索の速度が速いことが特徴ですが,場合によっては葉の要素に重複してデータを登録しなくてはならなかったり,新要素を挿入後,いちいちルートを確認しなくてはならなかったりする欠点もあります。
ネットワーク型
ネットワーク型は階層型とは異なり,子(下にある要素)は複数の親(上にある要素)とつながることができます。階層型よりも柔軟性が増した構造です。
リレーショナル型
リレーショナル型は,現在最も広く普及しているデータベースの種類で,表を利用した手法です。表には重複しないようなキー(上の表で言うと社員番号)が定められ,そのキーを指定することで行を一意に選ぶことができます。また,複数の表を連携させることで豊富なデータの処理が可能になります。
NoSQL
NoSQLは「Not Only SQL」の略称で,新しい種類のデータベースです。明確な定義はまだありませんが,GoogleのBigtable,AmazonのDynamoDBなどに見られるように,多くの企業が活用を始めています。特徴としては,リレーショナル型よりもデータの整合性が緩い分,より高速な処理を実現していることが挙げられます。
DBMS
SQLの文法解説に入る前に,DBMSについてもお話ししておきます。DBMSは「Data Base Management System」の頭文字を取ったもので,データベースを活用するためのソフトやシステムのことを指します。具体的には,「Oracle」や「MySQL」がシェアを誇っているDBMSの代表例になります。
特に,リレーショナルデータベースを扱うDBMSを「RDBMS」と呼びます。そして,SQLはRDBMS上で利用される共通言語のことを指すのです。
文法
SQLの機能は,大きく分けて3種類に分類されます。
●DDL(Data Definition Language)
●DML(Data Manipulation Language)
●DCL(Data Control Language)
DDL
DDLはデータベースに関する定義を定める言語です。機能としては「作成」「削除」「変更」などに分けられます。
データベースの作成
CREATE DATABASE [データベース名];
データベースの削除
DROP DATABASE [データベース名];
テーブル名の変更
ALTER TABLE [テーブル名] RENAME TO [新しいテーブル名];
DML
DMLはデータベースを操作する言語で,重複しないように定められた「主キー(Primary Key)」を指定して行を特定し,「4つの操作」を組み合わせてデータベースとやり取りをします。
新規登録
INSERT INTO [テーブル名] ([要素Aの名前],[要素Bの名前]) VALUES([要素Aのデータ],[要素Bのデータ]);
検索
SELECT [要素名] FROM [テーブル名];
更新
UPDATE [テーブル名] SET [更新処理];
削除
DELETE FROM [テーブル名];
また,応用として「検索の絞り込み」「並び替え」「結合」が挙げられます。また,「*」はすべての要素を表します。
検索の絞り込み
SELECT * FROM [テーブル名] WHERE [条件]
並び替え
SELECT * FROM [テーブル名] ORDER BY [条件]
結合
SELECT [列名] FROM [テーブル名1] INNER JOIN [テーブル名2] ON [結合の条件]
SELECT [列名] FROM [テーブル1] LEFT(RIGHT) OUTER JOIN [テーブル名2] ON [結合の条件]
DCL
DCLはデータベースを制御する言語で,機能は「ユーザ権限」「トランザクション」などに分けられます。
ユーザ権限付与
GRANT [権限] ON [対象のデータベース].[対象のテーブル] TO 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード';
ユーザ権限削除
REVOKE [権限] ON [レベル] FROM user;
トランザクション開始
BEGIN TRANSACTION;
トランザクション完了
COMMIT;
トランザクション取り消し
ROLLBACK;
ひとこと
SQLは,まさに私たちのIT技術を利用した生活の根底をなす概念だと感じました。Googleやアマゾンを筆頭に,ビックデータの処理がポイントとなる次世代では,SQLのようなデータベース処理の方法にも何らかの革命が必要なのかもしれません。