近年のビジネスではデータ活用への注目度が高まり、より重要視されるようになってきていますが、データ活用に欠かせないデータベース言語がSQLです。
本記事では、SQLの基礎知識について、プログラミング言語との違いやSQLの特徴、学習方法などについて解説します。SQLについてこれから学び始める方、もう少し深く知りたいという方はぜひご覧ください。
SQLとは
SQLはデータベース(RDBMS)を操作するための言語です。データベースにデータを挿入したり、検索したりする際に利用します。データベースのなかには、数万・数百万件ものデータが保存されていますが、SQLを使うことで効率的に操作をすることが可能です。
SQLは国際標準化されているため、さまざまなデータベースで利用できます。有名なデータベースとしては、Oracle、MySQL、PostgreSQL、SQLiteなどが、いずれもSQLで操作可能です。
データベースとは
そもそもデータベースとは何なのか確認してみましょう。データベースとは「検索や蓄積が容易にできるよう整理された情報の集まりのこと(Wikipediaより引用)」です。
Amazonを例に挙げると、商品情報のデータベース、注文情報のデータベース、利用者のデータベース、取引先のデータベース、物流業者のデータベースなどの多くのデータベースが存在しているはずです。
具体的なイメージを持っていただくために、あるサービス利用者のデータベースのイメージを以下に掲載します。
このように情報活用の要となるデータベースを操作する言語として、SQLは欠かせない存在です。
SQLでできること
SQLでデータベースに対して行える操作として、主に次のようなものがあります。データベースに関わるあらゆる操作を行えるのがSQLです。
- データの検索
- データの追加
- データの更新
- データの削除
- テーブルの作成
- テーブルの削除
- テーブルの主キーの設定
- ユーザー権限の付与
データベース言語とプログラミング言語との違い
SQLは厳密にはプログラミング言語ではありません。あくまでもデータベースを操作するための言語(データベース言語)です。以下に、プログラミング言語とデータベース言語の違いをご説明します。
プログラミング言語
プログラミング言語には、C言語やJava、PHP、Pythonなどの言語がありますが、いずれもコンピュータを操作するための言語です。C言語やJavaなどは、コンピュータ上で動作するアプリケーションを作成することができます。PHPやPythonなどは、Web上で動作するWebアプリケーション・Webサービスを開発する際に利用することが多いです。
プログラミング言語は、与えられたデータに対して、どのように反応するか、コンピュータにどのように命令するかを記述していきます。そのため、プログラミング言語ではループや条件分岐など、さまざまな命令を駆使して繰り返し処理、複雑な処理などを定義できます。
データベース言語
一方、SQLをはじめとしたデータベース言語はデータベースに対してしか命令することができません。また命令の方法もとてもシンプルです。
基本的にSQLでは、一文ごとに結果を求めます。「データベースに対して、こんなことがしたい」という一行程度の文をコマンドへ打ち込むと、命令が実行されるという方式です。これを対話型と呼びます。
データベースに対して、連続した操作や複雑な操作を行いたい場合はどうするかというと、他のプログラミング言語の記述の中に、SQLの文を埋め込むことで命令を実行できます。こちらは埋め込み型といいます。
以上のように、データベース言語(SQL)は、用途の限られた簡潔な言語であるといえます。SQLとプログラミング言語は似ていますが、それぞれが持つ役割は大きく異なることを覚えておきましょう。
SQLとPythonとの違い
Pythonは、SQLと同様にデータサイエンスにおいてよく使われる言語として知られています。両者の主な違いは、SQLがデータベース言語であるのに対し、Pythonはプログラミング言語である点です。
Pythonは汎用的なプログラミング言語であるため、データの操作・解析だけでなくWeb開発やAI・機械学習など幅広い用途に対応できます。コードがシンプルで分かりやすい点、汎用性が高く、標準ライブラリも充実している点などから需要や人気が高い言語となっています。
データベース言語であるSQLはPythonのような汎用性はありませんが、データベース内の操作に特化しているためクエリが最適化されており、大規模なデータセットの操作でも処理ができる点などから、データの抽出・操作・集計で使われます。また、データ活用の必要性が高まる近年、SQLはデータ分析などを行う非エンジニアの職種でも役立つスキルです。
SQLの種類:DML、DDL、DCL
SQLを使ってデータベースを操作する際、覚えておきたい3つの種類のSQLを紹介します。
データ操作言語(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の将来性
レガシーシステムと最新技術の双方で利用されている
SQLはプログラミング言語とは異なり、データベースの世界において寡占状態にあります。RDB用言語としては事実上、SQL以外にほぼ選択肢がない状態が続いています。そのためシステムの新旧に関わらず、依然としてSQLのスキルが役立ちます。例えばレガシーシステムから新システムへのマイグレーションなどにおいては、どちらのシステムでも共通してSQLのスキルが求められます。
ただし、データベースにはRDB以外のデータベースも存在しており、NoSQLデータベースといったSQL不要の技術も台頭しつつあります。用途が違うため直接的にはSQL(RDB)にとって変わるわけではないのですが、ITエンジニアとしては注視するべき技術と言えます。
クラウドサービスへの適応
クラウドサービスを使用する際にも、SQLは欠かせない技術です。実際にAWSではデフォルトのRDBとして、MySQLが採用されています。最新のクラウドサーバーに移行しても、決してすたれることのない言語のひとつがSQLなのです。
ほぼすべてのIT分野で必須
AIやIoTといった先端IT分野の活用が急激に広がると考えられ、これからは一部の業界や企業だけでなく広く一般化していくことでしょう。先端ITではいずれもデータ収集と分析が必須であるため、どちらの分野においてもRDBとSQLの知識が役立つことは間違いありません。
SQLを学ぶメリット
キャリアパスの幅が広がる
近年は業界業種を問わず、データ活用が進んでいます。あらゆる分析はデータを活用する時代と言っても過言ではありません。どの企業でもデータ分析や加工は日常的に行われており、データベースの重要性も増しています。こうした状況からITエンジニアにとって、どのような職種でもSQLの知識が求められるケースも多くなりました。
例えばプログラマーがSQLを習得することで、テーブルからのデータ取得効率の向上によるパフォーマンスアップを図れます。これは、高品質なソースの記述につながります。インフラエンジニアであれば、データベースのパフォーマンスチューニングや設定変更などの業務に役立ちます。
さらに近年急速に台頭してきたデータサイエンティストにとっても、SQLは必須のスキルです。データ分析環境の構築や、課題の検証などでデータ操作を頻繁に行うため、エンジニアと同等レベルのSQLスキルを身に着けておくとキャリアの幅が拡がります。
国際規格で汎用性が高い
SQLはISO(国際標準化機構)によって標準化されていて、IT業界全体の「共通言語」としての側面も持ち合わせています。言語仕様やデータベースソフトウェアによって多少の違いはあるものの、基本的な仕様はほぼ同じです。このためプログラミング言語やデータベースを学ぶ際には、SQLの知識は共通したものがベースとなり、繰り返し学習を避けることができます。データに少しでも携わる仕事であれば、必ずどこかで役に立つスキルと言えます。
データベースエンジニアの台頭
ビッグデータ時代に入り、注目されている職種のひとつに「データベースエンジニア」があります。データベースエンジニアとは、データベースの設計・構築・運用・管理を行うエンジニアです。求人の数こそ多くありませんが、内容はいずれも高度で専門性が高いものばかりです。
大規模システムには必須の人材であることから、実績とスキルさえあればキャリアを積み上げやすい職種ともいえます。データベースエンジニアへの転職を検討するなら、SQLは登竜門ともいえるスキルです。
おすすめの学習コンテンツ
本記事を読み終わって、さらに学びたい方、次は問題にチャレンジしてみたい方には、以下の無料コンテンツをご用意しておりますので、ぜひ活用してみてください!
SQLiteについて
本記事で使用したデータベース「SQLite」について解説する記事です。
SQLiteとは?他のデータベースとの違いも解説
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分位の動画ですので、ぜひご覧くださいませ。
- カテゴリ: