1.复制表的结构和数据
- 复制表结构
CREATE【 TEMPORARY】 TABLE【 IF NOT EXISTS】表名 {LKE旧表名|(LlKE旧表名)}
从“旧表名”中复制一份相同的表结构,但不会复制表中保存的数据。
“{}”表示语法在使用时可以任选其中一种,“|”表示或的意思。 - 复制表数据
INSERT【INTO】数据表名1【(字段列表)】SELECT【(字段列表)】FROM数据表名2;
丛 sh_goods表中复制数据到 my_goods表中:
#选择数据库
#Use shop;
#复制表结构
Create Table mydb.my_goods Like shop.sh_goods;
#选择数据库
#Use shop;
#复制表数据
Insert Into mydb.my_goods Select*From shop.sh_goods;
以上主键冲突的问题,数据复制时可以指定除id主键外的任意字段完成:
Insert Into mydb.my_goods (category_id,name,keyward,price,content) Select category_id,name,keyward,price,content From sh_goods;
2.解决主键冲突
- 主键冲突更新
INSERT【INTO】数据表名【(字段列表)】{V ALUES|VALUE(字段列表)ON DUPLICATE KEY UPDATE字段名1=新值1【,字段名2=新值2】
#更新
Insert Into mydb.my_goods (id,name,content,keyword) values
(10,'橡皮','修正书写错误','文具')
On Duplicate Key Update name='橡皮',content='修正书写错误',keyword='文具';
- 解决主键冲突替换
REPLACE【INTO】数据表名【(字段列表)】{VALUES| VALUE}(值列表)【,(值列表)】…;
#替换
Replace Into mydb.my_goods (id,name,content,keyword) Values
(10,'皮','修正书写错误','文具');
不好意思了,这个乱了,将就看一下😘
REPLACE语句与 INSERT语句的使用类似,区别在于前者每执行一次就会发生两个操作(删除记录和插入记录)。
- 清空数据
TRUNCATE【 TABLE】表名
如果想知道TRUNCATE与DELETE删除有什么不同,可以观看我往期的说明。两者区别
- 去除重复记录
SELECT select 选项 字段列表 FROM 数据表
select选项:默认值为All,表示保存所有查询到的记录。
设置为 DISTINCT时,表示去除重复记录,只保留一条。
当查询记录的字段有多个时,必须所有字段的值完全相同才被认为是重复记录。
我们就拿之前的那个shop表做实列(后面基本都会使用到该表)shop表的参考代码
#不去重查询数据
Select keyword From shop.sh_goods;
#去重查询数据
Select Distinct keyword From shop.sh_goods;