在MySQL中,可使用CREATE TALBE. . .SELECT语句将查询结果转存到一个新表中。

创建新表

create table tabname(col1 type1 [not null] [primary key],col2

type2 [not null],..)

根据已有的表创建新表

create table tab_new like tab_old

(使用旧表创建新表)

create table tab_new as select col1,col2 . . . from tab_old

definition only

您可以在CREATE TABLE语句的末尾添加一个SELECT语句,在一个表的基础上创建表。

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

MySQL会对SELECT中的所有项创建新列。举例说明:

mysql> CREATE TABLE test (a INT NOT NULL

AUTO_INCREMENT,

-> PRIMARY KEY (a), KEY(b))

-> TYPE=MyISAM SELECT b,c FROM test2;

本语句用于创建含三个列(a, b,

c)的MyISAM表。注意,用SELECT语句创建的列附在表的右侧,而不是覆盖在表上。参考以下示例:

mysql> SELECT * FROM foo;

+---+

| n |

+---+

| 1 |

+---+

mysql> CREATE TABLE bar (m INT) SELECT n FROM foo;

Query OK, 1 row affected (0.02 sec)

Records: 1 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM bar;

+------+---+

| m | n

|

+------+---+

| NULL | 1 |

+------+---+

1 row in set (0.00 sec)

对应于表foo中的每一行,在表bar中插入一行,含有表foo中的值以及新列中的默认值。

在由CREATE TABLE...SELECT生成的表中,只在CREATE

TABLE部分中命名的列首先出现。在两个部分中都命名的列和只在SELECT部分中命名的列随后出现。也可以通过指定CREATE

TABLE部分中的列覆盖SELECT列中的数据类型。

如果在把数据复制到表中时出现错误,则表会自动被取消,不会被创建。

CREATE

TABLE...SELECT不会自动创建任何索引。索引需要专门创建,以便使语句的灵活性更强。如果您希望为已创建的表建立索引,您应在SELECT语句前指定索引。

mysql> CREATE TABLE bar (UNIQUE (n)) SELECT n FROM foo;

列的类型会发生部分转化。例如,AUTO_INCREAMENT属性不会被保留,VARCHAR列会变成CHAR列。

当使用CREATE...SELECT创建表时,在查询时一定要对功能调用和表达式起别名。如果不起别名,则CREATE语句会出现错误或者生成不符合需要的列名称。

CREATE TABLE artists_and_works

SELECT artist.name, COUNT(work.artist_id) AS number_of_works

FROM artist LEFT JOIN work ON artist.id = work.artist_id

GROUP BY artist.id;

您也可以明确地为一个已生成的列指定类型:

CREATE TABLE foo (a TINYINT NOT NULL) SELECT b+1 AS a FROM

bar;

根据其它表的定义(包括在原表中定义的所有的列属性和索引),使用LIKE创建一个空表:

CREATE TABLE new_tbl LIKE orig_tbl;

mysql select table_MySQL中的CREATE TABLE……SELECT语句相关推荐

  1. MYSQL:Error Code: 1786 Statement violates GTID consistency: CREATE TABLE ... SELECT.

    这是因为在5.6及以上的版本内,开启了 enforce_gtid_consistency=true 功能导致的,MySQL官方解释说当启用 enforce_gtid_consistency 功能的时候 ...

  2. mysql create table as select from_MySQL不能用create table as select 的原因

    1.新表不会自动创建创建和原表相同的索引. 2.一个事务中混合了事务和非事务语句.它会提交当前和未完成的事务. 例如,该例子中,第2个update未执行成功,会导致第1个update回滚,但是其中的C ...

  3. Statement violates GTID consistency: CREATE TABLE ... SELECT.

    1.情况描述 在执行sql:create table table_a_copy  as select * from table_a 时,发现sql执行后,并未生成新的表,而是提示Statement v ...

  4. 【数据分析师自学系列-MySQL】创建新表create table、create table as、create table like的区别

    [数据分析师自学系列-MySQL]创建新表create table.create table as.create table like的区别 1.create table:基本创建新表方式 格式如下: ...

  5. mysql的sql_quote_show_create与SHOW CREATE TABLE命令介绍

    来源:http://blog.sina.com.cn/s/blog_86d9fde701014dm1.html 技术背景: 刚开始学习MySQL时候,有时偷懒,会用SHOW CREATE TABLE ...

  6. mysql create table select from_mysql create table select复制表结构和数据实例讲解

    比如现在有一张表,我们要将该表复制一份,以备以后使用,那么如何使用mysql语句来实现呢?其实我们可以直接使用create ... select ... from语句来实现,具体实现方法请看下面实例. ...

  7. MySQL创建数据表(CREATE TABLE语句)

    在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...

  8. ireport修改jrxml中的sql语句_SQL中的create table与insert into语句

    学习交流,欢迎留言~~ 今天学习SQL的时候遇到了个小疑问,创建数据表肯定是用create table语句的,但是为什么后面总是跟随着insert into呢? 身为一个不弄白不舒服斯基,走起~~~ ...

  9. MySQL错误:Can't create table‘..’ (errno:150)解决方案

    场景 含有学生表s(sno,sname,sage).课程表c(cno,cname) 选课表(sc)创建时,设置(sno,cno)为主键.sno和cno为外键 drop table if exists ...

最新文章

  1. 数据库查询近七天的数据
  2. T4((Text Template Transformation Toolkit))模版引擎之基础入门 C#中文本模板(.tt)的应用...
  3. Java 程序员必须掌握的 8 道数据结构面试题,你会几道
  4. python去掉列表中的单引号_Python:如何从列表项中删除单引号(Python: How to remove single quotes from list item)...
  5. php注册机制,php自动注册登录验证机制实现代码_PHP教程
  6. 天玥运维安全网关_智慧灯杆网关
  7. IDEA项目目录里下找不到src,但是src确实存在的的解决方案
  8. 解除webservice上下传文件大小限制
  9. 汽车质量管理体系IATF 16949和培训及相关的标准(主要是电动汽车)
  10. 园林景观cad_景观广场及绿化设计(附CAD平面图)
  11. 动态代理(JDK动态代理)初步详解
  12. 计算机中的根源证书是什么,安全证书过期怎么办
  13. 儿童python编程入门-一款儿童编程入门的理想工具——PythonTurtle
  14. c语言二进制转十进制大小,c语言二进制转换成十进制的方法
  15. h5 js 打开微信客户端
  16. 世硕电子厂的故事!!测!
  17. CNCERT在FIRST会议关于国内PC被攻击的数据
  18. 集成讯飞离线语音合成SDK报:“ 未经授权的语音应用.(错误码:11210)“ 问题解决
  19. 2019年最新出搜索引擎蜘蛛网页爬虫大全
  20. HBase Shell 命令

热门文章

  1. hadoop可以解决什么问题_牙齿贴面可以解决哪些问题?
  2. Neural Network 神经网络
  3. 纪念一个曾经的软件产品(六)——快捷方式,联系人,任务管理器
  4. Java面试题:TCP三次握手如果失败会发生什么?
  5. python实现AC自动机
  6. python爬取淘宝商品沙发_python实现人人自动回复、抢沙发功能
  7. 7 判别式模型--机器学习基础理论入门
  8. ASP.NET入门教程(五)发表文章
  9. 【openGauss实战1】openGauss基于CentOS8的部署
  10. linux删除文件询问是否删除命令,Linux删除文件的命令?