IT

【超初心者向け】SQLとは?文法やデータベースとの関係を分かりやすく解説します!

本記事は教養記事シリーズその32です。その他の教養記事はコチラの目次をご覧ください。

★この記事の流れ★

SQLとは?
データベースとは?
種類は?
文法は?

本記事は初学者の理解を優先しているため正確性に欠ける場合があります。致命的なミスはご指摘いただけますと助かります。

SQLとは?

SQLって…?
何の略なんだ?

 

SQLは「エスキューエル」「シークェル」「シーケル」などと呼ばれ,言語の一種です。

 

え!?プログラミング言語ってこと?
pythonとかjavaとかと同じってこと?

 

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上で利用される共通言語のことを指すのです。

多くの場合はDBMSは単に「データベース」と略されます。

 

文法

SQLの機能は,大きく分けて3種類に分類されます。

●DDL(Data Definition Language)
●DML(Data Manipulation Language)
●DCL(Data Control Language)

DDLはデータ定義言語,DMLはデータ操作言語,DCLはデータ制御言語と呼ばれます。

 

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 [条件]
条件は「ASC(昇順)」「DESC(降順)」です。

結合

SELECT [列名] FROM [テーブル名1] INNER JOIN [テーブル名2] ON [結合の条件]
SELECT [列名] FROM [テーブル1] LEFT(RIGHT) OUTER JOIN [テーブル名2] ON [結合の条件]
上側は内部結合,下側は外部結合と呼ばれています。内部結合は条件に一致するものだけを結合しますが,外部結合はFROMで指定したテーブルに存在すれば全て表示してしまうという方式です。

 

DCL

DCLはデータベースを制御する言語で,機能は「ユーザ権限」「トランザクション」などに分けられます。

トランザクションとは「処理のかたまりを表す単位」だと考えてください。

 

ユーザ権限付与

GRANT [権限] ON [対象のデータベース].[対象のテーブル] TO 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード';

ユーザ権限削除

REVOKE [権限] ON [レベル] FROM user;

トランザクション開始

BEGIN TRANSACTION;

トランザクション完了

COMMIT;

トランザクション取り消し

ROLLBACK;

 

ひとこと

SQLは,まさに私たちのIT技術を利用した生活の根底をなす概念だと感じました。Googleやアマゾンを筆頭に,ビックデータの処理がポイントとなる次世代では,SQLのようなデータベース処理の方法にも何らかの革命が必要なのかもしれません。

ABOUT ME
zuka
京都大学で機械学習を学んでいます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※ Please enter your comments in Japanese to prevent spam.