SQLについて徹底解説!

SQLとは何か?IT初心者向けにわかりやすく解説します!

あべとも

インフラエンジニア/運用設計/ボールド歴6年

SQL」という単語を聞いたことがなくても、「データベース」は誰もが一度は耳にしたことがあるのではないでしょうか。SQLとは、データベースを操作するために使う特別な言語です。

本記事では、「SQLって聞いたことはあるけど、詳しく知らない」「データベースも実はよくわからない。」というIT初心者向けに、SQLの基礎知識をわかりやすく解説します。本記事の内容を押さえておけば、SQLの概要レベルの知識はバッチリです。


1.SQLとはなにか?

まずは、ズバリ「SQLとはなにか?」から解説していきましょう。

1.SQLはデータベースを操作するための言語

SQLとはなにか?」の一番シンプルな答えは、まさに本項のタイトルのとおりです。さらに解説を付け加えるならば、以下の3つのポイントをあげることができます。SQLの基礎の基礎として、まずはこの3つをしっかり覚えておきましょう。

  1. SQLは、データベースを操作するために必要な「データベース言語」。
  2. SQLは、「RDB」という種類のデータベースを操作する。
  3. SQLはデータベース操作に特化した言語なので、プログラムを動かすことはできない。

3つのポイントについて、それぞれもう少し肉付けして解説します。

1.SQLは、データベースを操作するために必要な「データベース言語」。

言葉だけはよく耳にする機会が多い「データベース」ですが、その実体とは、「ある特定のテーマで集めたデータの集合体」を格納したハコのようなものです。そのハコに格納されたデータに対して、特定の条件で検索したり、データの追加、更新、削除等の操作をするために、「データベース言語」という専用の言語を使用します。SQLとは、そのデータベース言語なのです。

2.SQLは、「RDB」という種類のデータベースを操作する。

SQLは、「データベースを操作するための専用言語」と前述しましたが、正確には、「RDBという種類のデータベースを操作するための専用言語」がSQLです。そして、データベースには、データ構造やデータの関連付けの違いによっていくつかの種類があります。データベースの種類やデータベース言語については、次項以降でさらに詳しく解説します。

ここでは、「SQLRDBで使うもの」と呪文のように覚えておきましょう。

3.SQLはデータベース操作に特化した言語なので、プログラムを動かすことはできない。

IT初心者にはちょっと複雑かもしれませんが、SQLについての大事なポイントは、実はこの点です。SQL単独では、プログラムを動かすことができません。みなさんがよく耳にするC言語やPythonJava等は、プログラム言語と呼ばれ、コンピュータプログラムを動かすために必要な言語なのです。それに対して、SQLはデータベースの操作に特化した言語なので、SQLを使ってプログラムを動かすことはできないというわけです。データベース言語とプログラム言語の違いについても、次項以降で改めて解説します。

※厳密なお話をすると、昨今ではSQLを使用しなくてもRDBを操作できるプログラム言語も存在します。ですが、SQLの概要説明を目的とする本稿では、今回はあえて言及しません。

2.そもそもデータベースとはナニモノか?

前項でも少し触れましたが、データベースとは、「ある特定のテーマで集めたデータの集合体」を格納したハコのようなものです。その目的とは、大量なデータを効率的に管理することです。大量データを格納するためのハコは、データ構造等によっていくつかの種類に分類されます。SQLを使用するRDBは、その中でも「リレーショナル型」と呼ばれるデータベースです。データベースの主な種類は、下表の4種類があります。

データベースの種類

SQLが使用可能なRDB(リレーショナルデータベース)は、エクセルのような表形式でデータを管理します。集めたデータを決まった定義で並べたテーブルのことを、RDBでは「データテーブル」と呼びます。

表形式のRDBの例としては、会社内の社員名簿をイメージするとわかりやすいでしょう。仮に、「株式会社エンジニアクラブ」という会社の中に、用途別に数種類の社員名簿があるとします。会社全体で共通する社員名簿もあれば、部署別に必要なデータだけ並べた名簿もあるでしょう。それらすべての名簿を集めた外枠が「データベース」であり、それぞれの条件で並べた名簿のひとつひとつが「データテーブル」です。

データベースの種類や特徴について、より詳細に知りたい人向けには、本サイトの以下の記事をオススメします。こちらの記事も、ぜひ参考にしてみてください。

関連記事

3.データベース言語とプログラム言語は用途が異なる

SQLがRDBを操作するために特化したデータベース言語であり、プログラムを動かすための言語ではないことは、前述したとおりです。データベース言語とプログラムを動かすためのプログラム言語は、その用途が大きく違います。大事なことなので何度も書きますが、データベース言語(SQL)は、あくまで「RDBを操作するための言語」なので、単独ではデータベースから抽出した結果をファイルに書き出すことも、画面に表示することもできません。それをするためには、プログラム言語で書かれたプログラムの中に、SQL文を埋め込んで処理する必要があるのです。プログラム言語には種々様々ありますが、C言語やJavaPHPPythonHTML等が有名です。

また、データベースのトップシェアを独走するRDBにおいて、SQL以外にもTutorial DLINQと呼ばれるデータベース言語が存在します。とはいえ、SQLに比べるとその認知度は低く、データベース言語においてはSQLが独り勝ちの状態です。

データベース言語とプログラミング言語は異なる


2.SQLを習得するメリットとは

最初に、誤解のないように申し上げておきますが、SQLを習得しなければITエンジニアの仕事ができないというわけではありません。SQLを知らなくてもITエンジニアにはなれますし、そういう意味では、SQLの習得は、ITエンジニアになるための「必須条件」ではありません。それでは、ITエンジニアがSQLを習得するメリットとは、どのような点にあるのでしょうか。

本章では、開発系エンジニアとインフラ系エンジニアに分けてそれぞれ解説します。

1.開発系エンジニアとしてのメリット

開発系エンジニアとしてSQLを習得するメリットは、活躍できる仕事の幅が格段に広がるという点です。SQLができなくても、もちろん開発系エンジニアとして活躍することはできます。ですが、特に業務系のシステム開発を希望する場合には、データベースの知識やSQLの習得は、必須条件であると言っても過言ではありません。何故なら、大量に発生する業務データをデータベースで管理していない企業は、ほぼ皆無であると断言できるからです。つまり、データベースやSQLの知識に乏しいITエンジニアは、業務系のシステム開発において自分の活躍できるフィールドが制限されてしまうということです。そして逆を返せば、データベース知識やSQLを習得し使いこなすことができれば、あなたへのオファーは引く手数多。仕事に困ることはないでしょう。また、SQLはプログラム言語の種類に依存することなく使うことができるため、どのプログラム言語を使用したシステム開発でも対応可能というメリットもあります。

2.インフラ系エンジニアとしてのメリット

インフラ系エンジニアとしてSQLを習得するメリットについても、活躍できる仕事の幅が広がるという点では開発系エンジニアと同じです。開発系エンジニアと大きく異なる点は、インフラ系エンジニアはプログラムを作成しないという点です。それでは、インフラ系エンジニアは習得したSQLをどこで使うのかと言うと、データベースの構築作業や、本番稼働後の運用業務において主にメンテナンス目的で使用します。

インフラ系エンジニアの業務は、データベースに関することだけではなく他にも種々様々あります。SQLを習得していないからと言ってインフラ系エンジニアとして活躍できないわけではありませんが、やはり開発系エンジニアと同じように、自分の活躍できるフィールドに制限ができてしまいます。また、SQLやデータベースの知識を極めることによって、データベースエンジニアとして、データベースに特化した業務で活躍するというキャリアパスを手に入れることもできます。


3.SQLの3つの種類

「1.SQLとはなにか?」において、「SQLとはデータベースを操作するための言語」と定義しましたが、SQLは、データべースの操作だけではなく、データベースを作成、構築したり、データベースの機能を制御することもできます。それらの機能は、用途別に3つに分類することができます。

本章では、SQLの3つの種類について機能、用途別に解説していきます。

1.DDL(データ定義言語)

DDLはデータ定義用のSQLで、RDBを構成するデータテーブルの作成、削除、定義の変更等を行う際に使います。その役割上、開発系エンジニアよりもインフラ系のエンジニアが使うことが多いSQLです。DDLの主なSQL命令と用途には、下表のようなものがあります。

表 3.1-1 DDLの主なSQL命令
DDLの主なSQL命令

2.DML(データ操作言語)

DMLはデータ操作用のSQLで、データテーブルに格納するデータの新規追加、検索、更新、削除等を行う際に使います。開発系エンジニアやデータベースエンジニアを始めとするインフラ系エンジニアが、業務上一番よく使うSQLです。DMLの主なSQL命令には、下表のようなものがあります。

3.2-1 DMLの主なSQL命令
DMLの主なSQL命令

3.DCL(データ制御言語)

DCLはデータ制御用のSQLで、先にご紹介したDDLDMLとちょっと毛色の違うSQLです。DDLDMLがデータテーブルや格納データを操作するためのSQLであるのに対して、DCLはそれらのサポート的な機能を有するSQLです。そして、DCLDDL同様に、データベースエンジニアを始めとするインフラ系エンジニアが使用することが多いSQLです。DCLの主なSQL命令には、下表のようなものがあります。

3.3-1 DCLの主なSQL命令
DCLの主なSQL命令

4.SQLの基本操作

本章では、SQLの基本操作として、3章で取り上げたDDLDMLSQL文をひとつの事例に沿ってご説明します。SQLの基本操作のイメージを掴んでいただくことが目的なので、各SQL文の文法説明等については、今回は割愛します。事例としては、1章のデータベースの説明の際に取り上げた株式会社エンジニアクラブにおいて、部署新設により新しい名簿作成が必要になったと仮定します。

<事例説明>

  • 株式会社エンジニアクラブで、「新規事業準備室」が新設されることになった。
  • 部署新設に当たり所属社員の名簿作成が必要。
  • 名簿構成は以下のとおり。

 Table example

1.データテーブルの作成(CREATE

上記 <事例説明>にある名簿構成に従い、新規事業準備室のデータテーブルを作成します。

データテーブルの作成を行うCREATE文では、テーブル名、テーブルを構成する列名、データ形式を指定します。なお、SQL文の終わりは「;」で区切る決まりです。下記の例文では、「CREATE;」までが一文として認識されるため、途中改行もOKです。

CREATE TABLE 新規事業準備室
(社員番号 数値型,氏名 文字型,入社年月日 日付型,住所 文字型,電話番号 文字型,所有スキル 文字型);

2.データの追加(INSERT

前項で作成したデータテーブルに、新規事業準備室の社員を登録します。

データ追加を行うINSERT文では、社員ひとり分を1つのSQL文として、列名の並び順に社員データを指定します。下記の例文では、<事例説明>の名簿構成の例にある社員データを追加してみましょう。

INSERT INTO 新規事業準備室 
VALUES(1001,'春野夏美','20150101','横浜市港北区xxxxxxxx','08012334455','OSS-DB GOLD');

上記のINSERT文を実行後、新規事業準備室のデータテーブルに、「春野さん」の社員データが追加されました。

以降、新規事業準備室に所属する社員数分、同じようにINSERT文を実行していきます。

4-3.データの検索(SELECT)

新規事業準備室の社員を登録した以下のデータテーブルから、条件に一致する社員を検索します。
データ検索を行うSELECT文では、WHERE句以降に検索条件を指定します。複数条件の組み合わせや、複数のデータテーブルを組み合わせた条件指定も可能です。下記の例文では、2021年9月1日時点で在籍年数5年以上の社員を検索してみます。

4-4.データの更新(UPDATE)

新規事業準備室の社員を登録した以下のデータテーブルで、住所変更があった社員データを更新します。
データ更新を行うUPDATE文では、WHERE句以降で更新対象の社員の検索条件を指定し、SET句に更新情報を設定します。複数条件の組み合わせも可能です。下記の例文では、社員番号:1039の佐藤さんの住所を「東京都世田谷区」に更新してみます。

UPDATE 新規事業準備室 SET 住所 = '東京都世田谷区xxxxxxx' WHERE 社員番号 = '1039';

上記のUPDATE文実行後、社員番号:1039の佐藤さんの住所が更新されました。(下表の赤枠点線部分)

4-5.データの削除(DELETE)

新規事業準備室の社員を登録した以下のデータテーブルから、社員データを削除します。
データ削除を行うDELETE文では、WHERE句以降でデータ削除対象の社員の検索条件を指定します。下記の例文では、社員番号:1097の近藤さんの急な退職により該当する社員データを削除します。

DELETE FROM 新規事業準備室 WHERE社員番号 = '1097';

上記のDELETE文実行後、新規事業準備室のデータテーブルから社員番号:1097の近藤さんの社員データが削除されました。

4-6.データテーブルの削除(DROP)

新規事業準備室の新設から1年後、新規事業部が正式に立ち上がることになり、準備室の解散が決定しました。それに伴い、新規事業準備室のデータテーブルを削除します。データテーブルの削除を行うDROP文では、削除対象のデータテーブル名を指定します。

DROP TABLE 新規事業準備室;

上記のDROP文実行後、新規事業準備室のデータテーブルは格納データごと削除されますので、操作は慎重に行う必要があります。SQLを用いてRDBを操作する際に、最も注意する点はこの点です。
データを検索するSELECT文以外のSQL文は、実行によって格納済データの値や権限、レコード件数等に大きな影響を与えることになります。そのため、SQLを使用する際の権限は、SELECT文しか使えない一般権限と、SQLのすべての機能が使用できる上位権限と最低2つ持つことが一般的です。


5.さいごに

RDBを操作するSQLの基本知識について、できるだけわかりやすく解説してきましたが、いかがでしたか?
本記事によって、データベースやSQLへの興味が深まり、もっと詳しく知りたい!と思っていただけたら嬉しいです。

また、SQLのSELECT文、UPDATE文については、本サイトの別記事で詳しく解説していますので、ぜひそちらの記事もご参照ください。

関連記事 関連記事
私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって遙かに高い水準の成果を出し、関わる全ての人々に感動を与え続ける集団でありたいと考えています。

高い水準で仕事を進めていただくためにも、弊社では次のような環境を用意しています。

  • 定年までIT業界で働くためのスキル(技術力、人間力)が身につく支援
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な人事評価制度
  • 平均残業時間17時間!毎週の稼動確認を徹底しているから実現できる働きやすい環境

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。

コメント

文系IT未経験歓迎!【22卒対象】新卒採用のエントリーを受付中!
文系IT未経験歓迎!
【22卒対象】新卒採用のエントリーを受付中!