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)
MariaDB & MySQL全機能バイブルposted with ヨメレバ
鈴木啓修/山田奈緒子 技術評論社 2015年01月