视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
几种数据库复制表的方式总结
2020-11-09 07:48:03 责编:小采
文档

下面是几种数据库新建一个与存在的表结构相同的表的方法: DB2数据库: create table ___tablename___ as( select ___col___ from(select distinct ___col___ from ___tablename___ where ___conditions___ order by ___col___))definition only 表结构,类

下面是几种数据库新建一个与存在的表结构相同的表的方法:

DB2数据库:

create table ___tablename___ as(

select ___col___ from(select distinct ___col___ from ___tablename___ where ___conditions___ order by ___col___))definition only

表结构,类似于oracle 的create XX as 语句

插入数据:

insert into ___tablename___ select ___col___ from(select distinct ___col___ from ___tablename___ where ___conditions___ order by ___group___)
oracle 数据库:
create table ___tablename___ as
select ___col___ from (

select ___col___ from ___tablename___ where ___conditions___ order by ___col___)

hsql数据库:

v1.8 版本

select ___col___ into ___tablename___ from(select distinct ___col___ from ___tablename___ where ___conditions___ order by

v2.x版本

create table ___tablename___ as (

select ___col___ from (select distinct ___col___ from ___tablename___ where ___conditions___ order by ___group___))with data

说明:oracle中可以使用rownum 获得行数 DB2中:ROW_NUMBER()OVER(); hsql特殊,2.0版本前的没有rownum类似的函数,2.0开始支持rownum()函数

hsql遇到问题:

问题1:

hsqldb1.8版本没有类似 oracle rownum这样的函数

hsql1.8想要根据已知的表新建一张表

执行类似这样的sql语句

SELECT rownum() AS ID___COL___ INTO ___TABLENAME___ FROM(SELECT distinct ___COL___ FROM ___TABLENAME___ WHERE ___CONDITIONS___ ORDER BY ___col___)

报错,rownum()识别不了,想用返回的行数作为新表的id,但是hsqldb1.8中没有 类似rownum的函数

所以自己想了一个方法 ,将上面 的sql拆成两句:

select ___col___ into ___tablename___ from(select distinct ___col___ from ___tablename___ where ___conditions___ order by ___col___)

alter table ___tablename___ add column id integer generated by default as identity(start with 1)

分析一下就是建好表之后再增加id这个字段,并且设置为自增。

问题2:

连接查询的时候 select table.col as newCol.....

newCol与连接的表中字段名字相同的时候无法查处结果。

如果想利用查出的结果新建表的话,newCol可以先起一个临时的名字

SELECT table.col as newCol_temp INTO ___TABLENAME___ FROM ___TABLENAME___ WHERE ___CONDITIONS___ GROUP BY ___col___

建好表之后再将字段重命名自己需要的名字:

ALTER TABLE ___TABLENAME___ ALTER COLUMN ___COLNAME___ RENAME TO ___NEWCOLName___

未完。。


下载本文
显示全文
专题