Database MariaDB/MySQL インフラ

[MySQL/MariaDB] ”insert”文でデータ挿入

2018年9月4日

こんにちは!シミダイ(@shimidai2100)です。

MySQL/MariaDBのデータ挿入SQL、「insert」文について紹介します。

insert」文は、「update」、「delete」と同様にDML(Data Manipulation Language )と呼ばれ、データを操作するSQL文になります。

基本構文:insert into ~ value

insert 文の基本構文は以下になります。

insert into <テーブル名> (
    <列名①>,
    <列名②>,
    <列名③>...
) values (
    <列①の値>,
    <列②の値>,
    <列③の値>...
)

下がサンプルのinsert文になります。

MariaDB [test001]> select *
    ->   from EMPLOYEE;
Empty set (0.00 sec)

MariaDB [test001]> insert into EMPLOYEE (
    ->     EMPNO,
    ->     NAME,
    ->     SALARY
    -> ) values (
    ->     '00001',
    ->     'TARO TANAKA',
    ->     300000
    -> );
Query OK, 1 row affected (0.00 sec)

MariaDB [test001]> commit;
Query OK, 0 rows affected (0.00 sec)

MariaDB [test001]> select *
    ->   from EMPLOYEE;
+-------+-------------+--------+
| EMPNO | NAME        | SALARY |
+-------+-------------+--------+
| 00001 | TARO TANAKA | 300000 |
+-------+-------------+--------+
1 row in set (0.00 sec)

またinsert文は全カラムを指定した場合、列名を省略して記載することができます。

insert into <テーブル名>
values (
    <列①の値>,
    <列②の値>,
    <列③の値>...
)

下が全カラムを指定した場合のサンプルinsert文になります。

insert into EMPLOYEE 
values (
    '00001',
    'TARO TANAKA',
    300000
);

表データをまとめて挿入:insert into ~ select

表データをまとめてinsertすることが出来るのが「insert into ~ select」で実施することができます。

insert into <テーブル名>
   (<列名>,
    <列名>,
    <列名>...)
select 
    <列名>,
    <列名>,
    <列名>...
  from <ソースのテーブル名>;

以下がサンプルになります。

列名を省略してもinsertすることも出来ます。

MariaDB [test001]> create table EMPLOYEE_BK (
    ->     EMPNO  varchar(10),
    ->     NAME   varchar(20),
    ->     SALARY int
    -> );
Query OK, 0 rows affected (0.00 sec)

MariaDB [test001]> select *
    ->   from EMPLOYEE;
+-------+---------------+--------+
| EMPNO | NAME          | SALARY |
+-------+---------------+--------+
| 00001 | TARO TANAKA   | 300000 |
| 00002 | HANAKO YAMADA | 800000 |
| 00003 | ICHIRO HANAKO | 500000 |
+-------+---------------+--------+
3 rows in set (0.00 sec)

MariaDB [test001]> insert into EMPLOYEE_BK(EMPNO, NAME, SALARY)
    -> select EMPNO, NAME, SALARY from EMPLOYEE;
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

MariaDB [test001]>
MariaDB [test001]> select *
    ->   from EMPLOYEE_BK;
+-------+---------------+--------+
| EMPNO | NAME          | SALARY |
+-------+---------------+--------+
| 00001 | TARO TANAKA   | 300000 |
| 00002 | HANAKO YAMADA | 800000 |
| 00003 | ICHIRO HANAKO | 500000 |
+-------+---------------+--------+
3 rows in set (0.00 sec)

MariaDB [test001]> insert into EMPLOYEE_BK
    -> select * from EMPLOYEE;
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

MariaDB [test001]>
MariaDB [test001]> select *
    ->   from EMPLOYEE_BK;
+-------+---------------+--------+
| EMPNO | NAME          | SALARY |
+-------+---------------+--------+
| 00001 | TARO TANAKA   | 300000 |
| 00002 | HANAKO YAMADA | 800000 |
| 00003 | ICHIRO HANAKO | 500000 |
| 00001 | TARO TANAKA   | 300000 |
| 00002 | HANAKO YAMADA | 800000 |
| 00003 | ICHIRO HANAKO | 500000 |
+-------+---------------+--------+
6 rows in set (0.00 sec)

 

関連記事

-Database, MariaDB/MySQL, インフラ

Copyright© shimidai2100 , 2020 All Rights Reserved.