SQLとは
SQLとは「Structured Query Language」の頭文字であり、「構造化された問い合わせ言語」と翻訳されます。これは当初データベースを開発したIBM社による命名です。その後、SQLはANSI(米国標準化団体)やISO(国際標準化機構)により標準化され、こちらではSQLは何らかの略語ではなく固有名詞と定められています。データベース言語の中でも普及率が高い言語といえます。
SQLを使うことでデータベースを操作し、格納されたデータを取得したり、更新することができます。また、他のプログラミング言語と組み合わせてデータベースを操作することも可能です。SQLとは一体どのような言語なのか、概要と種類について解説します。
SQLの基礎知識
SQLは特定の処理を行う「コマンド」を発行することで、データベースにあるデータの取得や追加・削除、データの定義などを行います。言語の特性としては対話型であるため、コンパイルする必要はありません。大規模なデータベースで大量のデータを操作する場合でも、簡単な命令文で実行できるので非常に扱いやすい言語です。
またSQL文は標準化が進んでおり、種類が異なってもメジャーなデータベース管理システムであれば記述の多くは統一されています。SQLの知識を一度身に着けてしまえば、汎用性の高いスキルとして長く活用することが可能です。
データベースとは
データベースとはデータの検索や蓄積を容易にするため、一定のルールに従って整理された情報の集まりを指します。例えばAmazonなどの通販サイトを例に挙げると、商品情報から注文情報、購入者情報や取引先、物流業者といった数多くのデータベースが存在していると想定できます。このような膨大な情報を操作するために、SQLは欠かせない存在なのです。
データベースの代表的な種類として、以下の画像のように「階層型データベース」「ネットワーク型データベース」「リレーショナル型データベース(RDB)」の3種類があげられます。近年では、「NoSQL」と呼ばれる形式のデータベースも人気です。これらは、用途などにより使い分けられます。
それぞれについて詳しく見ていきましょう。
階層型データベース
階層型データベースは、ツリー状に構成されたデータベースです。会社の組織図のように、1つのデータが複数のデータと親子関係で関連付けられ、上層(親ノード)から下層(子ノード)に分岐する形でデータが整理されています。
階層型データベースの利点は、下層のデータにアクセスするためのルートが1つだけであるため、他のデータベースと比較して関係するデータの検索や集計が迅速に行えることです。この特性により、データの操作や解析が効率的に行えます。
しかしながら、階層型データベースのデメリットとしては、下層に複数の上層データを紐づけることができないため、柔軟かつ簡潔なデータ管理が難しいという点が挙げられます。
ネットワーク型データベース
ネットワーク型データベースは、網状に構成されたデータ構造を持っています。関連のあるデータが互いに結びついた形状と考えるとイメージがしやすいです。階層型データベースとの違いは、下層から上層への分岐もできることです。
ネットワーク型データベースの利点は、下層データを複数の上層データに紐づけられるため、データの重複を避けることができるという点です。これにより、効率的なデータの管理と冗長性の排除が実現します。
一方で、ネットワーク型データベースは複雑なデータベース構造を持つため、高度な知識やスキルが必要です。
リレーショナル型データベース
リレーショナル型データベース(RDB)は、データとデータの関係性(リレーショナル)を管理する方式で、ITシステムやアプリケーション開発で最も広く利用されるデータベースの種類です。
具体的には「行」と「列」によって構成された表形式のテーブルを基本としたデータベースです。テーブルはExcelのワークシートに似たものと考えるとイメージしやすいのではないでしょうか。
一般的によく使われるリレーショナル型データベースとしては、以下の5つが挙げられます。
-
・Oracle Database
・MySQL
・Microsoft SQLServer
・PostgreSQL
・SQLite
SQLでデータベースの操作を行うのはこの方式のデータベースです。リレーショナル型データベースを利用したシステム開発プロジェクトは非常に一般的なため、SQLが利用できれば多くの開発案件に対応することが可能です。
以降、本記事内で取り扱うデータベースは明示的な記載がない限りRDBについて記載します。
NoSQLデータベース
NoSQLデータベースとは、名前の通りSQLで操作を行うRDB以外のデータベースを指します。近年では各種のソーシャルメディアなどデータの構造が複数の形状を持つデータも多く、これらをまとめて扱う場合には表形式でない形でデータを扱うことでスケーラビリティや柔軟性、パフォーマンスなどを高められるケースがあります。そのような場合に利用されるのがNoSQLデータベースです。
NoSQLデータベースには複数の形式のデータベースが含まれます。下記はその代表例です。
-
・Key-value データベース
・ドキュメントデータベース
・グラフデータベース
・インメモリデータベース
・検索エンジンデータベース
データベース言語とプログラミング言語
データベース言語はコンピュータに対する命令文という点ではプログラミング言語と似ていますが、命令文を複数積み重ねることのできるプログラミング言語よりはデータの登録、検索などできることが限られています。
また、プログラミング言語のインタプリタ言語と同じく、SQLは実行時にコードが評価されます。事前のコンパイルなどは不要ですが、実行するまで文法上のエラーは判断されません。文法上のチェックについては、インテリセンス機能を持つツールなどを利用することで対処して、効率的に開発するケースが増えています。
SQLを構成する4種類の言語
SQLのコマンドは、大別すると以下の4種類があります。
-
・DDL(データ定義言語)
・DML(データ操作言語)
・DCL(データ制御言語)
・TCL(トランザクション制御言語)
それぞれで用途・処理内容が異なりますので、違いを正しく理解しましょう。
以下、4つの言語について、それぞれの概要や代表的なSQL文などを説明します。
DDL(データ定義言語):テーブル作成、設定変更
DDLはData Definition Languageの略で、データを格納する表(テーブル)の作成や削除、設定の変更など、データではなくテーブルを操作するために利用する言語です。代表的なものとしては以下が挙げられます。
-
・CREATE(テーブルの作成)
・ALTER(テーブルの設定変更)
・DROP(テーブルの削除)
・TRUNCATE(テーブル内のデータの削除)
テーブル以外にも、ビューや索引(インデックス)、シノニムなどのデータベースオブジェクトの作成や設定変更、削除を行う場合にも使用します。
DML(データ操作言語):データ検索、追加、更新、削除
DMLはData Manipulation Languageの略で、テーブルに保存されたデータの検索やテーブルへのデータの追加・更新・削除など、レコードごとのデータを細かく操作するための言語です。データを参照、加工するために最も多く使用するため、SQLの中でも開発者が最初に習得することの多い言語です。
-
・SELECT(データ検索、選択、抽出)
・INSERT(データ追加、挿入)
・UPDATE(データ更新)
・DELETE(データ削除)
DCL(データ制御言語):権限付与・剥奪
DCLはData Control Languageの略です。DCLはデータベースに格納したデータにアクセスするための権限付与、権限剥奪を管理します。セキュリティの観点からも重要な言語です。権限はユーザーなどに対し付与します。
例えば、特定のテーブルに個人情報を含む内容が格納されている場合、限られたユーザーにのみテーブルの内容を参照できるように限定します。参照させたいユーザーに特定のテーブルにアクセスする権限を付与し、その他のユーザーにはテーブルを参照する権限を与えません。すると、そのテーブルに格納されたデータはアクセス権限を持ったユーザーしか参照などの操作をすることができません。
-
・GRANT(権限付与)
・REVOKE(権限剥奪)
TCL(トランザクション制御言語):コミット、ロールバック
TCLはTransaction Control Languageの略です。データベース内でデータを更新(追加、更新、削除など)する際は、複数の処理をまとめたトランザクションで制御することで整合性を確保することができます。
TCLはトランザクション内で行われた処理の確定(コミット)またはロールバック(取り消し)を行います。例えば、INSERT(データ追加、挿入)やDELETE(データ削除)等の処理は、コミットするまでは確定されません。ロールバックを実行して取り消すことも可能です。
-
・COMMIT(トランザクションの確定)
・ROLLBACK(トランザクションのロールバック)
SQLでできること
SQLがWebアプリケーション開発で広く利用される理由は、ECサイトやSNSなどの仕組みでは膨大なデータを保管しておく必要があるためです。SNSの場合ならユーザーごとの情報を保管しつつ、いつでも変更や削除ができるようにしておかなくてはいけません。
またSQLは規模の大きい開発現場だけではなく、身近な業務であるエクセルとも連携することが可能です。あらかじめ複雑な計算処理をSQLで作成しておけば、エクセルのデータを自動的に計算させることもできます。SQLによって計算などの業務が効率化されれば、統計やマーケティングなどに活用することも可能です。
データベース・テーブルの作成
データを格納するための器となるのがデータベースやスキーマ、テーブルといったオブジェクトです。よくテーブル(表)を器、データを器の中身とたとえます。
これらの器となる表には、データの種類ごとにテーブルの名前やどのような項目を持つか、データの重複を許すかなどの制約を定めて管理する必要があります。データベース上のテーブルなどのオブジェクトの定義をSQLで記載することができます。また、一度作成したテーブルなどに対し、変更や削除を行うことも可能です。これらを行うためのSQLは、4種類の言語の分類では、DDLに分類されます。
データ検索
テーブル内に格納されたデータを検索と取得もSQLで行います。テーブル内には多い場合には数千万件という単位のデータが格納されており、その中から必要なデータを取得するにはSQLで条件の指定をします。条件に合致したデータだけをテーブルの中から高速に取得することが可能です。
データの検索のみを行う場合は、DMLのSELECT文を用います。また、このデータの検索は他のDMLと組み合わせて利用することもできます。
データの操作
テーブルにデータの登録を行う、テーブルに格納されたデータを更新する、テーブルに格納されたデータを削除するといったデータの操作もSQLにて実現します。これらは、SELECT以外のDMLを用います。データの更新、データの削除ではデータ検索のSELECT文のように条件を指定して特定のデータのみを操作することが通常です。
テーブルの結合
データの検索では検索対象のテーブルは一つではなく、複数を指定することもできます。一度に複数のテーブルからデータを検索する場合には、結合を使って関係のあるデータを繋げて扱うと便利です。
例えば、ECサイトのユーザーの情報とその注文履歴などはテーブルを分けて別々に管理するべきです。しかし、Webサイトに表示する際には、ユーザーの情報と注文履歴をあわせて一覧表示したい場合もあります。このような場合に、ユーザー情報と注文履歴のテーブルを結合してあたかも一つのテーブルとして扱え、検索と一覧表示をスムーズに実現できます。
SQLの特徴
RDBMSを利用する上で、SQLの習得は欠かせません。しかし、SQLでできることは多く、またプログラミング言語とは使い勝手が異なるところもあります。
ITエンジニアとして活躍するためには、SQLに慣れ親しみ、上手に扱えるようになることを目指しましょう。そのためには、特徴を理解することが大切です。
本項では、RDBMSを使いこなすために必要となるSQLの特徴を紹介します。
命令文をデータベースへ送って処理させる
SQLは基本的に一文内で命令を完結させ、それをデータベースに送ります。データベース側では受け取ったSQLを解釈して、データベース上で実行し、結果を返します。対話型とも呼ばれる形式で、この繰り返しによりSQLを利用したデータベースへのアクセスは構成されます。
どのようなRDBMSを利用した場合にも、この流れは同じですので、意識しておきましょう。
SQLだけではアプリの作成・操作はできない
SQLはデータベース上のデータの操作に特化した言語です。画面の操作や処理の順序の制御などは行えず、SQLだけではアプリケーション構築には適していません。
ただし、アプリケーション内でのデータベースへのアクセス処理にはSQLが利用されます。アプリケーションからSQLを実行し、その結果をアプリケーション内で利用する形式です。その際には、別のプログラミング言語と組み合わせて利用されます。
SQLでデータベースを操作するインタフェースは2種類ある
SQLでデータベースを操作する際のインタフェースでは、「対話型」と「埋め込み型」の2種類がよく利用されます。
対話型
ORACLEのSQLPlusやPostgreSQLのpSQLなど、対話型の操作を行うインタフェースのツールを使って、コマンドを入力してデータベースを直接操作することが可能です。1つの命令を実行する都度、結果が表示されます。
埋め込み型
JavaやPHPなど他のプログラミング言語で記述したコードの中にSQLを埋め込み、実行するインタフェースです。SQLでは条件分岐や繰り返しなどの制御ができませんが、他のプログラミング言語で制御した上でSQLを実行することで動的にデータベースを操作することが可能です。
セキュリティのために覚えたい「SQLインジェクション」とは?
SQLを理解する上でセキュリティ対策として覚えておきたいこととして、「SQLインジェクション」というサイバー攻撃手法があります。SQLインジェクションは、主にWebアプリケーションの脆弱性をついて、開発者の意図しない不当なSQL文をアプリケーション上で実行し、不正なデータベースのデータ読み取り、データ改ざんまたは削除などを行う攻撃です。その代表的な被害の事例としては、個人情報の漏えいやWebサイトの改ざんが挙げられます。
SQLインジェクションが発生する原因は、本来実行されるべきSQLの構文が変更されてしまう点にあります。対策としてはユーザから想定外の情報が入力されてもそのまま処理せず、正しくエラー処理を実施することが重要です。SQLインジェクションの脆弱性を作らないセキュアなプログラミングは、安全なWebアプリケーション開発の基本の一つです。
SQLを学ぶメリット
多くのシステムではデータベースが使用されているため、ITエンジニアがSQLを学ぶことはシステム開発の仕事を行う上で大きなメリットがあります。
それでは、SQLを学ぶメリットとは、具体的にどのようなものがあるのでしょうか。本項では、ITエンジニアがSQLを学ぶことのメリットについて解説します。
キャリアパスの幅が広がる
近年は業界業種を問わず、データの収集・蓄積とデータ分析による活用が進んでいます。あらゆる業務でデータを活用する時代と言っても過言ではありません。どの企業でもデータ分析や加工は日常的に行っており、データベースの重要性も増加しています。こうした状況からITエンジニアにとって、どのような職種でもSQLの知識が求められるケースが多くなりました。
例えばプログラマーがSQLを習得することで、テーブルからのデータ取得効率の向上によるパフォーマンスアップを図れます。これは、高品質なソースの記述につながるでしょう。インフラエンジニアであれば、データベースのパフォーマンスチューニングや設定変更などの業務に役立ちます。
さらに近年急速に台頭してきたデータサイエンティストにとっても、SQLは必須のスキルです。データ分析環境の構築や、課題の検証などでデータ操作を頻繁に行うため、エンジニアと同等レベルのSQLスキルを身に着けておくとキャリアの幅が拡がります。
国際規格であり汎用性が高い
SQLはISO(国際標準化機構)によって標準化されていて、IT業界全体の「共通言語」としての側面も持ち合わせています。言語仕様やデータベースソフトウェアによって多少の違いはあるものの、基本的な仕様はほぼ同じです。
このためプログラミング言語やデータベースを学ぶ際には、SQLの知識は共通したものがベースとなり、繰り返し学習することを避けることができます。データに少しでも携わる仕事であれば、必ずどこかで役に立つスキルと言えるでしょう。
データベースエンジニアというキャリアパスも選択肢に
ビッグデータ時代に入り、注目されている職種のひとつに「データベースエンジニア」があります。データベースエンジニアとは、データベースの設計・構築・運用・管理を行うエンジニアです。求人の数こそ多くありませんが、内容はいずれも高度で専門性が高いものばかりです。
大規模システムには必須の人材であることから、実績とスキルさえあればキャリアを積み上げやすい職種ともいえます。データベースエンジニアへの転職を検討するなら、SQLはまさに登竜門ともいえるスキルです。
経営企画やマーケティングにも役立つ
SQLのスキルは、データベースを管理するエンジニアに限らず、経営企画やマーケティングなどの職種でも活用できます。統計データを活用した利益の最大化、顧客情報管理のサービス開発などで、SQLのスキルが役立ちます。
【初心者向け入門編】SQLの勉強の流れと方法
SQLは独学でも習得しやすいのがメリットであり、特徴でもあります。近年ではデータベース環境の構築についてもインターネット上で情報が得やすくなり、無料で環境を用意して利用する学習がおすすめです。
本項では、SQLの学習について、その流れと知識習得の方法について紹介します。
関連記事:SQLの勉強方法は?おすすめのサイトや本、勉強時間の目安などを解説
基本構文を理解する
SQLの習得を目指す場合、最初に行うべきなのが基本構文の理解です。
本記事内でも紹介したように、大きくはDDL、DML、DCL、TCLの四つに大別されます。さらにそれぞれの中にDMLであればSELECT、INSERT、UPDATE、DELETEなどの個別のSQL文が存在します。
SQLも言語の一つでありルールに従った記述でなければ実行できません。まずは構文を理解し、書けるようになることが第一歩です。
実際にデータベースの実行環境を構築する
自宅のPCに開発環境を構築すれば、いつでもデータベースやSQLに触れられます。学習効率も格段にアップするので、無料で利用できるMySQLやPostgreSQL、SQLiteなどを活用しましょう。OracleやSQL Serverなどの商用データベースも学習用途では無料で利用できる無償版が提供されているケースも珍しくありません。
データベースの実行環境を構築する場合には、公式ドキュメントや実際に構築した人のレポートなどをインターネット上で参照しながら作業すると間違いを防げます。データベース構築の作業ノウハウもデータベースに関するスキルの一種です。
データベースを操作してみる
データベースの実行環境が作成できたら、実際にデータベースを操作してみましょう。最初はサンプルコードに従ってユーザーやテーブルなどを作成し、DMLを利用して、SQLとデータベースの挙動に対する理解を深めます。
あくまでも自分のマシン上の実行環境ですので、多少誤ってデータの更新などを行ってしまったとしても問題ありません。サンプルやテキストに記載されているSQLを出来るだけ多く試してみましょう。
その次のステップでは、自分で簡易なデータベースを作ってみましょう。題材は身の回りにあるものでもなんでもかまいません。
例えば、冷蔵庫にある食材の賞味期限を管理するためのテーブルを作成し、実際に冷蔵庫にある食材の情報をレコードとして登録してみるといったことで良いです。食材ならば名称や量、賞味期限などが管理項目となるということを自分で考えてテーブルの作成を行います。その後、冷蔵庫の中にある食材をデータに置き換えて登録を行い、それに対して賞味期限が切れていないなどの条件を指定して検索を行うことで、データベースへの理解を深めることが可能です。
SQLの勉強方法
SQLの学習において、テキストやサンプルとしてWebや書籍を利用することが選択肢となります。それぞれに別のメリットを持ちますので、自身とあった学習方法を選択するとよいでしょう。いずれの方法での学習でも、テキストを参照するだけでは理解が不足するため、SQLの実行環境を用意して動きを確認しながら学習することがおすすめです。
動画・サイトで学ぶ
インターネットを通じ、動画やWebサイトを利用して学習する方法は、手軽で視覚的にも情報が得やすいことが特徴です。SQLを動かしているところが見えるため、動作がイメージしやすく、初心者の学習にも向いています。
PC上にデータベース環境を用意して、動画やWebサイトの内容を実際に動かしながら確認することで理解が深まります。
書籍で学ぶ
書籍でもデータベースに関する学習が可能です。学習レベルに合わせた書籍選びが必要となります。また、書籍を利用する場合にもPCを用意して、書籍に記載された内容を再現しながら学習することで理解が深まります。
最初は資格対策の本よりも、動かしながら理解する入門書を選ぶのがおすすめです。
SQLを使用可能なデータベース
一般に普及しているRDBではSQLを使用することができ、有償・無償合わせてたくさんの製品が存在します。SQLの学習に向けて、どのデータベースを利用するべきか、検討されている方もいるでしょう。
以下では、SQLを利用できるRDBのなかでも代表的な製品(RDBMS)を紹介します。オープンソースの製品や無償版を提供している製品を選んでいますので、実際に学習に利用いただけます。
MySQL
MySQLとはOracleが開発、サポートするリレーショナルデータベース管理システムです。CMSで最も有名な製品WordPressのデータベースとしても利用されているので、一度は聞いたことがある方も多いのではないでしょうか。もともとオープンソースのデータベースとして開発されており、2024年7月現在もMySQL Community Editionは無料で利用できるライセンスが適用され、提供されています。
WordPressの内部的な仕組みでは、ブログ投稿、ユーザー管理、プラグインの情報などをMySQLの個々の「テーブル」に保存して、それらの情報を「キー」で関連付けます。WordPressのアプリケーションが情報にアクセスする場合、SQLを使用してMySQLのデータベースにリクエストを送信する(クライアントサーバーモデルによる)ことでデータを操作します。多くの一般ユーザーにとって、オープンソースのMySQLは馴染みのあるDBMSとも言えるでしょう。
関連記事:MySQLとは?学ぶメリットやできること、習得方法を解説
MariaDB
MariaDBはMySQLから派生したデータベース製品です。オープンソースでGPL V2という実行、複製、再配布、改変が認められたライセンスで提供されています。
MySQLと高い互換性を持ち、加えて機能追加やソースコードの改善が行われています。様々なLinuxディストリビューションにMySQLに変えて採用されており、人気の高まっているデータベース製品です。
PostgreSQL
PostgreSQL(ポストグレスキューエル)は、オープンソースのRDBMSです。Linux、macOSといったUNIX系OSだけでなく、Windows OSにも対応しています。またBSDライセンスというオープンソースの中でも緩やかなライセンスを採用しており、独自の機能改変などを行っても公開義務はありません。
PostgreSQLの特徴としては、ほかのオープンソースソフトウェアと連携が可能な点です。システムを連携することで、例えばクラスタリングやレプリケーションなどで可用性の向上が期待できます。高い可用性が要求される大規模システムでも、商用データベース製品と遜色ない仕様にすることも不可能ではありません。可能な限り導入コストを抑えたいなら、PostgreSQLはとても魅力的なDBMSと言えるでしょう。
Oracle Database
Oracle DatabaseはOracle社の提供する商用RDBMSです。商用DBの分野で長い歴史と大きなシェアを持っています。
Oracle Databaseの大きな特徴としては、「高い堅牢性で障害に強い」「ロックによる待機が起こりにくい」といった点があります。データベースの冗長化や複製など、BCP対策にも効果的です。またデータ更新中の際はほかの人が同じタイミングで更新しないよう、最小のレコード単位でロック機能が働きます。同じテーブルであってもレコードが異なれば更新が可能なので、待ち時間になる確率が低くなり効率的な運用も可能です。
Oracle DatabaseはほかのDBMSと比べると高性能で高価格なため、大企業向け、大規模システムや信頼性の高いDBが必要なシステム向けの製品です。安定稼働を望むならサポート契約を締結することで、バグ対策の修正パッチの提供を随時受けられるのもメリットといえるでしょう。
2024年7月時点で一般提供されている最新バージョンはOracle Database 23aiです。また、同時点で無償版でOracle DatabaseXEが提供されており、バージョンはOracle Database 21c Express Editionとなります。
Microsoft SQL Server
SQL Serverは、Microsoft社が開発したRDBMSです。Windowsシステムでよく使われています。
Windowsの開発元であるMicrosoft社が開発しているため、Windows OSと相性が良いのが特徴です。
SQL Serverでは、データベースを視覚的に操作できる「GUI」が利用できます。データベース管理ツール「SQL Server Management Studio」を利用することで、データの操作を直感的に行うことができます。
SQLite
SQLiteはパブリックドメインの軽量データベース製品です。大きな特徴はデータベースのインストールや設定が必要なく、アプリからライブラリとして使用できる点にあります。アプリケーションに組み込むことができ、手軽に利用できることから人気を博しています。動作に必要なのはc言語ランタイムのみで、マルチプラットフォームにも対応しています。
DMLの基礎的なSQL文
SQLの中で、ソフトウェア開発などを担うITエンジニアが利用する機会が最も多いのはDML(データ操作言語)です。初心者はまずDMLの主要な文法の習得から着手しましょう。
以下では、代表的なDMLの記述について紹介します。いずれも実際の開発作業で頻繁に使用されるため、必ず使いこなせるようになりましょう。
SELECT文(データ検索、選択、抽出)
例:指定するテーブルのレコードを選択する
SELECT 列名 FROM テーブル名 WHERE 条件
この例では、指定したテーブル(表)から条件に合致したレコード(行)の指定したカラム(列)の値を取得します。条件を指定しない場合はテーブル内の全レコード、全項目が取得対象となります。
取得するレコードについては、任意の項目で並べ替えるソートを行うことができます。また、特定の条件で集約を行う検索も実務でよく利用されます。
INSERT文(データ追加、挿入)
INSERT文では、データベースのテーブルに対し新たなレコードを登録することができます。
例:指定するテーブルの任意の列に値を設定したレコードを追加する
INSERT INTO テーブル名(列名) VALUES (値)
※列名と値は、更新する列の数だけ指定する
UPDATE文(データ更新)
UPDATE文では、データベースのテーブル内で条件に合致するレコードの列を更新することができます。
例:指定するテーブルの任意の列にある値を更新する
UPDATE テーブル名 SET 列名1 = 値1 [,列名2 = 値2] WHERE 条件
※列名と値は、更新する列の数だけ指定する
この例では、指定したテーブルから条件に合致したレコードにおいて、指定した列の値を更新します。条件を指定しない場合はテーブル内の全レコードが対象になります。
DELETE文(データ削除)
DELETE文では、データベースのテーブル内で条件に合致するレコードを削除することができます。
例:指定するテーブルにある、条件に合致するレコードを削除する
DELETE FROM テーブル名 WHERE 条件
上記の例では、指定したテーブルから条件に合致したレコードを削除します。条件を指定しない場合はテーブル内の全レコードが対象になります。
データを削除するコマンドはDELETE以外にDDLのTRUNCATEがあります。TRUNCATEは、WHERE条件の指定ができず、テーブル内のデータを全削除します。また、DDLであるため、TCLによるコミットやロールバックで制御できません。実行すると必ず削除を行います。
DELETE文は条件を指定することで一部のレコードのみ削除も可能です。また、実行後もTCLによる制御ができるため、ロールバックも可能です。
JOIN(内部結合・外部結合)
JOINキーワードを使って、SELECT文の検索対象のテーブルを結合することが可能です。
内部結合
複数のテーブルを指定した列の値が一致するものだけを結合する
例:テーブルAとテーブルBで結合する条件に一致する値をもとに結合する
SELECT 列名1, 列名2, ... FROM テーブルA INNER JOIN テーブルB ON 結合する条件
外部結合
内部結合に加えて、どちらかのテーブルにしか存在しないものでも取得する
例:テーブルAにしか存在しない値をもとに結合する
SELECT 列名1, 列名2, ...,FROM テーブルA LEFT(RIGHT) OUTER JOIN テーブルB ON 結合条件
なお、テーブルの結合を行ったSQLでもWHERE句によって自由に条件を指定することが可能です。
サブクエリ生成
サブクエリはSQL文の中にさらにSELECT文を埋め込むことで、複雑な抽出条件をシンプルな構文で実現します。WHERE句で指定する条件に、SELECTの結果を利用するようなイメージです。
例:テーブルAの抽出条件に、テーブルBで値2の抽出結果を指定する(IN以降がサブクエリです)
SELECT 値1 FROM テーブルA WHERE 値2 IN (SELECT 値2 FROM テーブルB WHERE 値3 = 50)
SQLを使うにあたって押さえておきたい基本用語
SQLとデータベースを利用する周辺では、良く登場する覚えるべき用語が複数存在します。その中でも重要性の高い基本用語をまとめました。
SQLはリレーショナル型データベースで使用されるので、以下で紹介する用語はリレーショナル型データベースに関するものです。基本的な用語ですので、しっかり理解しておきましょう。
基本用語 | 意味 |
---|---|
テーブル | テーブルは、リレーショナル型データベース(RDB)内で 項目ごとに集められた「表」の単位。 RDBでは、データは項目別に整理され、表の形式で格納される。 データベースには複数のテーブルを含むことが一般的。 Excelで例えると、データベースはブックに相当し、テーブルはシート。 |
レコード | レコードは、テーブルに保存された1「行」分のデータのこと。 したがって、データベースのテーブルにデータを登録することを 「レコードを作成する」とも表現する。 2件以上のデータを指して複数レコードと呼ぶ。 |
カラム | カラムとはテーブルの「列」のこと。 データベースに格納したデータの項目。 Excelで例えると、テーブルはシートに相当し、 カラムはA列やB列などの「列」に相当する。 |
フィールド | フィールドはデータベースにおけるデータの最小単位。 各行の各列がフィールド。フィールドが集まったものがレコードやテーブルとなる。 Excelで例えると、フィールドはセルに相当する。 |
主キー (プライマリーキー) |
主キーは、テーブル内のデータを一意に特定するための項目。 一意とは重複しないという意味。会社で言えば社員番号と例えられる。 |
リレーション | データベースにおいて「リレーション」はテーブル同士の関係性のこと。 例えば、会社の拠点が登録されている拠点テーブルと 社員が登録されている社員テーブルがあり、 1つの拠点に複数の社員が在籍する場合、 拠点マスタと社員マスタは「1:nの関係」となる。 |
オブジェクト | オブジェクトとは、データベース内に存在する独立したモノ。 具体的にはテーブル、索引(インデックス)、 ビューなどがオブジェクトに該当する。 |
トランザクション | トランザクションは、複数のSQLによる処理のまとまり。 複数のSQLによるデータ更新をひとつのまとまりとして、 トランザクションの確定またはロールバックによりデータベースへ反映させる。 例えば、銀行振込の場合「振込先」「日時」「金額」「口座残高」 などの情報を取り扱い、 振込元の口座、振込先の口座に対して情報の更新が発生する。 これらの処理の途中でエラーなどが発生すると、データベース内で不整合が発生する。 不整合を防ぐため、振込元の口座からの出金の情報更新、 振込先の口座への入金の情報更新、 振込が行われたことを意味するデータの登録の3つの情報の更新を 一つのまとまりとして扱うのがトランザクション。 すべての更新を反映する(コミット)か、全ての更新を反映しない(ロールバック) かを制御することで不整合を防げる。 |
コミット | コミットは、トランザクションの処理を確定させること。 銀行振込の例では、振込元の口座からの出金だけでは処理は確定しない。 必要な全ての処理が完了した場合にトランザクションをコミットする。 |
ロールバック | ロールバックは、トランザクション処理のキャンセルのこと。 銀行振込の例では、振込先の口座の情報更新などに失敗した場合、 トランザクション内の全ての更新処理をキャンセルして 振込元の口座も元の状態に戻す。 これがロールバック処理で、トランザクションが開始される前の状態に戻る。 |
SQLの将来性
SQLのスキルを持ったエンジニアには安定した需要があり、将来性も高い技術です。1986年に統一標準規格が発表され、現在に至るまで多くのデータベースで採用されてきました。その特性から今後も継続的に使われると想定されています。
それでは、なぜ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関連のおすすめ資格
エンジニアがRDBやSQLのスキルを持つことを客観的に証明するために、資格の取得は有効な手段です。資格の取得には一定の学習による知識が必要なためです。また、エンジニアがSQLについての深い知見を得る上でも、資格を取得するための体系的学習が役立ちます。
以下では、SQLに関連する知名度の高い資格を4つ紹介します。
関連記事:SQLの資格一覧!取得メリットやおすすめの勉強方法について解説
ORACLE MASTER
ORACLE MASTERは、商業用データベース製品Oracle Databaseの開発元として有名なOracle社が主催するベンダー資格です。開発元が実施しているので、Oracleのスキルを証明するには最も有効です。ORACLE MASTERにはレベルが4段階設定されており、実務経験に応じたレベルを取得を目指しましょう。
-
Bronze:新入社員など初心者向け
Silver:現場に配属されて半年程度向け(実務経験6か月程度)
Gold:豊富な実務経験が求められ難易度は高い(実務経験3年程度)
Platinum:Oracleのプロフェッショナル向け(実務経験5年以上)
2019年よりORACLE MASTER2019という新資格体系が適用されています。
OSS-DB技術者認定試験
OSS-DB技術者認定試験は特定非営利活動法人のエルピーアイジャパンが、オープンソースデータベース全般に関する知識を認定する資格です。
前述のORACLE MASTERはSQLの基本知識なども出題されますが、Oracle製品に依存する知識も多く出題されます。一方でOSS-DB技術者認定試験では、オープンソースのデータベース全般に関する内容がPostgreSQLを中心に出題されます。
レベルはSilverとGoldの2段階があり、Goldを取得するにはSilverの合格が必須条件となります。
-
OSS-DB Silver
PostgreSQLを利用したデータベースシステムの設計から開発・導入・運用ができる技術者OSS-DB Gold
PostgreSQLを利用した大規模なデータベースシステムの改善や、運用管理・コンサルティングができる技術者
基本情報技術者試験
基本情報技術者試験は、独立行政法人情報処理推進機構(IPA)が運営し、経済産業省が認定する国家資格「情報処理技術者試験」のうちITエンジニア初心者に向けた試験です。国家資格のため、社会的に認知度や信頼度が高く、ITエンジニアの登竜門とも言えます。
システムエンジニア・プログラマーを目指す人に向けて広範囲に渡って基本的な知識を問う問題が出題され、SQLやデータベース基礎も含まれます。そのため、まずはこの資格取得をめざすとよいでしょう。
データベーススペシャリスト試験
データベーススペシャリスト試験は、独立行政法人情報処理推進機構(IPA)が運営し、経済産業省が認定する国家資格「情報処理技術者試験」のうちデータベース技術者に向けた高度な試験です。国家資格のため、社会的に認知度や信頼度が高いといえます。
特定のデータベースについて問う問題ではなく、データベースの概念について問う問題が多くなっているのも特徴です。ITSS(ITスキル標準)のキャリアフレームワークでは最高のレベル4に設定されており、難易度は非常に高いですが合格すれば高いスキルを証明できます。
SQLを習得することで目指せる職種
SQLを習得することで目指せるエンジニア職種を紹介します。
いずれの職種でもSQLは必須スキルですが、どの職種もSQLのスキルのみで転職できるわけではありません。それぞれに専門分野のスキルを身につける必要があります。年収レンジについては、レバテックキャリアの求人から分析した結果を記載しています。
データベースエンジニア
データベースの設計・構築・管理・運用を行う職種です。Oracle DatabaseやMicrosoft SQL Server、PostgreSQL、MySQLといった主要データベースを扱えれば、応募できる求人の幅が拡がります。SQLはあくまでもコアスキルのひとつですので、実務レベルを意識して身に着けておきましょう。
年収レンジ:450~900万円
関連記事:データベースエンジニアの将来性と主なキャリアパス
サーバーサイドエンジニア
Webサービスやアプリケーション開発において、主にサーバー内の処理を実装する職種です。サーバーサイドではPHPやJavaといった言語を使ってデータベースと頻繁にデータのやり取りを行うため、SQLの知識とスキルも求められます。
年収レンジ:400~1000万円
データサイエンティスト
データサイエンティストはビッグデータの収集・蓄積・分析などを行い、課題解決に役立つ知見を見出す職種です。データを用いて仮説の検証を行ったり、顧客への提案を行ったりもするので、データの操作に精通している必要があります。SQLはデータ操作の専門的なスキルですが、最低でもDDL(データ定義言語)、DML(データ操作言語)、DCL(データ制御言語)の基礎的な内容は身に着けておくべきでしょう。
年収レンジ:400~1200万円
関連記事:
データサイエンティストとは?仕事内容や必要なスキル、学習法を紹介
データサイエンティストに求められるプログラミング言語と学習方法
SQLスキルが活かせる転職求人例
レバテックキャリアで公開されているSQL関連の求人例には、以下のような案件があります。
【システムエンジニア】
SQLを業務で扱うシステムエンジニアの求人例は以下の通りです
【業界】
IT・通信
【業務内容】
通信サービスのバックアップシステムを開発するサーバーサイドエンジニア
・AWSのRDSに対するバックアップシステムの設計、開発
・サービスの維持管理に必要なツールの開発
【必須条件】
・MySQLまたはPostgreSQL、もしくは互換RDBMSの構築、運用経験
・RDBMSのレプリケーション構成の構築、バックアップ自動化の経験
・RDBMSのキャパシティ管理経験
・SQLチューニングの基礎知識
・コミュニケーション能力を持ち、社内外の関係者と協力体制を築ける
・新技術の活用可能性を探求し、プロダクト開発においてバランス感覚を持って取り組める
【想定年収】
700~1,600万円
【勤務地】
東京都
【DBスペシャリスト】
データベースの専門家としてSQLを活用するエンジニアの求人例は以下の通りです
【業界】
IT・通信
【業務内容】
顧客の戦略的IT投資に向けて、先進IT技術の調査を行い、システム(データベース領域メイン)の最適化、効率化、スリム化を提案します。
・ミッションクリティカルかつ高難易度な非機能要件実現に向けたDB基盤検討、PoC、Database選定
・企業内のデータとシステムの再配備
・大規模データを用いた効率的、費用対効果の高いシステム基盤検討
・短時間での安全なシステム切替を実現するデータ移行検討
・プロジェクト構築フェーズにおけるDB技術面のリーダー
<具体的なプロジェクト事例>
大規模DB(Oracle)システム(8ノード/20TB)HWリプレイス案件(計画~調査~実施まで)
大規模DB(Oracle)システムのBCP対応実装案件
大規模DBのクラウド基盤での構築案件
分散DBシステム(約70TB)を利用した情報系システム案件
ダウンサイジング案件でのDB技術リード(計画、構築、移行、運用までの全フェーズ)
【必須条件】
・DBの構築、運用経験
・OS/NW/ストレージなどの基盤技術の知識があると尚可
・システム開発におけるDBA業務経験
・SQLチューニングの経験
・大規模データ分析についての新技術習得に意欲的な方
【想定年収】
600~2,000万円
【勤務地】
愛知県
【事業を横断するデータアナリスト】
データアナリストとしてデータ分析にSQLを活用する求人例は以下の通りです
【業界】
IT・通信
【業務内容】
エンジニア、セールス、マーケター、データサイエンティストと連携し、データ分析に基づく施策提案とそれにともなうデータ分析環境の構築・改善
・事業課題に即したデータ分析の設計
・データの抽出・可視化・分析
・分析結果の報告及び施策提案
・その他事業課題解決に向けたプロジェクトの立案及び実行
【必須条件】
・統計学および機械学習の基礎知識
・データをもとにしたビジネス課題発見と改善施策の提案業務の経験
・データ加工、データ抽出作業の経験(SQL、Python等)
・データで事業を動かす、大きな意思決定にコミットするマインドを持つ方
【想定年収】
600~1,000万円
【勤務地】
東京都
SQLに関するよくある質問
最後にSQL に関するよくある質問について、回答をまとめました。
SQLの概要、用途やできること、SQLとプログラミングの違い、データベースとSQLの違いなどに関してよく質問されます。自分自身が疑問に思っていることに近い質問があれば、ぜひ参考にして、SQLの習得とキャリア向上にお役立ていただければ幸いです。
Q1. SQLはどのようなときに使いますか?
SQLはデータベースとやり取りをする時に使用します。データベースの中でも特にリレーショナル型データベースを操作する言語です。データを格納するテーブルの定義やデータの検索、更新などを行うデータ操作など、データベースを扱うあらゆるシーンで利用されています。
Q2. SQLとは何ですか?
SQLとは、もとは「Structured Query Language」の頭文字であり「構造化された問い合わせ言語」と翻訳されるデータベース(RDB)の操作言語です。SQLはさまざまなプログラミング言語内で「SQL文」として使用するケースが多く、命令文との組み合わせでデータベースの操作が可能です。
Q3. SQLとプログラミング言語の違いは何ですか?
SQLはコンピュータに対する命令文という点ではプログラミング言語と似ていますが、通常のプログラミング言語は「処理の手続き」を記述するのに対し、SQLは「出力したい項目と条件」を指定します。
SQLでは「どのような結果が欲しいか」を指示して、具体的な処理内容はデータベースエンジンに任せるのです。
Q4. データベースとSQLの違いは何ですか?
データベースはデータを保存・管理するしくみのことで、SQLはそのデータベースを操作するための言語です。データベースは一般的にはDBMSというソフトウェア(ミドルウェア)として提供されます。DBMS上のデータの定義や操作を行うのがSQLという関係です。
Q5. SQLで何ができますか?
SQLを使って、データの登録、更新、削除、検索などのデータの操作ができます。またテーブルの作成や削除などもSQLを使って行います。
各種のアプリケーションではデータを保持するための仕組みとしてデータベースを利用します。また、収集・蓄積したデータを分析して、既存業務の改善に役立てる動きも顕著です。
まとめ
SQLはデータベース操作用の言語として、世界で最も普及している言語です。各種のITシステムやアプリケーションを支えるバックグラウンドとしてデータベースは活用されているため、SQLのスキルを身に着けることで、ITエンジニアとしてキャリアパスの幅を広げることが可能です。
基本的なコマンドであれば、学習ハードルは低いので独学での習得も可能です。まずは学習環境となるデータベースを構築して、実際にSQLに触れてみることをおすすめします。
ITエンジニアの転職ならレバテックキャリア
レバテックキャリアはIT・Web業界のエンジニア職を専門とする転職エージェントです。最新の技術情報や業界動向に精通しており、現状は転職のご意思がない場合でも、ご相談いただければ客観的な市場価値や市場動向をお伝えし、あなたの「選択肢」を広げるお手伝いをいたします。
「将来に向けた漠然とした不安がある」「特定のエンジニア職に興味がある」など、ご自身のキャリアに何らかの悩みを抱えている方は、ぜひ無料のオンライン個別相談会にお申し込みください。業界知識が豊富なキャリアアドバイザーが、一対一でさまざまなご質問に対応させていただきます。
「個別相談会」に申し込む
転職支援サービスに申し込む
※転職活動を強制することはございません。
レバテックキャリアのサービスについて