写点什么

临时表的使用

用户头像
在即
关注
发布于: 2021 年 03 月 26 日
临时表的使用

临时表:是一种仅在当前会话中可见,并在当前会话关闭时自动删除的数据表。

作用:主要用于临时存储数据。

语法:只需在 CREATE 与 TABLE 关键中间添加 TEMPORARY 即可。

方式 1:创建临时表

CREATE TEMPORARY TABLE mydb.tmp_table1 (id int);

方式 2:创建临时表

CREATE TEMPORARY TABLE mydb.tmptable2 SELECT id,name FROM shop.shgoods;

建临时表时指定的数据库可以是 MySQL 服务器中存在的数据库也可以是不存在的数据库。

若数据库不存在,操作临时表时必须使用“数据库.临时表名”指定临时表所在的数据库。

临时表中数据的操作与普通表相同,都可以进行 SELECT、INSERT、UPDATE 和 DELETE 操作。

SHOW TABLES 不能查看指定数据库下有哪些临时表.

临时表的表名必须使用 ALTER TABLE 修改,而不能使用 RENAME TABLE…TO 修改。


提出问题:向一个表 插入数据时,如何解决主键冲突的问题?

具体示例:mydb.my_goods 表经过数据复制以后,再插入编号为 20 的商品信息(橡皮,文具类,用于修正书写错误)会发生主键冲突。

mysql> INSERT INTO mydb.my_goods(id, name, content, keyword)

    -> VALUES (20, '橡皮', '修正书写错误', '文具');

ERROR 1062 (23000): Duplicate entry '20' for key 'PRIMARY'

当插入数据的过程中若发生主键冲突,则插入数据操作利用更新的方式实现。

INSERT [INTO] 数据表名 [(字段列表)] {VALUES | VALUE} (字段列表)

ON DUPLICATE KEY UPDATE 字段名 1 = 新值 1[,字段名 2 = 新值 2] …;

方式一:主键冲突更新

mysql> INSERT INTO mydb.my_goods (id, name, content, keyword)

    -> VALUES (20, '橡皮', '修正书写错误', '文具')

    -> ON DUPLICATE KEY UPDATE name = '橡皮', content = '修正书写错误',

    -> keyword = '文具';

Query OK, 2 rows affected (0.00 sec)

mysql> SELECT name, content, keyword FROM mydb.my_goods WHERE id = 20;

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

| name | content    | keyword |

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

| 橡皮 | 修正书写错误| 文具 |

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

1 row in set (0.00 sec)

当插入数据的过程中若发生主键冲突,则删除此条记录,并重新插入。

REPLACE [INTO] 数据表名 [(字段列表)]

{VALUES | VALUE} (值列表) [, (值列表)] …;


发布于: 2021 年 03 月 26 日阅读数: 10
用户头像

在即

关注

还未添加个人签名 2021.02.27 加入

还未添加个人简介

评论

发布
暂无评论
临时表的使用