SQLの書き方を覚えたいが難しい……
SQLとデータベースをマスターしたい!
SQLの書き方を学ぼうと思っても、入門書や入門サイトは情報量が多いですよね。「もっと簡単に学べる方法はないかなぁ……」と思っている方もいるのではないでしょうか。
この記事では、SQLを簡単に使いこなすための基礎・書き方について解説します!
基礎だけでなく応用スキルの習得方法も最後にまとめているので、ぜひ最後まで読んでください。
SQLの書き方を覚えるには?
SQLの書き方を覚えるには、基礎が重要です。ただ、基礎と言っても範囲が広いので、「どこまでが基礎?」と思っている方も多いのではないでしょうか。そこでまず、基礎で覚えておくべき知識について簡単に解説します。
基礎で覚えておくべき知識は次の通りです。
- SQLはデータベース言語である
- SQLで使うCRUDとは?
- SQLの動きは?Excelでイメージしよう!
- データベースの基礎
それぞれ詳しく解説しますね。
SQLはデータベース言語である
SQLはプログラミング言語ではなく、データベース言語です。データベース言語とは、データの定義、操作、アクセス制御など、データベースを操作するための言語です。
SQLも構文などのルールが決まっていて、1文字誤っただけでエラーになってしまいます。
SQLを習得すれば、データの一括操作や、大量のデータから必要なデータの抽出ができるようになります。しっかりと覚えておきましょう。
SQLで使うCRUDとは?
SQL文は、その用途によって、主に定義(Definition)、操作(Manipulatuion)、アクセス制御(Control)の3種類に分けられます。
ここでは、データの操作(Manipulation)に関係する操作を説明します。操作に関するSQL文は「DML」と呼ばれています。
データ操作には、4つの基本操作として「生成(Create)」、「読取り(Read)」、「更新(Updata)」、「削除(Delete)」があり、それぞれの頭文字をとって「CRUD」と呼ばれることがあります。
それぞれの操作とSQL文の関係は次の表のとおりです。
SQLの動きは?Excelでイメージしよう!
データ操作の基本である4種類のSQL文はわかったものの、実際にどう動くのかイメージしにくいという方も多いと思います。
例えば、SELECT文については、Excelのフィルタをイメージすればわかりやすいでしょう。
Excelのシートにたくさんの行が存在するとき、「フィルタ機能」で条件を指定すると、その条件に合致した行のみが選択されます。これがSELECT文と同じような処理です。
また、フィルタ機能で条件に合致した行のデータを更新する処理はSQL文のUPDATE、削除はDELETEと同じような処理です。さらに、Excelで新しい行を追加するのはSQL文でいうINSERTと考えるとわかりやすいと思います。
データベースの基礎
前述のとおり、SQLはデータベースを操作する言語です。そのため、データベースとはなんぞや?というところをまずは覚えておかなければなりません。
データベースとは、大量のデータを検索・更新できる仕組みです。「ORACLE」や「SQL Server」、オープンソースソフトウェア(OSS)の「MySQL」や「PostgreSQL」などのソフトウェアが有名です。システムがデータを扱うときにはほぼ使われているので、覚えておくのがおすすめです。
データベースは、下の図のような構造でできています。
<データベース構造のイメージ>
データベースの中に複数のテーブルがあり、テーブルには1行(1レコード)ずつデータがあります。
SQLでの作業は、次の流れで進めます。
- データベースの環境を作る
- テーブルを作る
- SQLでデータを取得する
【SQLの基礎】SELECT文の書き方
まず、SELECT文の基礎的な書き方について解説しますね。
SELECT文の書き方は、以下のとおりです。
図:SELECT文の書き方
SELECTの直後は、結果に表示する列名を指定します。
ここにアスタリスク(*)を入れると、全てを表示することが可能です。FROMはテーブル名で、WHEREは条件式です。条件がないときはWHEREが不要になりますが、セットで覚えておくのがおすすめです!
SELECT文のサンプル
下記のテーブルを参考に、SELECT文のサンプルを見てみましょう。
SQLで、すべての行のデータを取得するときは下のとおりに記述します。
— SELECT文でレコード検索
SELECT * FROM users_list;
年齢が25歳以上のユーザーのIDと名前を取得するときはこのようになります。
— SELECT文でレコード検索
SELECT
id,
name
FROM
users_list
WHERE
age >= 25;
【SQLの基礎】INSERT文の書き方
INSERT文の書き方は、下記のとおりです。
図:INSERT文の書き方
INSERT INTO句の後にテーブル名と新規登録する行の列名を指定します。ここで指定されなかった列については何も登録されていないことを示す「NULL」が設定されます。
また、列名の部分は省略可能です。その後、VALUESという定型の語句に続いて、新規登録する行の値を指定します。
INSERT INTO句で指定した列名の数とVALUES句で指定した値の数は一致していないとエラーになるので注意しましょう。
INSERT文のサンプル
つづいてINSERT文のサンプルをご紹介します。SELECTで使用したusers_listテーブルにデータを登録してみましょう。
列名をすべて指定した場合のINSERT文のサンプルです。
— INSERT文でレコード挿入(カラム全指定)
INSERT
INTO users_list(id, name, age, created_at, updated_at)
VALUES (1, '侍1', 18, '2019/7/1', '2019/7/26');
列名を省略した場合のINSERT文のサンプルです。
— INSERT文でレコード挿入(カラム省略)
INSERT
INTO users_list
VALUES (1, '侍1', 18, '2019/7/1', '2019/7/26');
なお、INSERT文の使い方を詳しく知りたい方は、あわせて以下の記事をご覧ください。
【SQLの基礎】UPDATE文の書き方
UPDATE文の書き方は、以下のとおりです。
図:UPDATE文の書き方
UPDATE句の次にテーブル名、SET句の次に列名とその列に設定する値を指定します。列名および値は複数指定できます。
条件に一致するものを一括で更新する場合はWHERE句を使いましょう。なお、WHERE句は省略可能です。省略した場合はすべての行が更新対象となるので注意してください。
UPDATE文のサンプル
つづいてUPDATE文のサンプルをご紹介します。SELECTで使用したusers_listテーブルにデータを更新してみましょう。
— idが5の行の名前を「侍5 New」、年齢を「29」に更新する
UPDATE users_list
SET
name = '侍5 New'
, age = 29
WHERE
id = 5;
UPDATE文については、こちらの記事でも詳しく説明していますので、ぜひお読みください。
【SQLの基礎】DELETE文の書き方
DELETE文の書き方は、以下のとおりです。
図:DELETE文の書き方
DELETE FROM句の後にテーブル名を指定します。WHERE句を指定すると、条件に合致したものを一致で削除できます。
UPDATE文と同様WHERE句は省略可能です。WHERE句を指定しないと、すべての行が削除されることになります。こちらも必要なデータを誤って削除しないように注意しましょう。
DELETE文のサンプル
DELETE文のサンプルは下記のとおりです。
— idが5の行を削除する
DELETE
FROM
users_list
WHERE
id = 5;
SQLのプログラミングで、DELETEを使ってデータを削除する方法について、以下の記事で詳しく解説しています。
【SQLの基礎】ASの書き方
続いて、SQL文で利用する「AS」の書き方をご説明します。
AS句を使用すると、テーブル名や列名に別の名前を指定することができます。
まずはサンプルを見てみましょう。
— SELECT文でレコード検索
SELECT
id AS ID,
name AS 名前
FROM
users_list
WHERE
age >= 25;
users_listの列名は「id」や「name」ですが、AS句を使用することで「ID」や「名前」というようにテーブルに存在しない名前で結果を取得できます。
AS句は複数のテーブルを一気に取得する場合、同名の行名などを区別するために使用します。
【SQLの基礎】ORDER BYの書き方
続いて、ORDER BYの書き方をご説明します。
ORDER BYを使用するとSELECTの結果を並び替えることが可能です。ORDER BY句は複数の並べ替え条件を指定できます。
ORDER BY句を指定しない場合、SELECT結果が不定となります。複数の結果を取得する可能性がある場合は、ORDER BYを指定する習慣をつけておきましょう。
下記はSELECT結果をidの昇順で取得するサンプルです。
— SELECTした結果をidの昇順で取得
SELECT
id,
name
FROM
users_list
ORDER BY
id ASC;
下記はSELECT結果を、ageの降順、idの昇順で取得するサンプルです。
— SELECTした結果をageの降順、idの昇順で取得
SELECT
id,
name
FROM
users_list
ORDER BY
age DESC, id ASC;
「*」「;」「’」などの記号の意味とは?
SQLではいくつかの記号を使用します。
SQL文において「(アスタリスク)」は、「すべて」という意味を持ちます。SELECT文のカラムに「」を指定すると、すべての行を取得するという意味になります。なお、「*」はさまざまなOSやソフトウェアでも同様の使われ方をすることがあります。
次に、「;(セミコロン)」は、SQL一文の終わりを意味します。「;」を指定しないとエラーになることもありますので、必ずSQL文の最後につけるようにしましょう。
最後は「’(シングルコーテーション)」です。SQLのINSERT文やUPDATE文に指定する値、またはWHERE句の条件に指定する値は、型を意識する必要があります。文字列や日付型を指定する場合は、対象の値を「’」で指定する必要があります。
サンプルをご紹介しておきます。
— SELECT文でレコード検索
SELECT
id,
name
FROM
users_list;
WHERE
— 年齢は数値なので「’」不要。名前は文字列なので値を「’」で囲む
age >= 25 OR name = ‘侍1’
データベースの種類
ここで、あらためてデータベースについてご紹介しておきます。データベースは、いくつか種類があります。
<データベースの種類の例>
- MySQL
- Oracle
- SQL Server
- PostgreSQL
「どれを選べばいいの?」と思う方もいるかもしれませんが、初めてデータベースを使うならMySQLがおすすめです。
無料で使えますし、環境構築もとても簡単です。また、ネットに情報も多く、困った時でも調べれば解決しやすいです。
データベースの種類についてはこちらでも詳しく解説しています。もっと詳しく知りたい方は、見てみてくださいね。
SQLの基礎
次に、SQLのDDLとDMLついて説明します。
DDL
DDLは、データ構造の定義(Definition)に用いられます。以下のような書き方があります。
DDLのSQL文の例
- CREATE文:データベース・テーブルなどの作成
- ALTER文:テーブル内の定義変更
- DROP文:データベース・テーブルの削除
- ほかにも、データを全削除するTRUNCATE文などがありますが、ここでは省略しています。
DML
DMLは、テーブルのレコードを操作するための文法です。
DMLのSQL文の例
- SELECT文:レコード検索
- INSERT文:レコード挿入
- UPDATE文:レコード更新
- DELETE文:レコード削除
この記事でご紹介したものはDMLに属するSQL文です。始めてSQLを書くなら、「テーブルをCREATE文で作成 → INSERT文でレコードを挿入」が最初のステップですね。レコード挿入ができたら、SELECT文でレコードを検索して表示したり、UPDATE文でレコードを更新したりできます。
SQLを簡単に実行する方法とは?
次に、SQLを実行する環境について解説します。
SQLを実行する方法は、下記の2つです。
- Web版実行環境「paiza.io」を使う
- パソコンに開発環境をセットアップする
「paiza.io」を使えば、簡単にSQL実行環境を作れます。アカウント登録だけなので、すぐにSQLを試したい方におすすめです。
ただ、アプリ開発するときは、パソコンにセットアップしたデータベース環境を使うのが大半です。そのため、MySQLのインストールをしておくことがおすすめです。
MySQLのインストール方法は、以下で詳しく解説しています。インストールしたい方はぜひ見てみてくださいね。
SQLでエラーが発生した場合の対処法とは?
SQLを実行した際に、構文として誤りがある場合、またはデータベースが使用できない場合などにエラーが発生する場合があります。
エラーが発生した場合も、諦めずに原因を調査し、解決していきましょう。大抵の場合、エラーが発生した場合は、エラーコードといわれるものが表示されます。
このエラーコードは、SQL Server、MySQLなどといったご使用のデータベースによって異なります。
代表的なデータベースのエラーコード一覧をご紹介しておきますので、困ったらそれぞれのエラーコード一覧を確認するようにしましょう。
- SQL Server 2019 データベース エンジンのエラー
- MySQL 5.6 サーバーのエラーコードおよびメッセージ
- Oracle Database Release 12.2 エラー・メッセージ
まとめ
SQLを最初から完全に理解するのは困難ですが、DDL・DMLの簡単なところから手順を踏んで覚えていけばOKです。
今回解説したCREATE文、INSERT文、SELECT文を自分で書いて実行できるようになれば、あとは1つずつ学んでいくだけです。ぜひ、簡単なSQLから始めてみてくださいね。
この記事のおさらい
SQLとは、リレーショナルデータベースに対して、参照、登録、更新、削除などの操作をするために使用するデータベース言語です。
答:SQLの書き方には、参照、登録、更新、削除などといった命令の種類によって記述ルールがあります。それぞれ定型の部分と範囲指定や条件設定などにより変動する部分があるので、基本的な記述ルールから覚えましょう。
SQLでエラーが発生したとき、まずはエラーコードを確認しましょう。エラーコードは使用しているデータベース(MySQL、Oracle、SQL Server、PostgreSQLなど)によって異なります。各データベースのエラーコード一覧等を参照し、エラーの原因や対処方法などを調査して、解決へ導きましょう。