「SQLでできることや、特徴を詳しく知りたい......」データベースを扱うにはSQLが欠かせないとは分かっていても、具体的にSQLでできることや、どのように便利なのかわからないエンジニアの方もいるのではないでしょうか。そこで今回はSQL初心者の方に向けて、SQLでできることについて、具体的なデータベース操作方法とともにご紹介します。3事例SQLの実行環境を作る2つの方法SQLで簡単なサンプルコードを書いてみようSQLを実務で使う時の注意点まとめSQLとは?SQLは、データベースを操作する言語です。データベースとは、ある特定の条件に当てはまるデータが、使いやすい形で整理されたデータ群のことです。「電話帳」のようなものを想像していただければ問題ありません。「データベースを操作する言語」と聞いても、「なぜ使うのか?」「何ができるか?」がよくわからない方もいるでしょう。そこでまず、以下について解説します。SQLを学習するメリットSQLの種類SQLを学習するメリット以下でSQLを学習するメリットを2つご紹介します。データ検索・更新・削除などが簡単にできるGoogleスプレッドシートやExcelなどでデータ管理をしていて、以下のような悩みを持ったことはありませんか?欲しいデータを抽出してグラフ・レポートを作るのに、多くの時間がかかるデータが増えるにつれて作業時間も増え、データメンテナンスが大変になっているSQLを使えば、欲しいデータをサクッと抽出できます。データ更新も高速なので、データメンテナンスも楽になるのです。データ一覧から欲しいデータを欲しいときだけ抽出できるデータ管理をしやすくするための「管理データ一覧」の項目と、レポートに使う「レポートデータ一覧」の項目をそれぞれ別に作っているケースはよくあるでしょう。管理データ:細かいレベルでデータを表示レポートデータ:一部データのみサマリー結果を表示ただ同じデータを使うなら、余計なシートを増やしたくないはずです。レポートを出すときだけ、管理データから一部のデータを抽出して、レポートデータを作っている方もいるのではないでしょうか。面倒ですよね......。SQLを使えば、データ一覧から「欲しいデータを抽出するスクリプト」が作れます。一度作ってしまえば欲しいデータを一瞬で取得できるので、わざわざ別にレポートデータのシートを作る必要がありません。SQLの種類SQLの種類は、大きく分けて以下の4つです。DML(データ操作言語)DMLは、データベースのレコード(データ)を操作する文法です。DMLでは、以下のような操作ができます。具体的な書き方は、後ほど解説しますね。DDL(データ定義言語)DDLは、データベース・テーブルを定義する文法です。データベースは、以下のようなデータ構造になっています。▲データベース・テーブル・レコードの関係性データベースの中に複数のテーブルがあり、テーブルの中にレコードとしてデータが入っています。Excelのブックの中にシートがあり、シートの中にセルがあるのと似ていますね。そこでDDLは、以下の操作ができます。「部署テーブル」「ユーザ一覧テーブル」「請求データ一覧テーブル」のように、データのまとまりをテーブルとして作成するイメージです。DCL(データ管理言語)DCLは、データの権限を操作するための文法です。だれでもデータ更新ができてしまうと、セキュリティ事故につながってしまう可能性があるります。それを防ぐために、データベースではアカウントごとに操作権限を設定できるのです。更新&削除不可」のように更新できないようにしたり、テーブル単位で検索できる範囲を狭めたりできます。DCLでは、以下の操作ができます。権限を管理するときは必須になるので、覚えておきましょう。トランザクション制御データベースのデータは、一度書き換えてしまうとバックアップから復元しないと戻せません。そのためデータ更新前に結果を確認してから、更新するのが一般的です。その際に使用するのが、トランザクション制御です。おおもとのデータを変えずに、更新結果だけを確認したいときに使います。トランザクション制御は以下のような流れで実行します。手順3でデータ更新結果が間違っていても、トランザクション制御をかけているのでおおもとのデータに影響はありません。データベースのひとつである『MySQL』でトランザクション制御するときは、以下のようにコードを書きます。データ検索処理を書くROLLBACK;上記コードを実行して一旦確認してから、「BEGIN;」「ROLLBACK;」を外して再実行すれば、おおもとのデータが書き換わります。SQLでできることSQLの種類だけでは、具体的なデータ操作イメージが湧かない方もいるでしょう。そこで次は、SQLでできることを以下の2つに分けて解説します。データベース・テーブル操作レコード操作SQLでできること1:データベース・テーブル操作DDLでも少し解説しましたが、SQLではデータベースとテーブルの操作ができます。データベースのテーブルは、以下のように複数列でできています。▲データベースのテーブルデータイメージ上記はExcelで作っていますが、No、ユーザID、ユーザ名、部署コード、部署名などの列がありますよね。このように、SQLではテーブルの列名を決めてテーブルを作ったり、テーブルの列名を変更したりできるのです。具体的な書き方は、後ほど解説しますね。SQLでできること2:レコード操作SQLはデータベースやテーブル操作だけでなく、レコード操作もできます。データを挿入・データ更新をする処理を以下のように行えます。条件を指定すれば、データの検索や挿入、更新、削除ができます。「SQLの概要やできることはわかったけど、具体的にどんな業務が効率化できるんだろう......」と思った方もいるのではないでしょうか。そこで次に、SQLで効率化できる業務を3つご紹介します。データ検索や加工が高速で行えるSQLの魅力は、データ検索や加工が高速で行えることです。Excelでもデータ検索や加工はできますが、複雑な関数をいれたり、データ量が多くなったりしてくると操作が重たくなりますよね。抽出条件が複雑だと、データを絞り込んで欲しい情報をまとめるだけで時間がかかります。SQLを使えば、たった数秒でデータ検索や加工ができるのです。夜間にデータ更新を予約できるSQLはその場でコードを書いて実行するだけでなく、実行タイミングを制御できます。そのため夜間にデータ更新を予約することも可能です。毎日溜まるデータをサマリーデータとしてまとめる業務を、夜間の予約実行に切り替えれば、業務の手間を減らせます。管理するデータとは別に見せ方を変更できる管理しやすいデータ構造と、見たいデータが一致しないケースはよくあります。SQLを使えば、元のデータを変えずに表示データを変えられるのです。以下のような複数テーブルを合体させて、欲しい情報だけ見れます。部署名称は、組織改革に合わせて変更されるケースが多いですよね。そのため「部署テーブル」のように、部署だけの情報で管理しているところが多いのではないでしょうか。一覧データで見せるときは「部署コード」は必ずしも必要ではないですよね。部署名だけで良い時の方が多いはずです。SQLでは表示する項目を指定して、データ検索ができます。見たいデータを簡単に作れるので、データ活用もしやすくなるのです。SQLの実行環境を作る2つの方法ここからは、SQLを書くための実行環境の作り方を2つ解説します。実行環境は、大きく分けて以下の2つです。Webで使えるサービスを利用するパソコンにインストールするWebで使えるサービスを利用するはじめてSQLを使う方にとって、始めやすさは重要ですよね。「便利なことはわかったけど、いざ始めようとすると腰が重たいな......」と思わないためにも、はじめてSQLを学ぶ方は、サクッと使えるWebサービスがおすすめです!『paiza.io』を使えば、以下のたった2ステップですぐにSQL実行環境が用意できます。▲言語選択タブを「MySQL」に変更(出典:paiza.io)「環境構築なしで、手軽にSQLをはじめてみたい!」という方におすすめです。パソコンにインストールする上記の方法を試そうとしても、「自社のデータを外部サービスに登録するのは怖い......」という方もいますよね。そんなときは、パソコンにSQLの実行環境をインストールしましょう。データベースにはいくつか種類がありますが、MySQLがおすすめです。インストーラをダウンロードして、画面に沿って進めるだけで簡単に環境構築ができます。DBOnline」という環境構築記事をぜひ参考にしてみてください。SQLで簡単なサンプルコードを書いてみようSQLの実行環境が用意出来たら、簡単なSQLを書いて動かしてみましょう。今回は、以下の部署テーブルの作り方を解説します。▲部署テーブルのイメージ以下手順で、ひとつずつ解説しますね。テーブルの作成まずは、部署テーブルを新規作成します。テーブルは、項目ごとに「データの型」を指定する必要があります。文字列型:VARCHAR物理名は、SQLを書くときに使う英字の名前です。論理名はテーブルに登録はしませんが、わかりやすいように今回は載せています。値とデータ型が合っているかどうか、確認してから入れるようにしましょう。CREATE文でテーブル作成するSQLは以下のとおりです。データ型」としてCREATE文を作っています。dept_lists;」を入れています。CREATE文で作った定義が出ていればOKです。次に、データを追加します。データを挿入するときは、INSERT文を使います。INSERT文はデータ挿入しかできないので、挿入した結果を確認したいときはSELECT文を使用しましょう。こちらも使い方を解説する前に、作ったコードと実行結果をお見せします。|INSERT文は、以下のように1行ごとにデータ挿入文を作ります。列名nの値);「ちょっと作り方が難しそう......覚えられるかな......」と不安な方は、「SQLのINSERT文をページ上で一瞬で簡単に自動生成できるWEBツール」を参考にしてみてください。テーブル名や列名などの追加したいデータを以下のように入れるだけで、自動でINSERT文を作成できます。▲出典:SQLのINSERT文をページ上で一瞬で簡単に自動生成できるWEBツールただ、行の最後にセミコロン(;)がつかないので、作成後はセミコロンをつけて利用しましょう。最後に補足として、SQLを実務で使うときの注意点を2つ解説します。データ更新時はトランザクションを制御するSQLを実行するデータベースを意識する注意点1:データ更新時はトランザクション制御するデータ更新するときはいきなり更新するのではなく、トランザクション制御をするのがおすすめです。先ほどのサンプルのデータを、以下のように更新する場合を考えてみましょう。▲テーブルの変更イメージトランザクション制御しつつ更新する場合は、以下のように書きます。トランザクション制御を行いつつデータを更新する場合は、以下のようにコードを書きます。ROLLBACKの中にあるSELECT文は、レコード更新後の結果が表示されています。ROLLBACKの後にあるSELECT文の結果は、変更前の結果になっていますよね。トランザクション制御を行えば、このように更新結果を先に確認できるのです。データの重要度に限らず、データの更新や削除を行うときは、トランザクション制御をしましょう。注意点2:SQLを実行するデータベースを意識するSQLは、SELECT文、INSERT文、UPDATE文、DELETE文などの基礎的な書き方はどのデータベースでも同じですが、データの条件指定に使う関数はデータベースによって異なります。調べたいこと」で書き方を調べて使うのがおすすめです。「書いてあるコードをそのまま使ったのに動かない......」と無駄な時間を消費しないためにも、頭の片隅に置いておくと良いでしょう。まとめ今回は、SQLでできることについて解説しました。SQLを使いこなせるようになると、データ管理や操作が圧倒的に効率化できます。Webですぐに使えるpaiza.ioを利用して、簡単なSQLを書くところから始めてみるのがおすすめです。SQLを書いて、業務の効率化に役立ててみてください。MAGAZINEしろ「フクザツなことをカンタンに」がモットーのテクニカルライター。IT企業で約5年のエンジニア経験を経て、フリーランスとして独立。プログラミングの解説記事が得意。連載2020.02.26FREELANCE月10万円の案件が、突然打ち切りに。連載2020.02.25FREELANCE「フリーランスからのダメ出しがほしい」メンバーの9割がフリーランスの会社にコミュニケーション論を聞いたら、意外な答えが返ってきたインタビュークライアントに直接聞いてみよう連載2020.02.20FREELANCEフリーランス、遊びの予定が立たない問題。MAGAZINE(ワークシップマガジン)は「デジタル×フリーランスを知るマガジン」として、エンジニアやデザイナー、マーケター、編集者など専門職のフリーランス、クリエイター向けに、最新トレンドやスキルアップ記事を提供するメディアです。他にもセミナーや交流会など、メディアとしてさまざまな情報を発信しています。