SQL(シークェル、あるいはシーケル)は、データベース言語の中でもっとも普及している言語の1つです。
単体で役立たせることは難しいですが、マスターすればデータベースに関する業務の中で幅広く活躍でき、エンジニア以外の職業でも活用できる場面があります。
本記事では、データベース言語の概要といった初歩的な部分を皮切りに、SQLの特性やメリット、活用シーンについて紹介していきます。
SQLについて学ぶ前に:データベース言語とは
まず、“データベース言語”とはどのようなものなのか、プログラミング言語とどの部分が異なるのかについて解説していきます。
データベース言語
データベース言語は、コンピュータのデータベースを扱うためのコンピュータ言語です。
コンピュータにおけるデータベースとは、検索や蓄積が容易にできるよう整理された情報の集まりのことです。
データベースを使うことで、複数データの一括管理が可能になる他、データ検索効率の上昇や効率的なデータの活用といったメリットを実現できます。
データベース言語を使用することで、データベース利用者やアプリケーションソフトウェアがデータベースにアクセス可能になります。
一般に行われているデータベース言語やデータベース言語要素の分類は、データ操作言語(DML:Data Manipulation Language)、データ定義言語(DDL:Data Definition Language)、データ制御言語(DCL:Data Control Language)の3つに分けられます。
言語や言語要素の分類 |
言語や言語要素の働き |
---|---|
データ操作言語(DML) |
対象データの検索、新規登録、更新、削除 |
データ定義言語(DDL) |
データ構造の生成、更新、削除 |
データ制御言語(DCL) |
アクセス制御の実行 |
データベースを扱う機能の中では、検索(問い合わせ)が重要であるため、通例として問い合わせ言語とも呼ばれます。
ただし、データベース言語と問い合わせ言語は、概念的に重なる部分があるものの、同義の存在ではないということには注意が必要です。
データベース言語は、普通は純粋な検索以上の機能を含んでおり、問い合わせ言語はデータベース以外の領域においても使われることがあります。
プログラミング言語との違い
コンピュータ言語といえばプログラミング言語がもっとも有名であり、この2つは同じ意味で使われることがあります。
しかし、データベース言語はプログラミング言語とは明確に異なる言語となっています。
プログラミング言語とは、コンピュータなどの計算機に対して動作の手順、方法、内容などを適切に指示するために使われる人工的に構成された言語体系のことで、動作に対して結果が出力される言語のことを言います。
対して、データベース言語は、データを管理してユーザーが指定した条件に合致するものを見つけ出すためのものなので、プログラミング言語のようにコンピュータに対して動作の手順や内容を指示することはできません。
わかりやすい例はアプリケーションの制作です。
プログラミング言語を使用してアプリを作成することはできますが、データベース言語はアプリの作成・操作を行う機能を持ち合わせていないため、他のプログラムやプログラミング言語を併用する必要があります。
SQLとは?
SQLは、関係データベース(リレーショナルデータベース/RDB)において、データの操作や定義を行うためのデータベース言語です。
DML、DDL、DCLのすべての言語要素が、さまざまな命令文を1つにまとめた言語体系として存在しています。
SQLはデータベース言語としてISO(国際標準化機構)で規格化されているため、“Oracle Database”、“Microsoft SQL Server”、“MySQL”といった複数のデータベースで同じように利用できます。
また、コンピュータがユーザーにデータの入力などを要求し、それに応じて処理を行っていく操作(対話型処理)が可能なので、文字列をコンピュータ上で実行可能な形式に変換することなく作業が行えます。
※関係データベース(リレーショナルデータベース)
“関係モデル(リレーショナルデータモデル)”にもとづいて設計、開発されるデータベース。
関係モデルは現在もっとも広く用いられているデータモデルであり、データベースの利用者はクエリ(問い掛け)をデータベースに与えることでデータの検索や変更が可能。
関係データベースを管理するデータベース管理システム(DBMS)を関係データベース管理システムと呼ぶ。
SQLでできること
データベース言語やデータベース言語要素の分類は一般的にDML、DDL、DCLの3つに分けることができ、SQLではその3つの言語要素がさまざまな命令文を1つにまとめた言語体系として存在していることは前述したとおりです。
SQLを使用することで、データ検索、追加、更新、削除、テーブルの作成、主キーの設定、ユーザー権限の付与といったデータベースに関わるあらゆる操作を行えます。
また、データベースに関わる操作の中で役立つ機能も備わっています。
※テーブル
データを保存しておくための表で、データ要素(値)の集合を垂直の列(縦軸)と水平の行(横軸)によるモデルで構成する。
なお、テーブルには所定の個数の列があるが行数は不定となっているおり、各行は特定の列の値で識別される。
DML
対象データの検索や新規登録といった、データベースの操作のための構文であるDMLは、目的語やさまざまな条件を示すキーワードと組み合わせて使われており、多くのパターンが存在します。
目的語には“~以上”、“~以下”などの条件づけが可能で、SQL関数と呼ばれる関数を使用できます。
命令文 |
機能 |
---|---|
SELECT |
表にあるデータの検索 |
INSERT |
行データや表データの挿入 |
UPDATE |
表の更新 |
DELETE |
表から特定の行を削除 |
DDL
DDLは、データベースの管理者としてテーブルを管理する際には必ず覚えておく必要があります。
テーブルとは、データベース内のデータの形式などを定義したもののことで、DDLはテーブルを作成、定義する文法となっています。
データベースの構造はデータベースの中に複数のテーブルが、テーブルの中に複数のレコードとしてデータが存在するという形となっており、DDLによってデータのまとまりがテーブルとして作成されるイメージです。
命令文 |
機能 |
---|---|
CREATE |
データベースやテーブルの新規作成 |
ALTER |
データベースやテーブルの定義変更 |
DROP |
データベースやテーブルの削除 |
※レコード
データベース内のテーブルを構成する単位の1つで、1行分のデータを指す。
1つのレコードの中には複数の項目が存在する。
1行分のデータをレコード呼ぶのに対して、1列分のデータはカラムと呼称する。
DCL
DCLは、データベースを管理したり操作したりする時に使用する文法です。
主な目的は、アカウントごとの操作権限の設定によるセキュリティ事故防止です。
“データ検索可、更新&削除不可”といった条件でアカウントが使用できる部分を設定できる他、テーブル単位で検索できる範囲を決めておくこともできます。
命令文 |
機能 |
---|---|
GRANT |
権限の追加 |
REVOKE |
権限の削除 |
トランザクション制御
トランザクション制御は、データベースに異常が発生した場合に備えて、データの整合性を保つために用意されている機能のことです。
データの書き換えや削除に失敗すると大事なデータが消失してしまいますが、トランザクション制御を行うことで、データのバックアップが作成され、失敗時にはデータ操作の処理が最初に戻せるようになります。
ストアドプロシージャ
ストアドプロシージャはDBMSの機能の1つで、データベースに対する一連の処理を1つのプログラムにまとめ、データと共に保存できるようにしたものです。
SQLの文を組み合わせて処理手順を記述してDBMSに保存することで、すぐに実行可能な形式に変換されて外部から呼び出し可能な状態になります。
これにより、複数のテーブルに複数の処理を行うような複雑な処理をまとめて実行できます。
View(ビュー)
Viewとは、1つ以上の表や他のViewからデータを選択し、それらをカスタマイズして表したものです。
データベースに作成された表は、一定のルールにもとづいて変形し、利用しやすくなった状態として表示されますが、ユーザーの目的によってはかえって利用しづらいケースも起こりえます。
Viewを活用することで、複数のテーブルの必要なデータのみ取り出して結合し、見やすい状態になるよう組み合せることができます。
オススメのSQLクライアント
SQLを書いて実行するには、データベース(Oracle DatabaseやMySQL)とSQLクライアントによる開発環境が必要となります。
SQLクライアントはデータベースにネットワークを通じて接続するためのソフトウェアで、SQLの実行だけでなく、記述のサポートにも必要なソフトウェアです。
本項では、ユーザーごとに選択することとなるであろうSQLクライアントの中から、オススメできるクライアントを紹介します。
A5:SQL Mk-2
フリーウェアでありながら高機能で使いやすいSQLクライアントです。
さまざまなデータベースへの接続が可能で、テーブルからSQLを生成したり、テーブルの内容をExcelに出力したりできる他、SQLの比較実行といった実際の作業で役立つ機能が盛り込まれています。
また、日本発のツールなので公式サイトやコミュニティも日本語がメインであるという点も大きなメリットです。
英語ができなくても公式サイトにあるヘルプや掲示板をしっかり活用できます。
DBeaver
“A5:SQL Mk-2”と同じく、さまざまなデータベースに接続可能なフリーのSQLクライアントです。
デフォルトで日本語に対応しているため、英語ができない人でも扱いやすくなっています。
キーワード補完やアカウントによる色分けなど、作業中のミスを減らしたいという人にうれしい機能が搭載されています。
また、対応OSがWindows/Linux/Mac OS X/Solarisの計4種となっているので、複数のOSのPCを利用するという人にもオススメです。
SQLを使用する職業の例
SQLはデータベース言語であり、データベース言語を使用するということはコンピュータのデータベースを扱うことと同義です。
そして、データベースはデータ分析やスタッフ・顧客データの管理、実績管理など、さまざまな職種で扱われます。
その時、SQLの知識があれば自分で必要なデータを抽出して分析できるため、非エンジニアにもSQL使用するシーンや学ぶメリットがあります。
本項では、“データを扱うシーンがある=SQLを使用する職業”としつつ、特にSQLと密接な関係を築くこととなる職種を紹介します。
データベースエンジニア
データベースエンジニアの主な業務内容は、データベースの設計、開発、管理、運用です。
膨大な情報から必要なものを取り出せるデータベースを設計・構築したり、データベースを支えるサーバの設定・運用をしたりと、データベースエンジニアはデータに関するさまざまな場面で必要とされます。
その際、ISOで規格化されているSQLをマスターしていれば、異なる種類のデータベース製品に対応できるため、広く活躍できます。
データエンジニア
データエンジニアは、データ基盤の設計、開発、運用が主な業務となります。
データ基盤とは、分析に利用するデータを蓄積し、必要に応じて取り出せる処理システム群のことです。
開発においては、インフラ環境やデータベースの構築に始まり、データソースからデータを収集して蓄積されるまでの処理や必要に応じて蓄積データを出し入れできるアプリケーションを作ります。
そのため、データベースの設計・運用スキルは必須であり、同じくSQLの知識や経験も必要となります。
※データソース
データベースへアクセスするための情報をまとめたもので、Data Source Name(DSN)という名前で識別される。
作成したデータソースのDSNを指定することで、データソースに格納される情報を間接的に指定できるようになる。
SQLと併せて学習したい言語
Java
SQLと密接な関係にある職業のデータエンジニアを目指す場合は、Javaなどの言語を合わせて学ぶことがオススメです。
データ基盤のシステム開発で多く採用されるソフトウェアフレームワークの1つ“Hadoop”がJavaで記述されていることから、Javaに関する知識があると仕事がスムーズに進みます。
Hadoopを用いた開発経験や分散処理のスキルがあることを必須要件とするSQL案件もあるようです。
※ソフトウェアフレームワーク
プログラミングにおいて、アプリケーションのプログラムなどに必要となる一般的な機能をあらかじめ別に実装したもの。
活用することで開発工程を大幅に短縮できるため、要求仕様の実現に多くの時間を割けるようになるというメリットがある。
PL/SQL
PL/SQLは、SQLを拡張したプログラミング言語です。
SQL言語と緊密に統合されており、手続き型の処理を記述可能となっています。
PL/SQLプログラム内では、SQLのすべての文や関数などを使用でき、すべてのSQLデータ型もサポートされているので、SQLとPL/SQL間でデータ型の変換作業も必要ないということから、並行して覚えやすい言語となっています。
まとめ
記事冒頭で触れたとおり、SQLはそれ単体では活躍することが難しいですが、データベースの作成や運用できるようになるメリットはあらゆる職業に存在することから、データにかかわる職種であればぜひともプログラミング言語とあわせてマスターしておきたい言語です。
特に、プログラミングにかかわる職種であれば、プログラミング言語についての知識が必要である、あるいはすでに所持していることから、難易度的なハードルも下がるので特にオススメです。
本記事では紹介していませんが、プライベート利用を目的とする場合は無料でダウンロード可能な“MySQL”というものが存在しており、設備投資を行わずに始めることができるので、興味を持った人はぜひ初めてみてください!