スマートフォンやソーシャルメディアが普及し、膨大な情報が飛び交うビッグデータ時代において、データをマーケティング等に活用する企業も多いことでしょう。
そんな中、データの取り扱いに必須とも言えるSQLについては、聞いたことはあっても詳しくは知らないという人が多いのではないでしょうか。
- SQLとは何だろう?
- SQLで何ができるの?
そのような疑問にお答えするため、この記事ではSQLとその役割についてわかりやすく説明したいと思います。
SQLとは?
SQL(Structured Query Language)とは、ISO(国際標準化機構にて規格化されているデータベース言語のことです。
「エス・キュー・エル」、「シークェル」、「シーケル」などと読みます。「シークェル」、「シーケル」と呼ばれるのは、1970年代にIBMが開発したRDBS(リレーショナルデータベース管理システム)を操作する”SEQUEL”が、SQLの元となっており読み方が引き継がれているからです。
システム開発の世界で「言語」というと、システムを構築するためのプログラミング言語(C・Java・PHPなど)を想像する方が多いと思いますが、それらとは違い、SQLはデータベースを操作する際(データの検索や変更、削除)に用いる言語です。
データベース言語とプログラミング言語の違いとは?
データベース言語は、データベースを操作するための言語です。
一方、プログラミング言語は、コンピュータを操作するための言語です。プログラミング言語を使用すると、コンピュータに特定のタスクを実行させることができます。例えば、Webサイトを作成するためのHTMLやCSS、データを処理するためのPythonやJavaなどがあります。
つまり、データベース言語はデータを扱うための言語であり、プログラミング言語はコンピュータを操作するための言語であるということです。
SQLを理解するために必要な用語
前述の通り、SQLはデータベースを操作するための言語なのですが、ではデータベースとはどのようなものを指し、どのように管理するのでしょうか。
まずはSQLを理解するために必要な用語について解説していきます。
データベースとは?
データベースとは項目毎に整理された情報の入った箱、かたまりのことであり、情報の更新や取り出しが簡単に行えるように設計されています。
例えばECサイトの場合、下記のような情報がデータベースに保存されています。
- ユーザ認証 (ID・パスワード)
- プロフィール (アカウント名・本名・住所)
- 購入履歴 (商品名・値段・数量・日時)
- 欲しいものリスト (商品名・追加日・優先度)
Webサービスでは膨大な量のデータを扱うことが多いため、PC内のファイルで取り扱う場合には、速度や整合性に問題が生じてしまいます。
その点、データベースを活用すると膨大なデータを敏速かつ正確に引き出すことができるのです。
データベース管理システム(DBMS)とは?
データベース管理システム(DBMS)とは、データベースを管理するためのシステムです。データベースのみではデータの整理を行わないため、データベース管理システム(DBMS)を活用するのが一般的です。
データベースのデータを扱う手法には、「階層型」「ネットワーク型」「リレーショナル型」があり、一般的に使用されているのが「リレーショナル型」に沿ったリレーショナルデータベースと呼ばれる手法です。
現在では、「階層型」「ネットワーク型」の2つはほとんど使われておらず、データベースという言葉をリレーショナルデータベースの意味で使っていることが多いと言えるでしょう。
このリレーショナルデータベースは、データを表形式のテーブルで整理し、複数の表を結合(リレーション)して利用することができます。
そして、このリレーショナルデータベースを管理するシステムのことを、リレーショナルデータベースマネジメントシステム(RDBMS:Relational DataBase Management System)、または関係データベース管理システムといい、世界中で多くのRDBMSが利用されています。
代表的なRDBMS | 概要 |
---|---|
Oracle社のOracle Database 商用RDBMS | 世界で最も多く使われているRDBMS |
Microsoft社のMicrosoft SQL ServerやAccess | Microsoft社のOfficeファミリーのRDBMS |
MySQL | 世界で最も使われているオープンソースのRDBMS |
PostgreSQL | 日本で人気のオープンソースRDBMS |
SQLの役割とは?
SQLの役割とは、RDBMSを用いて情報を登録・更新したり、削除したり、データベースの中から情報を取り出したりする際に使用するもの、ということになります。
一例として、ECサイト構築時に使用する言語とその役割をまとめると、SQLの位置付けがわかりやすくなるかと思います。
言語 | 役割 |
---|---|
HTML | Webサイトに文字情報を入力する |
CSS | Webサイトに装飾をつける |
JavaScript・jQuery | Webサイトに動きをつける |
PHP | カート機能を構築する |
MySQL | データを管理する/RDBMS |
この際、MySQLへデータを登録・追加・更新・削除するための言語が「SQL」です。
SQLは前述の通りISO(国際標準化機構)で規格化されているため、一旦習得すれば、微妙に書き方は異なるものの、MySQL以外のRDBMSでも同じように使用することができます。
SQLで出来ること
SQLを使って出来ることは、具体的に挙げると下記になります。
- データベースの構造を定義する
- データベースの中のデータを処理する
- データベースの権限を管理する
なお、これらの処理を実行させるための命令文をクエリ(query)と呼び、人間が「データベースに処理させたいこと」を文字列として表したものになります。
このクエリとSQLは混同されやすいのですが、クエリは命令文のことであり、クエリを書くための言語がSQLです。
それではもう少し掘り下げて見ていきましょう。SQLは3つの言語から構成されており、先ほど列記した「SQLを使って出来ること」は、それぞれの役割に応じて下記のように整理されています。
SQLで出来ること | 言語名 |
---|---|
データベースの構造を定義する(テーブルの作成・削除など) | データ定義言語(DDL) |
データベースの中のデータを処理する(データの検索・追加・更新・削除など) | データ操作言語(DML) |
データベースの権限を管理する(トランザクション・権限の付与など) | データ制御言語(DCL) |
※トランザクションとは・・・データベースで複数の処理をまとめて行う操作のことを指します。トランザクションを使用することで、複数の処理を一つの処理として扱うことができます。
データ定義言語(DDL)
データベースやデータベースの中のテーブルなど、データベースの構造を定義するためのクエリをデータ定義言語(DDL:Data Definition Language)と呼び、下記のようなクエリで、データベースやデータベースの中のテーブルを操作します。
CREATE文:データベースやテーブルを作成する
ALTER文:データベースやテーブルの定義を変更する
DROP文:データベースやテーブルを削除する
TRUNCATE文:データを全て削除する
データ操作言語(DML)
データベース中のデータを処理するためのクエリをデータ操作言語(DML:Data Manipulation Language)と呼び、下記のようなクエリでデータベースのテーブル内のデータを操作します。
INSERT文:テーブルにデータを追加する
SELECT文:テーブルの中からデータを検索して抽出する
UPDATE文:テーブルの中のデータを更新する
DELETE文:テーブルの中からデータを削除する
データ制御言語(DCL)
データベースのアクセス権限を管理するためのクエリをデータ制御言語(DCL:Data Control Language)と呼び、下記のようなクエリでデータベースへのアクセス権限を操作します。
GRANT文:権限を付与する
REVOKE文:権限を取り消す
BEGIN文:トランザクションを開始する
COMMIT文:トランザクションを確定させる
ROLLBACK文:トランザクションの処理を全て取り消す
<まとめ>SQLを理解してデータを活用しよう!
SQLを活用すれば、データの格納先であるデータベースを利用したアプリケーションの開発も可能になります。
なお、昨今では、SQLを使わないNoSQLというデータ管理システムも流通しており、データの関係付けを行う必要がなく、大量のデータを処理するケースにおいて有用とされています。
データベースを活用したシステム開発にご興味のある方は、弊社までお気軽にご相談ください。
当社がこれまで支援してきた開発事例の共有、企画・コンサルティング、要件定義や実際の開発支援まで包括的にサポートさせていただくことが可能です。
システム開発を失敗しないために、弊社が相見積もりの取得までをサポートさせていただくことも可能です。むやみな営業電話などは決して行いませんので、まずは無料のご相談をお待ちしております。