「SQLは何となく苦手」という人は意外と多いものです。すでに何らかのプログラミング言語を習得している人を見ても、SQLを苦手としている人は少なくありません。そこで、実際にSQLを入力して結果を見ながら学習する連載を始めます。用意するのはインターネットにつながったWebブラウザだけ。気軽に始めてみてください。(編集部)
皆さんこんにちは。今日から始まるこの連載は、すぐに試せるリレーショナルデータベース管理システム(RDBMS)の環境を使って、実際に操作しながらSQLを体得していただく実践型のSQL講座です。詳しくは後述しますが、あなたのパソコンにRDBMSをインストールする必要もありません。Webブラウザさえあれば、気軽に試していただけます。
「SQLを勉強したいけれど、どこから手を付けたらいいのか……」とちょっと途方に暮れている方や、「普段の業務でSQLを使っているけれど、いつもその場しのぎだから、体系的に学びたい」という方、「SQLはある程度書けるけど、もっと効率の良い書き方はないかな」と思っている勉強熱心な方など、どんな理由でもSQLを学びたいという方はぜひともこの連載を役立ててください。
ここでは、SQLというものをこれから勉強しようとしている方のために、まずは「SQLとはどういうものなのか」ということを簡単に説明します。
SQLとは、リレーショナルデータベース(RDB)のデータを操作するための言語です。私たちはSQLを使うことによってRDBMSに命令を出して、必要なデータをRDBに格納したり、格納したデータを取得(表示)できます。本連載では、Oracle Databaseを操作する例について解説しますが、SQLはOracle Database固有のものではありません。
SQLは、ANSI(アメリカ規格協会)やISO(国際標準化機構)が規格化しているものであり、Oracle Databaseに限らず、Microsoft SQL ServerやMySQLといったほかのRDBMSでもほぼ同じように利用できます。
RDBでは、データを「行」と「列」から成る2次元の表形式で扱います。行は1件のデータ(レコード)を表し、列は各項目を表し、行と列が交わった部分を「フィールド」と呼び、フィールドにデータ(値)を格納します。
列や行に明示的な順序はありません。つまり、「1行目のレコード」と指定することはできません。例えば、「社員番号が『101』のレコード」と指定する必要があります。同様に、「2番目の列」と指定することはできないので、「列名が『社員名』である列」と表現します。
データを検索したり、更新するときは、「行」と「列」を指定してデータが存在するフィールドを特定します。例えば、下の図1で「鈴木」というデータを検索するには、「社員番号が『101』の行にある、社員名のデータ」というように指定するのです。
先ほど、SQLはデータを操作するための言語と説明しましたが、SQLには表の作成、ユーザー権限の操作といったデータの操作とは関係ない言語もあります。
SQLのうち、データを操作する言語をDML(Data Manipulation Language:データ操作言語)と呼びます。DMLには、データを検索するSELECT、データをテープルに追加するINSERT、データを更新するUPDATE、データを削除するDELETEなどがあります。
この連載では、まずSELECTを使って、データを検索する構文について説明します。SELECTはSQLの中で最も基本的な構文です。しかし、多種多様な条件で検索するために、たくさんのキーワードと組み合わせて使うことが普通です。SELECTはSQLの中で最も易しく、そして最も難しい構文であると言えます。実際に、Oracle Database SQL言語リファレンスを見ると、SELECT文には非常にたくさんの構文パターンやオプションがあることが分かります。
データを格納する表を作ったりするときに使う言語を、DDL(Data Definition Language:データ定義言語)と呼びます。DDLには、表などのオブジェクトの作成に使うCREATE、オブジェクトの削除に使うDROP、オブジェクトの定義内容を変更するALTER、ユーザー権限を付与するときに使うGRANT、ユーザー権限の削除に使うREVOKEなどがあります。
DML、DDLのほかに、「トランザクション」を制御するためのCOMMITとROLLBACKもあります。トランザクションについては、この連載で後ほど解説します。
この連載で使用するOracle Databaseには、SQLを入力、実行するためのツールが3つあります。どのツールも、Oracle Databaseをインストールすれば使えるようになります。
1つ目は、コマンドラインでSQLの入力を受け付け、実行結果もコマンドラインに表示する「SQL*Plus」です(図2)。データの操作だけでなく、ユーザー権限の制御など、管理作業にも利用できる点が特長です。
2つ目は、パソコンにインストールして使用するデスクトップアプリケーションである「Oracle SQL Developer」です(図3)。GUIアプリケーションになっており、SQLの入力欄も分かりやすく、実行結果もきれいな表の形式で表示します。データベースのデータ全体をまとめてインポート/エクスポートする機能も持っているほか、Oracle Database以外のRDBMSに接続してデータを移行させる機能も備えています。
3つ目は、Webブラウザで使用するWebアプリケーション「Oracle Application Express(APEX)」です(図4)。APEXが備える機能の1つであるSQLワークショップを使用すると、WebブラウザからSQLを入力して、RDBMSに実行させることができます。
以上に挙げた3種類のツールを利用するには、まずツールの接続先となるOracle Databaseが必要です。そして、クライアントとなる皆さんのPCにSQL*PlusやSQL Developerをインストールしなければなりません。皆さんが勉強用に使えるOracle Database環境をお持ちならよいのですが、「試したいけれど、環境がなくて……」とお困りの方もいらっしゃるでしょう。
そこで、この連載では、オラクルが提供する「apex.oracle.com」というWebサイトを利用することにします。このサイトは、Oracle DatabaseとAPEXをセットでインストールしたもので、Oracle DatabaseとAPEXの機能を試すためのサイトです。上記のURLにアクセスすればAPEXでOracle Databaseを操作できます。サンプルの表やデータも入っているので、ユーザー登録を済ませればすぐにSQLを試せます。インターネット上のサーバを利用するので、あなたのPCにソフトをインストールする必要はないのです。
SQLを身に付けるには、実際に入力し、実行し、結果を確認しながら勉強するのが最も良い方法です! 気軽に始めてみませんか?
次回(12/20公開)は、APEXを使うためのユーザー登録などの方法をご説明します。
リレーショナル・データベースを操作するときは、本文で説明したように「2次元の表」をイメージし、「行」と「列」で特定のデータを指定します。しかし、RDBの教科書などでは、表の形になっているデータを「関係」と呼びます。関係とは、ある条件を満たすデータの「集合」です。
関係はデータの集合なので、行や列の「順番」という考え方がなく、データをストレージ上のどこに保存したということは、意識する必要がありません。そのため、私たちはデータの物理的な場所をまったく気にせずに、正しいデータを取り出せるのです。
そしてSQLとは、データの集合、つまり「関係」を扱う言語です。SQLの特徴は、「処理」や「フロー」を考えるのではなく、必要なデータをフィルタするための条件を指定することです。そのため、ほかの言語に比べてシンプルで、初心者にとっても勉強しやすい言語であるとと言えるでしょう。
一方で、今までCやJavaなどのプログラミング言語を使ってきた方にとっては、「条件を指定する」という考え方になじめず、難しく感じるかもしれません。SQLを勉強するときは、今までに身に付けたプログラミング言語の考え方をいったん忘れて、まったく異なる種類の言語を学ぶ気持ちで勉強するとよいでしょう。
日本オラクル オラクルダイレクト所属。
須々木尚子(すすき なおこ)
オンラインセミナーの講師や、お客様への提案、案件の支援などを担当。著書に「Oracle SQLクイズ」(翔泳社)があります。
Copyright © ITmedia, Inc. All Rights Reserved.