今回は、SQLと呼ばれるデータベースを操作するための言語について説明します。
MySQLやPostgreSQLなどのデータベース(RDBMS)や、BigQueryなどのデータウェアハウスなどの導入をご検討されている方、コンピューターサイエンス・データサイエンスなどにご関心がある方、学習を始めたいと考えている方は、SQLという用語を目にすることが多いと思います。
SQLは、アルファベットや数字、算術演算子で書かれるコードで、見た目的にはプログラミング言語をイメージするかもしれません。
この記事では、SQLとは、をテーマに初心者でもわかりやすく実例も紹介しながら説明します。
SQLとは・・データベースを操作するための言語
SQLとは、Structured Query Languageの頭文字を取った略語と言われており、リレーショナル・データベース管理システム(RDBMS)を操作するための言語です。
非標準SQLと標準SQL
SQLには、標準団体であるANSIやISOによって改訂された標準SQLという規格がありますが、標準SQLはすべてのRDBMSで使えることを強制事項にしていません。
つまり、標準SQLで記述したにも関わらず、RDBMSの種類によっては正常に動作しないこともあるのです。
一方、SQLには、RDBMSごとの「方言」が存在しており、構文によっては標準SQLではなくそのRDBMSに応じた「方言」で記述する必要があります。(非標準SQL)
これは、SQLが誕生してから標準規格が定められるまでの事情によるものですが、詳細は別記事で紹介します。
SQLの「方言」は部分的な構文に限られますので、これからSQLの学習を始める方は、標準SQLを意識して学習すればよいでしょう。
SQLはデータベースへの命令文
SQLは、データベースを操作するための言語という説明をしましたが、さらに具体的に説明すると、SQLはデータベースへの命令文です。
データベースは開いたばかりのExcelと同様、最初はデータもテーブルも何も無い状態です。
何も無い状態からテーブルを作成したり、データを追加・編集・削除したりしながら、データベースを構築していきます。
このようにデータベースを構築する際に使うのがSQLであり、様々なSQL文を実行し命令することによって、データベースを運用していくのです。
SQLの命令の分類
SQLは、データベースに与える命令の種類によって、次の3つに分類されます。
DDL(Data Difinition Language)
RDBMSにデータベースやテーブルを作成・削除するSQL命令文はDDL(データ定義言語)に分類されます。具体的には次のようなものがあります。
- CREATE文・・データベースやテーブルなどを作成
- DROP文・・データベースやテーブルなどを削除
- ALTER文・・データベースやテーブルなどの構成を変更
DML(Data Manipulation Language)
テーブルの行を検索したり、追加・変更・削除するSQL命令文はDML(データ操作言語)に分類されます。具体的には次のようなものがあります。※他の命令の種類よりも圧倒的に使用頻度が高い
- SELECT文・・テーブルから行を検索
- INSERT文・・テーブルにデータを追加
- UPDATE文・・テーブルの行を更新
- DELETE文・・テーブルの行を削除
DCL(Data Control Language)
データベースに変更を加えたり、取り消ししたりする他、RDBMSのユーザーの権限設定を行う命令文はDCL(データ制御言語)に分類されます。具体的には次のようなものがあります。
- COMMIT文・・データベースに加えた変更を確定
- ROLLBACK文・・データベースに加えた変更を取り消し
- GRANT文・・ユーザーに操作権限を与える
- REVOKE文・・ユーザーの操作権限を奪う
SQL文の基本文法
ここまでに説明したように、SQLはデータベースに対して行う様々な操作を命令するための言語です。言語である以上、SQL文には記述するうえでの基本的なルールや文法も存在します。
この章では、SQL文の基本文法について説明します。
SQLの文末はセミコロン「;」
SQL文を記述するときには、1文ごとにセミコロン「;」で区切ります。日本語の文末を「。」で区切るようなイメージです。
SELECT * FROM sample_01.department;
大文字と小文字のルール
SQL文では、アルファベットの大文字と小文字は区別されません。下記の2つのSQL文はどちらもエラーは発生せず、同じ答えを返します。
SELECT * FROM sample_01.department;
select * from sample_01.department;
ただし、通常、組織でSQLを使う場合には「視認性(見やすさ)」の観点で、大文字・小文字のルールを定めておくのが普通です。たとえば、SELECTやWHEREなどのSQLの予約語は大文字で記述し、テーブルやカラム(フィールド)名は小文字で記述するなどです。
重要:大文字・小文字が区別されないのは、あくまでもSQL文です。テーブルに登録されたデータは大文字・小文字が区別されます。たとえば、テーブルの登録されたデータが『Analytics』の場合、「ANALYTICS」や「analytics」と同じに扱うことはしません。
(データ内に大文字・小文字が混在している場合には、一斉に変換するなどの対策が有効です)
単語の区切りの半角スペース(または改行)
SQL文では、単語の区切りに半角スペース、または改行を使います。半角スペースが抜けていると単語が連結してしまい、正しい意味を持たずエラーが発生してしまいます。
また、半角スペースの代わりに全角スペースを使うこともできません。
○CREATE DATABASE analytics;
×CREATE DATABASEanalytics;
×CREATEDATABASE analytics;
×CREATE DATABASE analytics;
注:4番目の例は、全角スペースを使っています
SQLの実例紹介
前章までに、「SQLとは」というテーマやSQLの基本文法について説明しました。当記事の最後で、SQL文の実例を紹介しておきます。
中盤で紹介したDML(データ操作言語)の「SELECT」「INSERT」「UPDATE」「DELETE」です。
この記事で紹介するのは、初歩のSQL文です。それぞれのSQL文の詳細は、改めて別記事で説明します。
SELECT
SELECTは、データベース内のテーブルからデータを取得するときに使います。
SELECT * FROM department;
departmentというテーブルから、全カラム分のデータを取得するSQL文です。
INSERT
INSERTは、データベース内のテーブルにデータを追加するときに使います。
INSERT INTO department (bumon_name) VALUES('経理');
departmentというテーブルの[bumon_name]という列に、経理というデータを追加するSQL文です。(この例では、1カラム分を追加していますが、通常は複数カラム分の処理を行います)
UPDATE
UPDATEは、データベース内のテーブルのデータを更新するときに使います。
UPDATE department SET torokubi_id = '2022/01/01';
departmentというテーブルの[torokubi_id]という列を、2022/01/01というデータで上書きするSQL分です。
DELETE
DELETEは、データベース内のテーブルを削除するときに使います。
DELETE FROM department;
departmentというテーブルの全行を削除するSQL文です。
あとがき
今回は、SQLとは、をテーマに、SQL文の基本文法から初歩的な実例文まで記事にしました。
SQLと関連性の強いデータサイエンスの領域は、ビッグデータ・機械学習・ディープラーニング・AIにも通じる、将来性が非常に高い分野です。この記事が、SQLを学習・活用するきっかけとなれば幸いです。
当サイトでは引き続き、SQL関連の情報を発信していきます。