バナー画像

SQL文の基本について、サンプルコードを交えて解説しています。

SQL文の基本はSELECT、INSERT、UPDATE、DELETE

SQL文とはデータベースを操作するためのコードです。この記事では、データベースを操作する基本のSQL文、SELECT、INSERT、UPDATE、DELETEについて紹介します。

【関連記事】
SQL文一覧 基本4大ステートメントのサンプルコード集

select文は、データの抽出

select文は指定したテーブルから、条件を指定してデータを抽出するためのSQL文です。以下は、userテーブルからage(年齢)順にデータを抽出する例です。

SELECT *
FROM user
ORDER BY age;

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    2 | 山田花子     |   22 |
|    5 | 鈴木三郎     |   22 |
|    1 | 山田太郎     |   25 |
|    3 | 佐藤一郎     |   33 |
|    4 | 伊藤次郎     |   44 |
+------+--------------+------+

【関連記事】
【初心者向け】SQLのデータ抽出処理!SELECT文の使い方を理解しよう! 

select文は、対象テーブル、抽出するカラムに、where句で抽出条件を指定することが可能です。条件指定の記述方法はupdateやdeleteでも流用可能です。

以下は、employees(社員)テーブルから、first_name(姓名の名)=Georgi、last_name(姓名の姓)=Facelloのデータを10件抽出する例です。

select * from employees
where first_name = 'Georgi' or last_name = 'Facello' limit 10;
 
+--------+------------+------------+------------+--------+------------+
| emp_no | birth_date | first_name | last_name  | gender | hire_date  |
+--------+------------+------------+------------+--------+------------+
|  10001 | 1953-09-02 | Georgi     | Facello    | M      | 1986-06-26 |
|  10327 | 1954-04-01 | Roded      | Facello    | M      | 1987-09-18 |
|  10909 | 1954-11-11 | Georgi     | Atchley    | M      | 1985-04-21 |
|  11029 | 1962-07-12 | Georgi     | Itzfeldt   | M      | 1992-12-27 |
|  11430 | 1957-01-23 | Georgi     | Klassen    | M      | 1996-02-27 |
|  12157 | 1960-03-30 | Georgi     | Barinka    | M      | 1985-06-04 |
|  12751 | 1964-07-06 | Nahum      | Facello    | M      | 1995-01-09 |
|  15220 | 1957-08-03 | Georgi     | Panienski  | F      | 1995-07-23 |
|  15346 | 1959-09-26 | Kirk       | Facello    | F      | 1991-12-07 |
|  15660 | 1956-01-13 | Georgi     | Hartvigsen | M      | 1994-10-13 |
+--------+------------+------------+------------+--------+------------+
10 rows in set (0.00 sec)

【関連記事】
SQLのwhere句で検索条件を指定 複数条件やあいまい検索、サブクエリ 

insert文は、データの挿入

データベースに新規にデータを挿入するにはinsert文を使います。

以下は、kakeiboテーブルにhimokuをfood、dateを2020-08-26、moneyを13000の値を指定して挿入する例です。

INSERT INTO kakeibo (himoku, date, money) VALUES ('food', '2020-08-26', 13000);

mydb=# SELECT * FROM kakeibo;
 himoku |    date    | money 
--------+------------+-------
 food   | 2020-08-26 | 13000
(1 row)

【関連記事】
SQLのインサート(INSERT)でデータを簡単に追加するやり方まとめ 

insert文とselect文を組み合わせ、別テーブルからselectした結果をinsertすることも可能です。

以下は、employees(社員テーブル)からemp_no(社員番号)=10001のデータを取得し、emp_noのみ3に置き換えたデータをemployeesテーブルに挿入する例です。

insert employees 
SELECT 
	3, 
	`birth_date`, 
	`first_name`, 
	`last_name`, 
	`gender`, 
	`hire_date` 
FROM 
	`employees` 
WHERE 
	emp_no = 10001

【関連記事】
SQL insert selectの構文 リモートへの簡易レプリケーションや独自拡張 

update文は、データの更新

update文はテーブルの特定の値を更新します。

以下のSQL文はup_tableテーブルのid=1のレコードのscoreの値を70に更新する例です。update文の前後でselect文を実行して、値が更新されたことを確認しています。

SELECT * FROM up_table;
 id |  name   | score 
----+---------+-------
  1 | Sasaki  |     0
  2 | Tanaka  |     0
  3 | Akaishi |     0
  4 | Minami  |     0
  5 | Kimura  |     0
(5 rows)

UPDATE up_table SET score = 70 WHERE id = 1;

SELECT * FROM up_table;
 id |  name   | score 
----+---------+-------
  2 | Tanaka  |     0
  3 | Akaishi |     0
  4 | Minami  |     0
  5 | Kimura  |     0
  1 | Sasaki  |    70
(5 rows)

【関連記事】
SQLでアップデートする方法|様々な条件付きでデータを更新するやり方も解説

update文では、複雑な更新条件を指定することも可能です。以下は、INNER JOINにより別テーブルと結合して条件指定をおこなった例です。

UPDATE sample_table_A
SET
     sample_table_A.medical_checkup = 'DONE'
FROM
     sample_table_A
INNER JOIN
     sample_table_B
ON
     sample_table_A.stuff_id = sample_table_B.stuff_id
AND
    sample_table_B.checkup_date IS NOT NULL
;
GO

(3 行処理されました)

SELECT * FROM sample_table_A;
GO
stuff_id    name                           medical_checkup
----------- ------------------------------ ---------------
          1 Alex                           YET
          2 Jonathan                       DONE
          3 Olivia                         YET
          4 Mia                            DONE
          5 George                         DONE

【関連記事】

【SQL】検索結果を基にした更新が行えるUPDATE JOIN句についてコードを踏まえて解説。 

delete文は、データの削除

delete文は指定した条件でデータの削除をおこないます。

以下の例は、userテーブルから、ageの値が20未満のデータを削除する例です。

DELETE FROM users WHERE age < 20;

【関連記事】
SQL DELETEで、データベース・テーブルの行を削除する方法 

高速にデータを削除するtruncateは、データ格納件数が多いテーブルを削除するのに便利です。deleteとの違いはtruncateは条件指定ができない点と、トランザクションログを生成しないためロールバックができない点です。

truncate table employees

【関連記事】
SQL truncate 高速データ削除 deleteやdropとの違いとDBMS間の差異 

まとめ

ポテパンダの一言メモ
  • SQL文とはデータベースを操作するためのコード
  • SQLの基本はSELECT、INSERT、UPDATE、DELETE
  • SELECT文で指定した条件文はUPDATEやDELETE文に流用が可能

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。