sql中select into和insert select的用法小结
在工作中,我们经常需要备份表,今天来聊一下备份表用到的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内容请搜索编程客栈(www.lsjlt.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网(www.lsjlt.com)!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341