mysql中insert into语句的6种写法(下)

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> insert  into  4a set sname=sname+1;

Query OK, 1 row affected (0.21 sec)

 

Insert into之前:

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 |

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

22 rows in set (0.11 sec)

 

 

Insert into之后:

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 |

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

23 rows in set (0.00 sec)

 

语法: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语句是一个插入性的语句,所以它的功能要么向指定的表插入数据

 

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

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

Query OK, 1 row affected (0.29 sec)

 

也许你看到这个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语句当然也不能用于将其他表的数据插入到原表中了。

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

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

Query OK, 1 row affected (0.29 sec)

 

mysql> insert  into  4a set sname=sname+1;

Query OK, 1 row affected (0.21 sec)

 

Insert into之前:

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 |

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

22 rows in set (0.11 sec)

 

 

Insert into之后:

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 |

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

23 rows in set (0.00 sec)

 

语法: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语句是一个插入性的语句,所以它的功能要么向指定的表插入数据

 

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

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

Query OK, 1 row affected (0.29 sec)

 

也许你看到这个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语句当然也不能用于将其他表的数据插入到原表中了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值