`
saybody
  • 浏览: 915318 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

mysql快速创建空表

阅读更多
今天有人问我用什么方法可以创建空表?
在MYSQL中有两种方法。
1、create table select ...
2、create table like ...
第一种很多人都知道,第二种却很少人用。
第一种有个缺点
1、第一种会取消掉原来表的有些定义。
手册上是这么讲的:
Some conversion of data types might occur. For example, the AUTO_INCREMENT attribute is not preserved, and VARCHAR columns can become CHAR columns.
不过我测试过,只会取消自增属性!(其他版本没有测试过!)



第二种就不会。
我们来看看例子:
mysql> create table t_old (id serial, content varchar(8000) not null,`desc` varchar(100) not null) engine innodb;
Query OK, 0 rows affected (0.01 sec)

mysql> show create table t_old;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t_old | CREATE TABLE `t_old` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`content` varchar(8000) NOT NULL,
`desc` varchar(100) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> create table t_select select * from t_old where 1 = 0;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

PS:如果想要保持一样的引擎,就加上。
这样写:create table t_select engine innodb select * from t_old where 1 = 0;

mysql> show create table t_select;
+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t_select | CREATE TABLE `t_select` (
`id` bigint(20) unsigned NOT NULL DEFAULT '0',
`content` varchar(8000) NOT NULL,
`desc` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> create table t_like like t_old;
Query OK, 0 rows affected (0.02 sec)

mysql> show create table t_like;
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t_like | CREATE TABLE `t_like` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`content` varchar(8000) NOT NULL,
`desc` varchar(100) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
分享到:
评论

相关推荐

    MySql练习4:创建学生表和成绩表索引并查看索引.zip

    - **主键索引(PRIMARY KEY)**:一个表只能有一个主键,它既是唯一索引也是非空索引。 - **普通索引(INDEX)**:最基础的索引,没有唯一性限制。 - **全文索引(FULLTEXT)**:适用于大文本字段,用于全文搜索...

    C语言调用mysql快速教程(精华篇).doc

    【C语言调用MySQL快速教程】是针对C程序员的一个实用指南,旨在教授如何高效地在C程序中连接、操作MySQL数据库。本教程分为几个关键部分,包括建立数据库连接、数据插入、更新和删除,以及查询结果的处理。 首先,...

    mysql创建表.pdf

    在MySQL中,创建表是数据库管理的基础操作,用于定义数据结构和字段属性。通过`CREATE TABLE`语句,我们可以构建新的表并设定相应的字段、数据类型、约束条件以及索引等。以下是一些关于创建MySQL表的关键知识点: ...

    MySQL表自动生成Java实体类

    `命令,获取表的列名、数据类型、是否允许为空等信息。 4. **生成Java代码**: 根据解析到的表结构,自动生成Java实体类。每个字段对应一个Java属性,数据类型需要转换成Java兼容的类型,如`VARCHAR`转`String`,`...

    mysql创建表的语句.docx

    MySQL 创建表是数据库管理的基础操作,它允许用户根据需求定义数据结构。在SQL语句中,`CREATE TABLE`用于创建新的表,而`IF NOT EXISTS`是一个可选的子句,确保只在表不存在的情况下执行创建操作,防止重复创建同名...

    全国各省、市、县、镇、村数据库mysql脚本单表

    这通常是一个SQL脚本,用于在MySQL数据库中创建一个名为`t_area`的表。此表包含了中国各级行政区域的数据,包括省、市、县、镇以及村。通过运行这个脚本,用户可以在自己的数据库环境中快速构建出一个完整的中国地区...

    mysql快速入门指南

    ### MySQL快速入门指南 #### 简介:数据库与MySQL的重要性 在当今信息化时代,数据管理对于企业和组织来说至关重要。数据库是一种存储、管理和检索数据的系统。使用数据库可以帮助我们高效地处理大量的数据,并...

    Navicat与Mysql详解[归纳].pdf

    Navicat 提供了一个友好的界面来帮助用户快速创建数据库。 三、创建新表 创建数据库后,用户可以创建新的表。创建表时需要指定表名、字段名、数据类型、字段长度、默认值、是否允许为空等信息。 Navicat 提供了一...

    4.抽取mysql数据到hbase表中.docx

    - `scan 't1'`用于查看`t1`表的内容,初始状态表应该是空的。 #### 三、Kettle工具介绍与配置 1. **Kettle简介**:Pentaho Data Integration (PDI),也称为Kettle,是一个开源的数据集成平台,用于执行各种数据...

    mysql-8官方安装zip包

    MySQL是世界上最受欢迎的开源数据库系统之一,主要用于存储和管理数据。MySQL 8是其最新的主要版本,带来了许多性能提升和新特性。这个“mysql-8官方安装zip包...对于初学者和开发者来说,这是快速入门MySQL的好途径。

    安装mysql单机版

    10. **创建快捷方式**:在/usr/bin目录下创建一个指向mysql客户端的快捷方式,方便快速启动。 通过以上步骤,可以在Windows和Linux两种操作系统上安装并配置MySQL单机版。需要注意的是,在实际操作中,每一步都可能...

    MySQL创建全文索引分享

    除了全文索引,MySQL还提供了其他类型的索引,如主键索引(唯一且不允许为空)、普通索引(非唯一)和唯一索引(不允许重复值)。在设计数据库时,应根据查询需求选择合适的索引类型,以达到最佳的查询性能。同时,...

    MySQL初级教程.pdf,适合MySQL初学者

    MySQL是世界上最受欢迎的开源数据库系统之一,尤其适合初学者学习。本教程主要涵盖了MySQL的基础知识,...通过学习这些基础知识,你将能够掌握如何创建、修改和查询MySQL数据库,为进一步深入学习和实践打下坚实基础。

    mysql导出表的字段和相关属性的步骤方法

    - **Docker创建MySQL**:Docker提供了一种轻量级的虚拟化方式,可以方便地创建和管理MySQL容器,实现数据库的快速部署和隔离。 - **日期时间处理**:MySQL支持多种日期和时间类型,如DATE、TIME、DATETIME等,以及...

    Mysql数据库主要系统表详细说明.docx

    如数据表的登记目录、所属的数据库名、表名、表类型(如系统视图或基表)、使用的数据库引擎(如MyISAM、CSV或InnoDB)、创建时间、更新时间和检查时间,以及创建选项和表的注释。通过查询这个表,你可以获取到一个...

    Excel生成MYSQL建表语句

    在Excel中,我们可能需要设置一个结构化的表格,每一列对应数据库表中的一个字段,包括字段名、字段类型、长度、是否为主键、是否允许为空等属性。用户需根据实际需求填充这些信息,确保它们符合MySQL的语法规范。 ...

    mysql 二进制安装包

    MySQL二进制安装包是一种非源码编译的安装方式,它通常包含了预编译的二进制可执行文件,适合快速部署和配置MySQL数据库服务器。在Linux环境下,这种安装方式尤其常见,因为Linux发行版之间的库差异可能导致源码编译...

    mysql数据库my.cnf配置文件

    [client] port = 3306 socket=/home/mysql/data/mysql.sock ...# 如果临时文件会变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出 myisam_repair_threads ...

Global site tag (gtag.js) - Google Analytics