SQLでできることとは?簡単なSQLを作って動かす方法も解説!


SQLって何ができるんだろう・・・
概要だけじゃなく、具体的にできることを知りたいなぁ・・・

「SQLを学ぶことになったけど、具体的に何ができるかわからない…」と思っている方が多いのではないでしょうか。「出来る事のイメージがあれば、わかりやすいのに…」と思っている方もいるかもしれませんね。

こんにちは!フリーランスエンジニア兼テックライターのワキザカです。

この記事では、SQLでできること・簡単なサンプルの書き方を解説します!

基礎的なSQLでできることだけでなく、応用するとどんなことができるのかわかりやすく解説しているので、ぜひ最後まで見てみてくださいね。

この記事はこんな人のために書きました。

  • SQLでできることを知りたい人
  • SQLの基礎的な書き方やサンプルを知りたい人

目次

SQLとは

SQLは、データベースを操作するための言語です。

SQLを使うことで、大量のデータを瞬時に取得・更新ができます。アプリを開発するときは必ずと言っていいほど使う言語なので、使い方を覚えておくのがおすすめです。

SQLの基礎については以下で詳しく解説しているので、気になる方は見てみて下さいね!

次に、SQLでできることについて解説しますね!

SQLでできることとは?

SQLでできることは、大きく分けて以下の5つです。

SQLでできること

  • DDL
  • DML
  • トランザクション制御
  • ストアドプロシージャ
  • View

それぞれ解説しますね。

SQLでできること1:DDL

1つ目は、DDLです。

DDLとは、データベース・テーブルを定義するための文法です。データベース・テーブルの作成・更新・削除する時の書き方ですね。

具体的には、以下の3つがあります。

DDLの3つの種類

  • CREATE文:データベース・テーブルを作成
  • DROP文:データベース・テーブルの削除
  • ALTER文:データベース・テーブルの定義変更

特に、テーブルの作成・削除はよく使うので、使い方を覚えておくのがおすすめです。CREATE文、DROP文の使い方は以下で解説しているので、ぜひ見てみてくださいね!

SQLでできること2:DML

2つ目は、DMLです。

DMLとは、データを操作するための文法です。テーブルのデータ取得、更新、登録、削除するときの書き方ですね。

具体的には、以下の4つがあります。

DMLの4つの種類

  • SELECT文:データを取得
  • INSERT文:データを挿入
  • UPDATE文:データを更新
  • DELETE文:データを削除

一番最初に書くSQLはCREATE文のテーブル作成ですが、作成後はデータ操作が基本となります。

それぞれ以下で詳しく解説しているので、使い方を一通り見ておくのがおすすめです!

DMLの詳細記事一覧

SQLでできること3:トランザクション制御

3つ目は、トランザクション制御です。

UPDATE文やDELETE文などのデータ更新のSQLを実行してしまうと、データがいきなり変わってしまいます。大事なデータを一気に書き換えてしまう可能性もあるので、ちょっと怖いですよね。

そんな時に使えるのが、トランザクション制御です。SQLの実行結果を確認してから、結果を採用するか決めることができる方法です。


トランザクション制御のイメージ

「BEGIN;」を最初に実行することで、トランザクションが始まります。その後UPDATE文やDELETE文でSQLを実行しても、元々のデータは変更されません。

SELECT文で最終的なデータを確認し、結果が意図通りであれば「COMMIT;」で確定、意図と違う場合は「ROLLBACK;」でデータを戻すことができます。

データ更新するときは、「BEGIN;」から始める癖をつけるのがおすすめです!

SQLでできること4:ストアドプロシージャ

4つ目は、ストアドプロシージャです。

ストアドプロシージャでは、DMLのように単純にデータ操作するだけでなく、複雑な処理をSQLで書くことができます。

たとえば、以下のような処理を作れます。

ストアドプロシージャで作れる処理の例

  • 処理1:「人事テーブル」の男性の数を取得
  • 処理2:取得した男性の数を使って「給料テーブル」のデータを更新
  • 処理3:更新した結果を「ログテーブル」に登録

SELECT文で取得した結果によって、データ更新する/しないを判断してからデータ更新をしています。また、1つのテーブルだけでなく別のテーブルもデータ登録していますよね。

このように、単一の処理だけじゃなく、1セットで複数のSQLを実行する処理を作ることができます。

応用すれば、イベントスケジューラーと連携して、日時指定でストアドプロシージャを実行することもできます。夜間に重たいデータ更新・取得処理を自動で終わらせる処理も作れるので、大量にデータ更新が必要な月末・月初処理の負担を減らすこともできます。

DMLに慣れてきたら、ストアドプロシージャを覚えるのがおすすめです!

SQLでできること5:View

5つ目は、View(ビュー)です。

データベースのテーブルは、データの更新・検索がしやすい構造になっています。そのため、データを使いたい人視点で見ると、1つのテーブルだけではデータが見づらい時があります。

たとえば、次のような3つのテーブルがあったとします。


サンプルの3つのテーブル

このとき、以下のような情報を一覧データで見たい場合は、単一テーブルだとデータが見れないですよね。


複数テーブルのデータをまとめてみたいとき

データを取得するSELECT文でこれを書こうとすると、3つのテーブルを結合する必要があります。

このような場合は、上記のようなデータが取得できるViewを事前に作っておくことで、ViewをSELECT文で実行するだけで簡単にデータが取得できるようになります。見せたいデータのViewをつくっておくだけで、実行するSQLがシンプルになるので、覚えておくと便利です!

ストアドプロシージャと書き方が似ているので、こちらもDMLの書き方が慣れてきたタイミングで学んでいくのがおすすめです!

SQLで簡単なデータ操作をしてみよう

ここからは、SQLで簡単なテーブルを作ってデータ操作する方法について解説します。

流れは、以下の通りです。

SQLで簡単なテーブルを作ってデータ操作する流れ

  • SQLを実行する環境を用意する
  • テーブルを作成する
  • データを挿入して結果を表示する

環境構築方法

SQLを実行する方法は、大きく分けて以下の2つです。

SQLを実行する2つの方法

  • WEBサービスを使う
  • パソコンに環境を作る

paiza.ioを使えば、アカウントを作るだけでSQLを実行することができます。始めてSQLを書く人は、こちらがおすすめですね。

引用:paiza.io https://paiza.io/ja

ただ、アプリ開発ではパソコンにSQL実行環境を用意するのが一般的です。そのため、パソコンにMySQLのインストールする方法も覚えておくのがおすすめです!

MySQLのインストール方法は以下で詳しく解説しているので、パソコンに環境構築したい方は見てみてくださいね!

テーブルの作成

環境ができたら、まずテーブルを作成しましょう。

今回は、以下のユーザ一覧(users_list)テーブルを作る流れで解説します。


ユーザ一覧テーブル(users_list)

細かい書き方を解説する前に、上記テーブルを作るSQLを紹介しますね。

ユーザ一覧テーブルを作成するSQL:

-- ユーザ一覧テーブルを作成するCREATE文
create table users_list (
    id int(11)            -- ID
  , name varchar(50)      -- 名前
  , sex varchar(50)       -- 性別
  , age int(11)           -- 年齢
  , salary_grade int(11)  -- 等級
);

-- テーブルの構造を表示するクエリ
DESC users_list;

実行結果:

| Field | Type | Null | Key | Default | Extra | 
| --- | --- | --- | --- | --- | --- | 
| id | int(11) | YES |  | \N |  | 
| name | varchar(50) | YES |  | \N |  | 
| sex | varchar(50) | YES |  | \N |  | 
| age | int(11) | YES |  | \N |  | 
| salary_grade | int(11) | YES |  | \N |  |

基本的には「項目名 + 型名」をセットで定義することで、テーブルを作ることができます。

intやvarcharは型を表しています。intの場合は数値、varcharの場合は文字列ですね。

テーブルに指定できるほかの型や、CREATE文の詳細は以下で詳しく解説しています。もっと知りたい方は見てみてくださいね。

データの作成

テーブルができたら、データを挿入しましょう。

今回追加するデータは、以下の4つです。


ユーザ一覧テーブルに追加するデータ

こちらも先に、データ挿入 + テーブルのデータを確認するSQLを紹介します。

ユーザ一覧テーブルにデータ挿入・結果確認するSQL:

-- データを挿入するSQL
INSERT INTO users_list(id,name,sex,age,salary_grade) VALUES(1,'侍1','男',22,2);
INSERT INTO users_list(id,name,sex,age,salary_grade) VALUES(2,'侍2','男',32,5);
INSERT INTO users_list(id,name,sex,age,salary_grade) VALUES(3,'侍3','男',27,3);
INSERT INTO users_list(id,name,sex,age,salary_grade) VALUES(4,'侍4','女',28,4);

-- テーブルのデータを表示するSQL
SELECT *
FROM users_list

実行結果:

| id | name | sex | age | salary_grade | 
| ---: | --- | --- | ---: | ---: | 
| 1 | 侍1 | 男 | 22 | 2 | 
| 2 | 侍2 | 男 | 32 | 5 | 
| 3 | 侍3 | 男 | 27 | 3 | 
| 4 | 侍4 | 女 | 28 | 4 |

INSERT文を4つ実行し、データを4行分挿入しています。挿入後、SELECTにアスタリスク(*)、FROMにusers_listテーブルを指定して、データを全て表示しています。

このように、簡単にデータ登録・データ確認ができます。DMLについてもっと詳しく知りたい方は、以下を見てみてくださいね!

SOLを効率的に学ぶなら

何から学び始めればいいの?
難しそうだし、挫折したらやだな…。

ここまでSQLのできることについて解説してきましたが、上記のような悩みを持っている方も多いですよね。

そんな方には、弊社が運営するサブスク型のプログラミングスクール「SAMURAI TERAKOYAがおすすめです。

登録無料で、主に4つのサービスを提供させていただきます。

  • 現役エンジニアによる月1度の「マンツーマン指導」
  • 平均回答時間30分の「Q&Aサービス」
  • 作りながら学べる28種類の「教材」
  • 学習を記録&仲間と共有できる「学習ログ」

目的にあった教材を選べば、どなたでも効率よく学習できるほか、Q&Aサービスやマンツーマン指導を活用することで、挫折せずにSQLの習得が可能です。

SQLを効率的に学びたい人はもちろん、何から始めたらよいのかわからない方は、ぜひ「SAMURAI TERAKOYA」をご利用ください。

詳細はこちら

まとめ

今回は、SQLでできること・基礎的な書き方について言解説しました。

DMLの基礎的な書き方が理解出来たら、ストアドプロシージャの作成に挑戦してみるのがおすすめです。

簡単なSQLからでいいので、ぜひ実際に書いて実行してみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次