プログラミングを始めたばかりの方はSQLという言葉を耳にしたことがない方もいらっしゃるかもしれません。また、もし聞いたことがあるとしても「データベース言語って難しそう…」と一歩引いてしまう気持ちがあるのではないでしょうか。
HTMLやCSSなどのマークアップ言語と比べると、概念的な要素が多く、目に見えないデータベースを操作しなければいけないため、なかなか身近に感じることができないという気持ちは分かります。
しかし、私たちが普段使用しているウェブサイトやアプリなどの多くがSQLを使用して動作しているということもまた事実。実はとても私たちに身近な存在なのです。SQLはプログラミングを学ぶ上で、理解しておくことが望ましい言語なのですね。
そこで今回の記事では、プログラミング初心者の方でもSQLがより身近に感じられるような解説を進めていきます。SQLを駆使して、WEBアプリケーションを思ったように開発できるようにしていきましょう。
- SQLの概要
- SQLでできること
- SQL文法の種類
SQLとは
ここまでSQLという言葉が何度も登場しましたが、まだSQLという言葉自体に馴染みがない方もいらっしゃるかもしれません。SQLを分かりやすく表現するとデータベースに格納されているデータを操作したり、定義したりすることができる言語のことです。
例えば、以下のようなシチュエーションでSQLを使用することがあります。
- 新しいブログ記事を書いたので投稿したい
- 近所のカフェを検索したい
- 以前ツイートしていた投稿を削除したい
- 途中まで書いていたブログの続きが書けたので更新したい
SQLという聞いたことがない単語になると身近に感じることができませんが、私たちがウェブサイトやアプリを利用する上でSQLという言語はとても身近な存在です。利用者としての目線で言えば上記の例で十分ですが、実際にプログラミングを行う際には、「ブログ投稿機能を作りたい」「サイトのおすすめ記事検索機能を実装したい」というようなシチュエーションが出てくるはずです。
このようなシチュエーションで使用できるのがSQL。そう考えると、プログラマーとしては必須の知識だということもできそうですね。
SQL文法の種類
先ほどSQLでできることについて、実際の例を挙げてご説明をしていきました。こちらでは、具体的にSQL文法の3種類である
- データ定義言語
- データ操作言語
- データ制御言語
について詳しく見ていくことにしましょう。
データ定義言語
データ定義言語とは、データベースの構造を定義することができる言語のことです。具体的にはデータを作成したり、削除したりする役割を持っているのがデータ定義言語です。もう少し具体例を挙げるとすれば
- スタッフ1人1人のデータをデータベースに登録する(データの作成)
- 退職したスタッフのデータをデータベースから削除する(データの削除)
などがデータ定義言語で行うことができることとなります。そんなデータ定義言語における代表的なSQLコマンドを見ていきましょう。
CREATEコマンド
SQLのCREATEコマンドは、テーブルやドメイン、インデックスなどを新たに作成するためのステートメントです。最もよく使用されているCREATEコマンドはTABLE CREATEコマンドではないでしょうか。
新たにテーブルを作成する際には、このTABLE CREATEコマンドを使用することとなりますので、まだ知らないという方は覚えておきましょう。
CREATE TABLE cars( id INT(8) AUTO_INCREMENT NOT NULL, color VARCHAR(30) NOT NULL , size INT(3) NOT NULL, PRIMARY KEY (id));
CREATE TABLE文は上記のようなコマンドを使うことで実行されます。少し説明をしておくと、colorカラム、sizeカラムを持ち、idが主キーとなるcarsテーブルを作成するためのSQLコマンドということになります。慣れるまでは複雑に見えるかもしれませんが、実際にはカラム名と主キー、テーブル名を指定しているだけです。そう思って見てみるととても簡単ではないでしょうか。
先ほどカラムという言葉が出てきましたが、このカラムというものはテーブルを情報ごとに分けるために設定されるものだと考えてください。
テーブルを1つの引き出しだと考えると、上着・ズボン・靴下などを別々に片付けるための引き出しだと考えるといいかもしれません。1つの引き出しに全ての衣類を入れていると整理がつきませんので、カラムを設定して、データをできるだけわかりやすく整頓しているわけです。
DROPコマンド
SQLのDELETEコマンドはデータベースからオブジェクトを削除するためのステートメントです。具体的には、先ほどCREATE TABLEで作成したテーブルを削除するときなどに用いられることが多いです。
必要ではなくなってしまったテーブルを削除したいという時には、SQLのDROPコマンドを使用することとなるはずです。具体的には以下のような使い方をすることになります。
DROP TABLE cars;
先ほどのCREATEコマンドと比べると、非常にわかりやすいSQLコマンドですね。テーブル削除の際にはDROP TABLEに続けて、テーブル名を指定してあげれば簡単に削除することが可能となっています。
データ操作言語
データ操作言語とは、データベースを操作して、テーブルレコードを挿入したり、テーブルの中のデータを検索したり、更新したり、消したりすることができる言語のことです。まとめれば作成・検索・更新・削除(CRUD)という役割を持っているのがデータ操作言語です。もう少し具体例を挙げるとすれば
- 図書館サイトで目当ての書籍情報について検索する(データの検索)
- 新しいブログ記事を書いたので投稿する(データの挿入)
などがデータ操作言語で行うことができることとなります。そんなデータ操作言語における代表的なSQLコマンドを見ていきましょう。
INSERTコマンド
SQLのINSERTコマンドはテーブルの中にデータを挿入するためのステートメントです。具体的には、先ほどCREATE TABLEで作成したテーブルに、具体的なデータを登録したいという時に使用することができるSQLコマンドですね。
INSERT INTO cars (color, number) VALUES ('red', 123456);
SQLのINSERTコマンドにおける基本構文は、「INSERT INTO {TABLE_NAME} (COLUMN_NAME1, COLUMN_NAME2, …) VALUES (VALUE1, VALUE2, …」というものです。
テーブル名とカラム名を指定し、そのあとにカラムに挿入したい具体的なデータをVALUESの後に付け加えていくという流れですね。
データ制御言語
データ制御言語とは、データベースへのアクセス制御を行うことができる言語のことです。まとめればデータベースに接続するユーザー権限を与えたり、逆に剥奪したりするという役割を持っているのがデータ制御言語です。そんなデータ制御言語における代表的なSQLコマンドを見ていきましょう。
GRANTコマンド
SQLのGRANTコマンドは、ユーザーにテーブル操作の権限を与えるためのステートメントです。例えば、あるユーザーにはテーブルレコードの挿入権限を与えたり、他のユーザーには削除する権限を与えたり、ということがGRANTコマンドによって可能となります。
GRANT UPDATE ON cars TO ‘Taro’;
これでTaroというユーザーにcarsテーブルの更新(UPDATE)をする権限が与えられました。全てのユーザーに作成・更新・削除などの権限を与えてしまうとリスクがありますので、このようにユーザーごとに権限を与えると良いですね。
まとめ
そこで今回の記事では、プログラミング初心者の方でもSQLがより身近に感じられるような解説を進めていきました。SQLを理解すれば、さらにWEBアプリケーションを思ったように開発できるようになるはずです。
今回の記事ではSQLの概要をご紹介していきましたので、次はさらに深くSQLコマンドなどについても学んでみてくださいね。
【関連記事】
▶︎【こんな使い方も?】SQL insertの使用方法を徹底的に解説
▶︎【意外と知らない?】SQL unionの使い方をわかりやすく説明
▶︎【意外と知らない?】SQL unionの使い方をわかりやすく説明
SQLはStructured Query Languageが省略されたものです。難しそうな英語ですが、日本語で「構造化照会言語」と言い表すことができます。
SQLでは、データベースが蓄積されるテーブルを操作することになるのですが、このテーブルがまさにデータを構造化するものであり、その構造化されたテーブルからデータを照会することができるものがSQLというわけですね。
なかなか目に見えにくい存在のため理解しにくい部分もあるのですが、SQLとはデータを構造化して照会できるものなのだと考えると、イメージがしやすいのではないでしょうか。