Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLの基礎についてまとめています。

SQLの基礎 大きく分けてDDLとDML、DCLがある

SQLには、DML、DDL、DCLの3種類があります。

DMLはselectやupdateなどのデータを操作するSQL、DDLは、データの構造を定義するcreate tableなどのSQL、DCLはデータ制御用のGRANTやROLL BACKなどのSQLです。

【関連記事】
SQLとはどういうもの? 独自拡張と標準SQLの大きな違いって、何? 

DDLのサンプルコード

DDLは、データベースの「枠」を作るためのSQLと言って良いでしょう。主にデータベース管理者が扱うSQLです。

以下は、MySQLでテーブルを作成するcreate tableを実行して、employees_copyというテーブルを作成した例です。descはテーブルの詳細を表示するコマンドです。

CREATE TABLE `employees_copy` (
  `emp_no` int(11) NOT NULL,
  `birth_date` date NOT NULL,
  `first_name` varchar(14) NOT NULL,
  `last_name` varchar(16) NOT NULL,
  `gender` enum('M','F') NOT NULL,
  `hire_date` date NOT NULL,
    PRIMARY KEY (emp_no)
);

Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> desc employees_copy;
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no     | int           | NO   | PRI | NULL    |       |
| birth_date | date          | NO   |     | NULL    |       |
| first_name | varchar(14)   | NO   |     | NULL    |       |
| last_name  | varchar(16)   | NO   |     | NULL    |       |
| gender     | enum('M','F') | NO   |     | NULL    |       |
| hire_date  | date          | NO   |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

【関連記事】
MySQLのcreate tableサンプルコード集 カラム定義を自動出力する方法は? 

基礎的な4種類のSQL(DML)

SQLと言えば、もっとも馴染みがあるのがselect、update、insert、deleteの4SQLでしょう。以下、MySQLで動作するサンプルコードです。

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

select文のサンプルコード

selectは、指定した条件でデータを取得するSQLです。下記のSQLは、employees(社員)テーブルから、birth_date(誕生日)が1960年1月1日以降のデータを10件取得します。

mysql> select * from employees where birth_date > '1960-01-01' limit 10;
+--------+------------+------------+-------------+--------+------------+
| emp_no | birth_date | first_name | last_name   | gender | hire_date  |
+--------+------------+------------+-------------+--------+------------+
|  10002 | 1964-06-02 | Bezalel    | Simmel      | F      | 1985-11-21 |
|  10010 | 1963-06-01 | Duangkaew  | Piveteau    | F      | 1989-08-24 |
|  10012 | 1960-10-04 | Patricio   | Bridgland   | M      | 1992-12-18 |
|  10013 | 1963-06-07 | Eberhardt  | Terkki      | M      | 1985-10-20 |
|  10016 | 1961-05-02 | Kazuhito   | Cappelletti | M      | 1995-01-27 |
|  10021 | 1960-02-20 | Ramzi      | Erde        | M      | 1988-02-10 |
|  10027 | 1962-07-10 | Divier     | Reistad     | F      | 1989-07-07 |
|  10028 | 1963-11-26 | Domenick   | Tempesti    | M      | 1991-10-22 |
|  10032 | 1960-08-09 | Jeong      | Reistad     | F      | 1990-06-20 |
|  10034 | 1962-12-29 | Bader      | Swan        | M      | 1988-09-21 |
+--------+------------+------------+-------------+--------+------------+
10 rows in set (0.01 sec)

insert文のサンプルコード

insertは、指定した値でレコードを挿入するSQLです。下記は、employees_copyテーブルに、指定した値でレコードを1件挿入し、select文で挿入したレコードを表示しています。

mysql> insert into employees_copy 
(emp_no, birth_date, first_name, last_name, gender, hire_date ) 
values ( '555555', '2008-10-10', 'Taro', 'Yamada', 'M', '2020-04-01' );
Query OK, 1 row affected (0.04 sec)

mysql> select * from employees_copy;
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
| 555555 | 2008-10-10 | Taro       | Yamada    | M      | 2020-04-01 |
+--------+------------+------------+-----------+--------+------------+
1 row in set (0.00 sec)

update文のサンプルコード

updateは、指定した値でレコードを更新するSQLです。下記は、employees_copyテーブルのemp_no=55555のレコードのlast_name(姓名の姓)を”Tanaka”に更新するSQLです。

更新後、現在のレコードをselect文で表示しています。

mysql> update employees_copy set last_name='Tanaka' where emp_no='555555';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from employees_copy;
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
| 555555 | 2008-10-10 | Taro       | Tanaka    | M      | 2020-04-01 |
+--------+------------+------------+-----------+--------+------------+
1 row in set (0.00 sec)

delete文のサンプルコード

deleteは指定した条件でレコードを削除するSQLです。

下記は、emp_no=555555のレコードを削除し、select文でデータが削除されたことを確認しています。

mysql> delete from employees_copy where emp_no='555555';
Query OK, 1 row affected (0.01 sec)

mysql> select * from employees_copy;
Empty set (0.00 sec)

まとめ

ポテパンダの一言メモ
  • SQLの基礎は、DDLとDML
  • DDLはcreate tableなど、データベースの枠を作成するSQL
  • DMLは、データ操作SQL。代表的なのは、select、insert、update、delete

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

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

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

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

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

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

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

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

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

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

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