在工作中,我们经常需要备份表,今天来聊一下备份表用到的sql语句
复制表结构及数据有三种方法,不同类型数据库所支持的语法有所不同,下面具体说
这条语句适用于大多数关系型数据,也适用于数据仓库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。
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语法
这条语句可以分成为两部分:
复制表结构,实现:
create table t_user_4 like t_user;
将t_user的表结构复制到t_user_4。
插入数据,实现:
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;
效果:
下面来说两种复制表结构的方法。
目标:把t_user表结构复制到t_user_5,实现:
create table t_user_5 like t_user;
效果:
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内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!