SQLとは?データベース言語の基礎知識から具体例まで分かりやすく解説!

 2020.04.13  株式会社システムインテグレータ

「SQLってなに?」
「SQLはプログラミング言語とは違うの?」

このような疑問に応えるべく、SQLの基礎知識について解説します。SQLについて何もわからない方から、もう少し深く知りたいという方までご活用いただける記事です。

以下の無料ダウンロード資料も本記事と合わせてご活用ください。

sql_textbook_blog

SQLとは

SQLはデータベース言語

SQLはデータベース(RDBMS)を操作するための言語です。データベースにデータを挿入したり、検索したりする際に利用します。データベースのなかには、数万・数百万件ものデータが保存されていますが、SQLを使うことで効率的に操作をすることが可能なのです。

さまざまなデータベースで利用可能

SQLは国際標準化されているため、さまざまなデータベースで利用できます。有名なデータベースとしては、Oracle、MySQL、PostgreSQL、SQLiteなどが、いずれもSQLで操作可能です。

SQLでできること

SQLでデータベースに対して行える操作として、主に次のようなものがあります。データベースに関わるあらゆる操作をSQLで行います。

  • データの検索
  • データの追加
  • データの更新
  • データの削除
  • テーブルの作成
  • テーブルの削除
  • テーブルの主キーの設定
  • ユーザー権限の付与
ビッグデータ時代の必須科目 SQLの教科書
教養としてのプログラミング入門BOOK

データベースとは

そもそもデータベースとは何なのか、について確認してみましょう。データベースとは、検索や蓄積が容易にできるよう整理された情報の集まりのこと(Wikipediaより引用)です。
Amazonを例に挙げると、商品情報のデータベース、注文情報のデータベース、利用者のデータベース、取引先のデータベース、物流業者のデータベースなどの多くのデータベースが存在しているはずです。

具体的なイメージを持って頂くために、あるサービス利用者のデータベースのイメージを以下に掲載しますね。

SQLとは?データベース言語の基礎知識から具体例まで分かりやすく解説!

このように情報活用の要となるデータベースを操作する言語として、SQLは欠かせない存在なのです。

一般的な解説から、実際にSQLを動かすイメージまで幅広くご紹介します。 ビッグデータ時代の必須科目 SQLの教科書(初級編)

データベース言語とプログラミング言語

SQLは厳密にはプログラミング言語ではありません。あくまでもデータベースを操作するための言語(データベース言語)です。

プログラミング言語

プログラミング言語には、C言語やJava、PHP、Pythonなどの言語がありますが、いずれもコンピュータを操作するための言語です。C言語やJavaなどは、コンピュータ上で動作するアプリケーションを作成することができます。PHPやPythonなどは、Web上で動作するWebアプリケーション・Webサービスを開発する際に利用することが多いです。

プログラミング言語は、与えられたデータに対して、どのように反応するか、コンピュータにどのように命令するかを記述していきます。そのため、プログラミング言語ではループや条件分岐など、さまざまな命令を駆使して繰り返し処理、複雑な処理などを定義できます。

データベース言語(SQL)

一方、SQLはデータベースに対してしか命令することができません。また命令の方法もとてもシンプルです。

基本的にSQLでは、一文ごとに結果を求めます。「データベースに対して、こんなことがしたい」という一行程度の文をコマンドへ打ち込むと、命令が実行されるという方式です。これを対話型と呼びます。
データベースに対して、連続した操作や複雑な操作を行いたい場合はどうするかというと、他のプログラミング言語の記述の中に、SQLの文を埋め込むことで命令を実行できます。こちらは埋め込み型といいます。

以上のように、データベース言語(SQL)は、用途の限られた簡潔な言語であるといえます。SQLとプログラミング言語は似ていますが、それぞれが持つ役割は大きく異なることを覚えておきましょう。

SQLの種類(DML, DDL, DCL)

SQLを使ってデータベースを操作する際、覚えておきたい3つの種類について紹介します。

データ操作言語(Data Manipulation Language)

データ操作言語はDMLと省略して呼ばれ、データベースに対してデータを追加・更新・削除などを行うためのSQL命令文の種類です。

DMLで利用される命令文としては、次のようなものがあります。

  • SELECT(データの検索)
  • INSERT(データの追加)
  • UPDATE(データの更新)
  • DELETE(データの削除)

SQL命令文のなかでも、特に利用頻度が高いものであるため、必ず覚えておきましょう。

データ定義言語(Data Definition Language)

データ定義言語はDDLと省略して呼ばれ、テーブルなどを作成・削除したり、設定を変更したりするためのSQL命令文の種類です。

DDLで利用される命令文としては、次のようなものがあります。

  • CREATE(テーブルの作成)
  • ALTER(テーブルの設定変更)
  • DROP(テーブルの削除)
  • TRUNCATE(テーブルデータの削除)

データベースの管理者として、テーブルを管理する場合は必ず覚えなければなりません。TRUNCATEは、DMLのDELETE文と同じくデータを削除する命令ですが、テーブル内のすべてのデータを削除するものです。DELETE文と合わせて利用することが多いため、覚えておくとよいでしょう。

データ制御言語(Data Control Language)

データ制御言語は省略してDCLと呼ばれます。DMLやDDLの利用を制御するためのSQL命令文の種類です。DCLで利用される命令文としては、次のようなものがあります。

  • GRANT(権限付与)
  • REVOKE(権限剥奪)

こちらもデータベースの管理者は、必ず覚えておくべきものです。DCLを使うことで、ユーザー単位・テーブル単位にDMLやDDLの使用を制限できます。たとえば、AさんはテーブルBへのデータ追加を許可する、といったようなことです。

SQLの特徴

現在のDBMSでは、リレーショナル型を多く採用しています。そのため、SQLを理解することで、ほとんどのDBMSを利用することが可能です。

一方的に命令をデータベースに送る

SQLは、対話のように文をやりとりして命令を行います。プログラミング言語はソースコードに命令を順番に記述して実行しますが、SQLはシンプルな命令文を一方的にデータベースに送るだけです。基本的に1文で完結し、複雑な処理を行う場合は、返ってきた処理の結果に応じてまた命令を送るというようにデータベースと対話するように命令文をやりとりします。

あくまでデータベースを操作する言語

SQLはデータベースを操作するための言語であり、アプリケーションを作成したり操作したりする機能はありません。アプリケーションやシステムを開発するときには、ほかのプログラムやプログラミング言語と組み合わせて使用します。
アプリケーションからデータベースを利用したい場合は、アプリケーションにSQLの命令文を記述します。RDBMSを操作して返ってきた値をアプリケーションで利用し、さらに処理を繰り返し行います。

SQLでデータベースを操作する方法

SQLでデータベースを操作するための命令を送るには、2つの方法があります。

<対話型>
ユーザーがプログラムのコマンドラインなどでSQLのコマンドを打ち込み、直接操作する方法で、対話型と呼ばれています。この場合は、処理の結果が表示されるのを待って次の命令を送ります。

<埋め込み型>
Javaなどほかのプログラミング言語で記述したソースコードに直接SQL文を埋め込み、動的に操作する方法です。ほかのプログラムに埋め込むことで、SQLをシステムの一部として使用します。命令文をネスト構造(入れ子)にして、命令1の結果に応じて「~ならば命令2、そうでなければ命令3」などの処理を行うことで、最終的な結果を得ることができます。これをサブクエリといいます。

SQLの具体例「SELECT文」

SQL文の具体例を少しだけご紹介します!感触をつかんでみてください。

SELECT文はデータの検索をする文で、基本的な構文は以下の通りです。

  SELECT  列名1,列名2,列名3(どの列を検索・表示させるか)
  FROM  表名(どの表から検索するか)
  WHERE  抽出条件

例題:EMPLOYEE表はNAME(氏名)、AGE(年齢)、JOB(仕事)、SAL(月給)から構成されています。以下の各条件に当てはまるデータを選択(SELECT)してみましょう!

Q. 表の中から、月給が50万円以上の人を探すためのSELECT文は?

 (入力)
 SELECT * FROM EMPLOYEE (Enterボタン)
 WHERE SAL >= 500,000 (Enterボタン)

 (出力)

NAME AGE JOB SAL
松田 65 社長 950,000
山田 43 部長 680,000
羽生 42 営業マネージャ 600,000

SQLを学ぶことのメリット

キャリアパスの幅が広がる

近年は業界業種を問わず、データ活用が進んでいます。あらゆる分析はデータを活用する時代と言っても過言ではありません。どの企業でもデータ分析や加工は日常的に行われており、データベースの重要性も増しています。こうした状況からITエンジニアにとって、どのような職種でもSQLの知識が求められるケースも多くなりました。
例えばプログラマーがSQLを習得することで、テーブルからのデータ取得効率の向上によるパフォーマンスアップを図れます。これは、高品質なソースの記述につながります。インフラエンジニアであれば、データベースのパフォーマンスチューニングや設定変更などの業務に役立ちます。

さらに近年急速に台頭してきたデータサイエンティストにとっても、SQLは必須のスキルです。データ分析環境の構築や、課題の検証などでデータ操作を頻繁に行うため、エンジニアと同等レベルのSQLスキルを身に着けておくとキャリアの幅が拡がります。

国際規格で汎用性が高い

SQLはISO(国際標準化機構)によって標準化されていて、IT業界全体の「共通言語」としての側面も持ち合わせています。言語仕様やデータベースソフトウェアによって多少の違いはあるものの、基本的な仕様はほぼ同じです。このためプログラミング言語やデータベースを学ぶ際には、SQLの知識は共通したものがベースとなり、繰り返し学習を避けることができます。データに少しでも携わる仕事であれば、必ずどこかで役に立つスキルと言えます。

データベースエンジニアの台頭

ビッグデータ時代に入り、注目されている職種のひとつに「データベースエンジニア」があります。データベースエンジニアとは、データベースの設計・構築・運用・管理を行うエンジニアです。求人の数こそ多くありませんが、内容はいずれも高度で専門性が高いものばかりです。
大規模システムには必須の人材であることから、実績とスキルさえあればキャリアを積み上げやすい職種ともいえます。データベースエンジニアへの転職を検討するなら、SQLは登竜門ともいえるスキルです。

SQLの将来性

レガシーシステムと最新技術の双方で利用されている

SQLはプログラミング言語とは異なり、データベースの世界において寡占状態にあります。RDB用言語としては事実上、SQL以外にほぼ選択肢がない状態が続いています。そのためシステムの新旧に関わらず、依然としてSQLのスキルが役立ちます。例えばレガシーシステムから新システムへのマイグレーションなどにおいては、どちらのシステムでも共通してSQLのスキルが求められます。
ただし、データベースにはRDB以外のデータベースも存在しており、NoSQLデータベースといったSQL不要の技術も台頭しつつあります。用途が違うため直接的にはSQL(RDB)にとって変わるわけではないのですが、ITエンジニアとしては注視するべき技術と言えます。

クラウドサービスへの適応

クラウドサービスを使用する際にも、SQLは欠かせない技術です。実際にAWSではデフォルトのRDBとして、MySQLが採用されています。最新のクラウドサーバーに移行しても、決してすたれることのない言語のひとつがSQLなのです。

ほぼすべてのIT分野で必須

AIやIoTといった先端IT分野の活用が急激に広がると考えられ、これからは一部の業界や企業だけでなく広く一般化していくことでしょう。先端ITではいずれもデータ収集と分析が必須であるため、どちらの分野においてもRDBとSQLの知識が役立つことは間違いありません。

おすすめの学習コンテンツ

本記事を読み終わって、さらに学びたい方、次は問題にチャレンジしてみたい方には、以下の無料コンテンツをご用意しておりますので、ぜひ活用してみてください!

SQLiteについて
本記事で使用したデータベース「SQLite」について解説する資料です
SQLiteとは?他のデータベースとの違いも解説

SQLの教科書
一般的な解説から、実際にSQLを動かす操作イメージまで幅広く解説する資料です。
「SQLの教科書」ビックデータ時代の必須科目

SQL無料トライアルテスト
TOPSIC-SQLの無料トライアルテストをご受験していただけます。
TOPSIC-SQL無料トライアルテスト

SQLコンテスト
簡単な会員登録をするだけでSQLのオンラインコンテストに無料で参加できます。
過去に開催されたコンテストの問題にもチャレンジできます
TOPSIC SQL CONTEST

SQL基礎解説YouTube
「TOPSIC-SQL」を元にしたオンラインウェビナーです。
 SQL-BOOT CAMP #1 
 ビッグデータ時代の必須科目SQLを学ぶ「実戦で通用する武器を身につけよう!」

まとめ

SQLはデータベースを操作するためのデータベース言語です。SQLは国際標準化されているため、一度覚えてしまえば、さまざまなデータベースで利用できます。

プログラミング言語とは異なるものであることも覚えておきましょう。ただし、プログラミング言語の記述のなかで、データベースを操作するためにSQLを利用すること(SQLの埋め込み)が可能です。

具体的にSQLの種類として、次の3つの種類をご紹介しました。これらの中で、DMLは一般的によく利用されるため、まずはDMLの使い方から身に付けてみてはいかがでしょうか。

  • データ操作言語(DML)
  • データ定義言語(DDL)
  • データ制御言語(DCL)

-----参考情報-----
■TV出演動画:ええじゃない課Biz(2022/05/29 放送 TOKYO MX)
アンタッチャブル柴田さん、アルコ&ピースさんがレギュラーのビジネス情報番組「ええじゃない課Biz」にて、プログラミングスキル判定サービス「TOPSIC」と企業・学校対抗プログラミングコンテスト「PG BATTLE」のご紹介をさせていただきました。5分位の動画ですので、ぜひご覧くださいませ。

 

ビッグデータ時代の必須科目 SQLの教科書(初級編)

RELATED POST関連記事


RECENT POST「SQL」の最新記事


SQL

JSON.parse()、JSON.stringify()の使い方|間違えやすいポイントも解説します!

SQL

SQLの整形:具体的な進め方、ツール活用についても解説します。

SQL

JSONの整形・構文チェック|3つの方法とツール、具体例を解説

SQL

SQLインジェクションとは?実例とその対策についてわかりやすく解説

SQLとは?データベース言語の基礎知識から具体例まで分かりやすく解説!

TOPSIC TOPへ

新規CTA

TOPSIC-SQL4コマ漫画

RANKING人気資料ランキング

RANKING人気記事ランキング

RECENT POST 最新記事