sql中select into和insert select的用法小结
作者:积极向上的ACC
在工作中,我们经常需要备份表,今天来聊一下备份表用到的sql语句
一、复制表结构及数据
复制表结构及数据有三种方法,不同类型数据库所支持的语法有所不同,下面具体说
1.create table as select ...
这条语句适用于大多数关系型数据,也适用于数据仓库hive。下面我们用MySQL环境去执行(非MySQL有备注)。目标:将t_user的表结构及数据复制到t_user_2中。
先show create table t_user看下t_user的表结构
再查下t_user的数据
将t_user的表结构及数据复制到t_user_2,执行语句:
create table t_user_2 as select * from t_user;
执行完毕后查看表t_user_2
我们可以看到已经成功把t_user的结构及数据都复制到了t_user_2。
2.select into
SQL Server、Oracle、Greenplum支持select into语法,但MySQL不支持。目标:创建表t_user_3的同时,将t_user的全部数据插入到t_user_3,实现:
select * into t_user_3 from t_user;
注:此条语句是在Greenplum的环境下执行,MySQL不支持select into语法
3.create table like;insert select...;
这条语句可以分成为两部分:
(1) create table like;
复制表结构,实现:
create table t_user_4 like t_user;
将t_user的表结构复制到t_user_4。
(2) insert select;
插入数据,实现:
insert t_user_4 select * from t_user;
将t_user表的全部数据插入到t_user_4。
合并执行:
create table t_user_4 like t_user;insert t_user_4 select * from t_user;
效果:
二、仅复制表结构
下面来说两种复制表结构的方法。
1.create table like
目标:把t_user表结构复制到t_user_5,实现:
create table t_user_5 like t_user;
效果:
2.create table as
create table as也能单独复制表结构,例如将t_user的表结构复制到t_user_6
create table t_user_6 as select * from t_user where 1=2;
效果:
三、仅复制数据
无需复制表结构,仅复制表数据可以使用insert table select语句,在上面我们创建了表t_user_6,现在想把表t_user的数据全量写入t_user_6,执行sql:
insert t_user_6 select * from t_user;
效果如下,可以看到把t_user的数据都插入到了t_user_6
到此这篇关于sql中select into和insert select的用法小结的文章就介绍到这了,更多相关sql中select into和insert select内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- mssql insert into 和insert into select性能比较
- 解析MySQL中INSERT INTO SELECT的使用
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)
- postgresql insert into select无法使用并行查询的解决
- postgresql 13.1 insert into select并行查询的实现
- SQL Server之SELECT INTO 和 INSERT INTO SELECT案例详解
- 关于MySQL中“Insert into select“ 的死锁情况分析
- mysql使用insert into select插入查出的数据
- mysql中insert into...select语句优化方式
- MySQL insert into select 主键冲突解决方案