MySQL中insert into语句的6种写法

insert into是mysql中最常用的插入语句,它有6种写法。

1向原表中某些字段中插入一条记录。

语法:insert into +表名(表中的字段,,)value(字段所对应的记录,,);

mysql> select * from joke;
+------+-----------+-------+------+
| gid  | name      | sex   | age  |
+------+-----------+-------+------+
|    3 | xiaowan2  | male  |   22 |
|    3 | xiaowan2  | male  |   22 |
|    3 | xiaowan2  | male  |   22 |
|    3 | xiaowan22 | 1male |   22 |
+------+-----------+-------+------+
4 rows in set (0.02 sec)

mysql> insert into joke (gid,name)value(0,"joker");
Query OK, 1 row affected (0.09 sec)

mysql> select * from joke;
+------+-----------+-------+------+
| gid  | name      | sex   | age  |
+------+-----------+-------+------+
|    3 | xiaowan2  | male  |   22 |
|    3 | xiaowan2  | male  |   22 |
|    3 | xiaowan2  | male  |   22 |
|    3 | xiaowan22 | 1male |   22 |
|    0 | joker     | NULL  | NULL |
+------+-----------+-------+------+
5 rows in set (0.00 sec)

2向原表的字段中插入多条记录的方法一。

语法:insert into +表名(表中的字段,,)values(字段所对应的记录,,)(字段所对应的记录);

mysql> insert into joke (gid,name)values(0,"joker"),(1,"jhj");
Query OK, 2 rows affected (0.14 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from joke;
+------+-----------+-------+------+
| gid  | name      | sex   | age  |
+------+-----------+-------+------+
|    3 | xiaowan2  | male  |   22 |
|    3 | xiaowan2  | male  |   22 |
|    3 | xiaowan2  | male  |   22 |
|    3 | xiaowan22 | 1male |   22 |
|    0 | joker     | NULL  | NULL |
|    0 | joker     | NULL  | NULL |
|    1 | jhj       | NULL  | NULL |
+------+-----------+-------+------+
7 rows in set (0.00 sec)

3向原表的字段中插入多条记录的方法二。

语法:insert into+表名 select v1,v2 union all

select v1,v2;

mysql> insert into book select "abc","bdd" union  all
    -> select "add","dsf";
Query OK, 2 rows affected (0.16 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from book;
+------+------+
| a    | b    |
+------+------+
| abc  | bdd  |
| add  | dsf  |
+------+------+
2 rows in set (0.00 sec)

如果插入的记录是数字的话要在数字的逗号后面加n:

mysql>  insert into Student select 1,N'刘一',18,N'男' union all
    ->  select 2,N'钱二',19,N'女';
Query OK, 2 rows affected (0.09 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from student;
+------+--------+------+------+
| s    | sname  | sage | ssex |
+------+--------+------+------+
|    1 | 刘一   |   18 | 男   |
|    2 | 钱二   |   19 | 女   |
|    3 | 张三   |   17 | 男   |
|    4 | 李四   |   18 | 女   |
|    5 | 王五   |   17 | 男   |
|    6 | 赵六   |   19 | 女   |
|    1 | 刘一   |   18 | 男   |
|    2 | 钱二   |   19 | 女   |
+------+--------+------+------+
8 rows in set (0.00 sec)

4复制旧表的信息到新表(假设两个表的表结构一样)

语法:insert into+新表+select语句;

mysql> insert into q1 select * from 4inall where sage=18;
Query OK, 7 rows affected (0.28 sec)
Records: 7  Duplicates: 0  Warnings: 0

mysql> select * from q1;
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |
| 钱二   |   19 | 叶平   |    1 | 语文   |    2 |    1 |    79 |
| 张三   |   17 | 叶平   |    1 | 语文   |    3 |    1 |    91 |
| 王五   |   17 | 叶平   |    1 | 语文   |    5 |    1 |    46 |
| 赵六   |   19 | 叶平   |    1 | 语文   |    6 |    1 |    35 |
| abc    | NULL | NULL   | NULL | NULL   | NULL | NULL |  NULL |
| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 刘一   |   18 | 杨艳   |    3 | 英语   |    1 |    3 |    67 |
| 刘一   |   18 | 周磊   |    4 | 物理   |    1 |    4 |    58 |
| 李四   |   18 | 贺高   |    2 | 数学   |    4 |    2 |    88 |
| 李四   |   18 | 杨艳   |    3 | 英语   |    4 |    3 |    90 |
| 李四   |   18 | 周磊   |    4 | 物理   |    4 |    4 |    93 |
+--------+------+--------+------+--------+------+------+-------+
13 rows in set (0.00 sec)

5复制旧表信息到新表(假设两个的表的表结构不一样)。

语法::insert into+新表+字段名+select语句;

mysql> insert into q1 (sname)select 4inall.s from 4inall where t=2;
Query OK, 5 rows affected (0.13 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from q1;
+--------+------+--------+------+--------+------+------+-------+
| sname  | sage | tname  | t    | cname  | s    | c    | score |
+--------+------+--------+------+--------+------+------+-------+
| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |
| 钱二   |   19 | 叶平   |    1 | 语文   |    2 |    1 |    79 |
| 张三   |   17 | 叶平   |    1 | 语文   |    3 |    1 |    91 |
| 王五   |   17 | 叶平   |    1 | 语文   |    5 |    1 |    46 |
| 赵六   |   19 | 叶平   |    1 | 语文   |    6 |    1 |    35 |
| abc    | NULL | NULL   | NULL | NULL   | NULL | NULL |  NULL |
| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |
| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |
| 刘一   |   18 | 杨艳   |    3 | 英语   |    1 |    3 |    67 |
| 刘一   |   18 | 周磊   |    4 | 物理   |    1 |    4 |    58 |
| 李四   |   18 | 贺高   |    2 | 数学   |    4 |    2 |    88 |
| 李四   |   18 | 杨艳   |    3 | 英语   |    4 |    3 |    90 |
| 李四   |   18 | 周磊   |    4 | 物理   |    4 |    4 |    93 |
| 1      | NULL | NULL   | NULL | NULL   | NULL | NULL |  NULL |
| 2      | NULL | NULL   | NULL | NULL   | NULL | NULL |  NULL |
| 3      | NULL | NULL   | NULL | NULL   | NULL | NULL |  NULL |
| 4      | NULL | NULL   | NULL | NULL   | NULL | NULL |  NULL |
| 6      | NULL | NULL   | NULL | NULL   | NULL | NULL |  NULL |
+--------+------+--------+------+--------+------+------+-------+
18 rows in set (0.00 sec)

6.向原本中插入数据(不能是其他表的数据):

语法:insert into 原表名 set 原表字段名=原表字段名(=“具体指”可有可无);

mysql> insert  into  4a set sname=sname="赵六";

Query OK, 1 row affected (0.29 sec)

 

mysql> select * from 4a;

+--------+------+--------+------+--------+------+------+-------+

| sname  | sage | tname  | t    | cname  | s    | c    | score |

+--------+------+--------+------+--------+------+------+-------+

| 刘一   |   18 | 叶平   |    1 | 语文   |    1 |    1 |    56 |

| 刘一   |   18 | 贺高   |    2 | 数学   |    1 |    2 |    78 |

| 刘一   |   18 | 杨艳   |    3 | 英语   |    1 |    3 |    67 |

| 刘一   |   18 | 周磊   |    4 | 物理   |    1 |    4 |    58 |

| 钱二   |   19 | 叶平   |    1 | 语文   |    2 |    1 |    79 |

| 钱二   |   19 | 贺高   |    2 | 数学   |    2 |    2 |    81 |

| 钱二   |   19 | 杨艳   |    3 | 英语   |    2 |    3 |    92 |

| 钱二   |   19 | 周磊   |    4 | 物理   |    2 |    4 |    68 |

| 张三   |   17 | 叶平   |    1 | 语文   |    3 |    1 |    91 |

| 张三   |   17 | 贺高   |    2 | 数学   |    3 |    2 |    47 |

| 张三   |   17 | 杨艳   |    3 | 英语   |    3 |    3 |    88 |

| 张三   |   17 | 周磊   |    4 | 物理   |    3 |    4 |    56 |

| 李四   |   18 | 贺高   |    2 | 数学   |    4 |    2 |    88 |

| 李四   |   18 | 杨艳   |    3 | 英语   |    4 |    3 |    90 |

| 李四   |   18 | 周磊   |    4 | 物理   |    4 |    4 |    93 |

| 王五   |   17 | 叶平   |    1 | 语文   |    5 |    1 |    46 |

| 王五   |   17 | 杨艳   |    3 | 英语   |    5 |    3 |    78 |

| 王五   |   17 | 周磊   |    4 | 物理   |    5 |    4 |    53 |

| 赵六   |   19 | 叶平   |    1 | 语文   |    6 |    1 |    35 |

| 赵六   |   19 | 贺高   |    2 | 数学   |    6 |    2 |    68 |

| 赵六   |   19 | 周磊   |    4 | 物理   |    6 |    4 |    71 | # 新增

| NULL   | NULL | NULL   | NULL | NULL   | NULL | NULL |    93 |

| NULL   | NULL | NULL   | NULL | NULL   | NULL | NULL |  NULL |

| NULL   | NULL | NULL   | NULL | NULL   | NULL | NULL |  NULL |

+--------+------+--------+------+--------+------+------+-------+

24 rows in set (0.00 sec)

通过以上实例我们可以看到insert into语句只能向原表中插入于其字段对应的数据,那么能不能通过insert into语句来把其他表的数据插入到原表中呢:

在MySQL中set方法:

ModifyStatement.Set Method 修改语句 set方法

Sets key and value. 设置键和值。

由于insert into语句是一个插入性的语句,所以它的功能要么向指定的表插入数据

也许你看到这个SQL语句是正确的,就觉得这样应该也可以:

mysql> mysql> insert into 4a set sname=4ainall.sname;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql> insert into 4a set sname=4ainall.sname' at line 1

或者这样也可以:

mysql> mysql> insert into 4a set sname="赵六";

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql> insert into 4a set sname="赵六"' at line 1

然后这样也是不可用:

mysql> insert into 4a select * from 4ainall set sname=4ainall.sname;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from 4ainall set sname=4ainall.sname' at line 1

可以看出由于select是作用于4inall这个表的,而set方法也只能在select语句中,这就直接导致set方法只能作用于4inall这个表,而无法作用于4a这个表。

但是如果我们不用select语句的话编译器又怎么会知道4inall表中的数据在哪里?

显然select是用于查的而set则是一个用于改的方法,两者无法结合在一起——insert into set语句当然也不能用于将其他表的数据插入到原表中了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351