SQLとは?

SQLとはデータベースを操作するためのデータベース言語で、データベースに挿入されているデータの検索、書き換えといった操作ができます。
データベースには多くのデータが保存されていますが、SQLを使うことで効率的に操作をすることが可能になります。
SQLはISOで国際標準化されており、どのデータベースでもほとんど同じように操作できます。
有名なデータベースとしてはオープンソースのMySQLやPostgreSQL、Oracle社のOracle Database、Microsoft社のMicrosoft SQL Server/Accessなどがあります。
SQLとはデータベースを操作するためのデータベース言語で、データベースに挿入されているデータの検索、書き換えといった操作ができます。
データベースには多くのデータが保存されていますが、SQLを使うことで効率的に操作をすることが可能になります。
SQLはISOで国際標準化されており、どのデータベースでもほとんど同じように操作できます。
有名なデータベースとしてはオープンソースのMySQLやPostgreSQL、Oracle社のOracle Database、Microsoft社のMicrosoft SQL Server/Accessなどがあります。
SQLとセットで覚えておきたい「データベース」
データベースとは、検索しやすいように管理されている蓄積されたデータの集まりです。
電子媒体だけがデータベースというわけではなく、紙媒体の電話帳やSNSの連絡先一覧などもデータベースに該当します。
ここからはSQLについてより詳しく解説します。
SQLには3つのポイントがあげられます。
データベースを操作するのに必要な「データベース言語」
先述のとおり、データベースはデータの集合体を格納した箱のようなものです。
その箱に格納されたデータに対して、データベース言語というデータベース専用の言語を使用することでデータを検索、データの追加、更新、削除などの操作をします。
SQLとは、そのデータベース言語の一つです。
「RDB」という種類のデータベースを操作する
SQLは、データベースを操作するための専用言語と前述しましたが、正確には、「RDB(リレーショナルデータベース)という種類のデータベースを操作するための専用言語」がSQLです。
データベースには、データ構造やデータの関連付けの違いによって以下の3つに区分されます。
・階層型データベース
1つのノードから下に複数のノードが派生するツリー状に構成されており、あるノードへのルートが限定的であるため速度が早くなるというメリットがある一方で複数の親ノードを持ちたい場合に重複登録を行う必要があることやデータの追加や削除を行った場合はルートを再登録する必要があるというデメリットがあります。
・ネットワーク型データベース
ノードが網状に構成されており、1つの子ノードが複数の親ノードを持つことができるため、階層型データベースで難点となっている重複登録を避けられます。
ネットワーク型データベースの「ネットワーク」は、そのようにノードの繋がりが網目状になるところから由来しています。
しかし、階層型ネットワークと同様にプログラムがデータ構造に依存してしまうというデメリットがあります。
・リレーショナル型のデータベース
エクセルのように列と行といった表形式で構成されており、列に「従業員名」「住所」「電話番号」といった項目を設け、行に各データを入力していきます。
従来型のデメリットであった「柔軟なデータの取り扱い」を可能にし、プログラムの幅を広げられましたが、プログラムが複雑化しやすい点や、それによる処理速度の遅延がデメリットです。
現在、最も普及しているデータベースであり、データベースといえばリレーショナルデータベースを指すことが多いです。
RDBでは、集めたデータを決まった定義で並べたテーブルのことを「データテーブル」と呼びます。
RDBの例としては、会社内の社員名簿をイメージするとわかりやすいでしょう。
たとえば、「株式会社テックマニア」という会社の中に、会社全体の社員名簿や部署別に必要なデータを並べた名簿といった用途別に数種類の社員名簿があるとします。
それらすべての名簿を集めた箱が「データベース」であり、特定の条件で並べた名簿一つ一つが「データテーブル」です。
プログラムを動かすことはできない
SQLだけでは、プログラムを動かすことができません。
C言語やPython、Javaなどは、プログラム言語と呼ばれ、コンピュータプログラムを動かすために必要な言語であるのに対し、SQLはデータベースの操作に特化した言語なので、SQL単独ではデータベースから抽出した結果をファイルに書き出すことも、画面に表示させることもできません。
プログラミング言語は、コンピュータに対してループや条件分岐などを組み合わせて繰り返し処理、複雑な処理などを命令できます。
それに対してSQLはデータベースに対してしか命令できませんし、その命令方法もとてもシンプルです。
基本的にデータベースに対して一行程度の命令文をコマンドへ打ち込むと、実行されるという方式で、これを対話型と呼びます。
連続した操作や複雑な操作を行いたい場合は他のプログラミング言語の記述の中に、SQLの文を埋め込むことで命令を実行でき、これを埋め込み型といいます。
このようにデータベース言語は、用途の限られた簡潔な言語であり、それぞれが持つ役割は大きく異なることを覚えておきましょう。
●SQLの種類
SQLは、データベースを制御・操作する際に使い分ける必要があり、用途別に3つに分類することができます。
データ定義言語(Data Definition Language)
データ定義言語はDDLと略され、RDBを構成するデータテーブルの作成、削除、定義の変更などの処理を行う際に使用します。
DDLの主なSQL命令
CREAT:データテーブルを作成する
ALTER:データテーブルの定義変更をする
JOIN:複数のデータテーブルを結合する
DROP:データテーブルを削除する
データ操作言語(Data Manipulation Language)
データ操作言語はDMLと略され、データテーブルに格納するデータの追加、検索、更新、削除などの処理を行う際に使用します。
DMLの主なSQL命令
INSERT:データテーブルにデータを追加する
SELECT:データテーブルの格納データを検索する
UPDATE:データテーブルの格納データを更新する
DELETE:データテーブルの格納データを削除する
データ制御言語(Data Control Language)
データ制御言語はDMLと略されます。
DDLやDMLがデータテーブルや格納データを操作するためのSQLであるのに対し、DCLはそれらのサポート的な機能があるSQLです。
DCLの主なSQL命令
GRANT:アクセス権限の付与
REVOKE:アクセス権限の解除
●SQLの具体例
ここからはSQLの基本操作としてDDL、DMLのSQL文を事例に沿ってご説明します。
前述した株式会社テックマニアにて部署新設に伴い、新しい名簿作成が必要になったと仮定します。
≪事例≫
株式会社テックマニアで、「新規事業部」が新設されることになった
部署新設に当たり所属社員の名簿作成が必要となった
名簿構成
列名 | 社員番号 | 氏名 | 入社年月日 | 住所 |
データ形式 | 数値型 | 文字型 | 日付型 | 文字型 |
データ列 | 0001 | 手久マリア | 20210101 | 東京都港区××××××× |
1.データテーブルの作成(CREATE)
名簿構成に従って新規事業室のデータテーブルを作成します。
データテーブルの作成するCREATE文では、テーブル名、テーブルを構成する列名、データ形式を指定します。
なお、SQL文の終わりは「;」で区切る決まりになっており、「CREATE~;」までが一文として認識されています。
CREATE TABLE 新規事業部
(社員番号 数値型,氏名 文字型,入社年月日 日付型,住所 文字型);
2.データの追加(INSERT)
1で作成したデータテーブルに、新規事業部の社員を登録します。
データ追加を行うINSERT文では、社員1人分を1つのSQL文とします。
INSERT INTO 新規事業部
VALUES(0001,’手久マリア’,’20210101′,’東京都港区×××××××’);
INSERT文を実行後、新規事業部のデータテーブルに、「手久さん」の社員データが追加されます。
以降、新規事業部に所属する社員を同じようにINSERT文で実行していきます。
3.データの検索(SELECT)
新規事業部の社員を登録したデータテーブルから、条件に一致する社員を検索します。
データ検索を行うSELECT文では、「WHERE」以降に検索条件を指定します。
4.データの更新(UPDATE)
新規事業部の社員を登録したデータテーブルで、住所変更があった社員データを更新します。
データ更新を行うUPDATE文では、「WHERE」以降で更新対象の社員の検索条件を指定し、「SET」に更新情報を設定します。
社員番号:0001の手久さんの住所を「東京都千代田区」に更新します。
UPDATE 新規事業部 SET 住所 = ‘東京都千代田区×××××××’ WHERE 社員番号 = ‘0001’;
5.データの削除(DELETE)
新規事業部の社員を登録したデータテーブルから、社員データを削除します。
データ削除を行うDELETE文では、「WHERE」以降でデータ削除対象の社員の検索条件を指定します。
退職する手久さんの社員データを削除します。
DELETE FROM 新規事業部 WHERE社員番号 = ‘0001’;
6.データテーブルの削除(DROP)
手久さんの退職に伴い、新規事業部を解散することになったので新規事業部のデータテーブルを削除します。
データテーブルを削除するDROP文では、削除対象のデータテーブル名を指定します。
DROP TABLE 新規事業部;
上記のDROP文を実行すると、新規事業部のデータテーブルは格納データごと削除されるため、操作は慎重に行う必要があります。
そのため、SQLを使用する際は、SELECT文しか使えない一般権限と、SQLのすべての機能が使用できる上位権限を持つことが一般的です
最後に
SQLについて基礎知識から具体例まで解説してきましたが、いかがでしたか?
世の中には数多くのWebシステムが存在していますが、大半のWebシステムにはデータベースが使用されています。
つまりデータベース言語でもっとも普及しているSQLが扱えれば、それだけ多くのデータベースを扱えるということです。
データを扱えれば、業務スピードも高まることも期待でき、ビジネスおいて大きなメリットがあるでしょう。