- 浏览: 134879 次
文章分类
最新评论
目的:测试create table a as select * from b 与create table a like b的区别
mysql下测试:
源表:ti
表结构如下
root:test> show create table ti\G
*************************** 1. row ***************************
Table: ti
Create Table: CREATE TABLE `ti` (
`id` int(11) DEFAULT NULL,
`amount` decimal(7,2) DEFAULT NULL,
`m_photo_big` varchar(64) DEFAULT NULL,
`tr_date` date DEFAULT NULL,
`new_msg_flag` tinyint(4) NOT NULL DEFAULT '0',
`love_listreq` int(3) DEFAULT '1',
`love_listconfig` int(3) DEFAULT '1',
KEY `new_msg_flag` (`new_msg_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
a 使用create as select语句创建表
root:test> create table ti2 as select * from ti limit 0;
Query OK, 0 rows affected (0.00 sec)
sroot:test> how create table ti2 ;
----------------------------
CREATE TABLE `ti2` (
`id` int(11) DEFAULT NULL,
`amount` decimal(7,2) DEFAULT NULL,
`m_photo_big` varchar(64) DEFAULT NULL,
`tr_date` date DEFAULT NULL,
`new_msg_flag` tinyint(4) NOT NULL DEFAULT '0',
`love_listreq` int(3) DEFAULT '1',
`love_listconfig` int(3) DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
对比源表的表结构,发现KEY `new_msg_flag` (`new_msg_flag`)没有被创建
b 使用like子句创建表
root:test> create table ti1 like ti;
Query OK, 0 rows affected (0.06 sec)
root:test> show create table ti1;
----------------------------------------
CREATE TABLE `ti1` (
`id` int(11) DEFAULT NULL,
`amount` decimal(7,2) DEFAULT NULL,
`m_photo_big` varchar(64) DEFAULT NULL,
`tr_date` date DEFAULT NULL,
`new_msg_flag` tinyint(4) NOT NULL DEFAULT '0',
`love_listreq` int(3) DEFAULT '1',
`love_listconfig` int(3) DEFAULT '1',
KEY `new_msg_flag` (`new_msg_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
对比源表的表结构,两者完全一致,完整的包含了表结构和索引
结论:mysql下create table a as select * from b形式创建的表不包含索引信息,like子句形式包含完整表结构和索引信息
所以 as select 子句一般适用于建表并复制源表数据的情况,like子句适用于只复制表结构的情况
误用的风险: 索引的缺失对于业务的性能是致命的,不必多说.
Oracle下:
a create as select同样不会创建索引
b oracle不支持like子句
至于如何实现完全创建表结构和索引的方法有待继续探讨!
GAME OVER
发表评论
-
(转)mysql 格式化日期 DATE_FORMAT,FROM_UNIXTIME,UNIX_TIME等
2013-03-01 16:40 10531. DATE_FORMAT() 函数用于以不同的格式显示日 ... -
(转载)mysql通过关联修改表中两个字段的值
2013-01-21 15:28 1101mysql通过关联修改表中 ... -
转Error Code: 2006 - MySQL server has gone away(Error Code: 2006 - MySQL 服务器已离线)
2012-12-27 11:14 905刚才在导入数据库的时候 SQLyog 报错了Error Cod ... -
mysql添加用户和用户权限
2013-01-21 15:29 1827Mysql添加用户使用可以对mysql数据库用户表有操作权限的 ... -
主从服务器配置
2012-12-18 17:06 728安装环境:主服务器::192.168.1.10从服务器::19 ... -
同机MySQL主从同步设置
2012-12-18 17:02 7741、 配置主库my.ini port=3306 data ... -
MySQL主从复制与读写分离
2012-12-18 16:05 690MySQL主从复制(M ... -
mysql主从复制
2012-12-18 15:23 631mysql主从复制 怎么安装mysql数据库,这里不说了,只 ... -
(转载)MySQL的log-bin的日志功能
2012-12-18 15:10 617装mysql,运行一段时间后 ... -
(转载)mysql 远程连接速度慢的解决方案
2012-12-14 15:35 669PHP远程连接MYSQL速度慢,有时远程连接到M ... -
(转载)MySQL常用操作基本操作
2012-12-13 11:18 648MySQL常用操作基本操作,以下都是MySQL5.0下测试通过 ... -
MySQL 5.5版本下my.ini内[mysqld]项中不能再写default-character-set=utf8
2012-12-13 11:12 728原来在5.1版本时,为了解决中文乱码问题设置默认字符集为utf ... -
mysql从一个表向另一个表转移数据的存储过程
2012-12-11 10:59 798DELIMITER $$ USE `sms`$$ DROP ... -
(转载)MYSQL数据表损坏的原因分析和修复方法
2012-11-28 09:23 673一、表损坏的原因分析 以下原因是导致mysql 表毁坏的 ... -
MySQL日期时间函数大全
2012-11-17 10:38 617DAYOFWEEK(date) 返回日期date是星期几(1 ... -
(转载)Windows下安装MySQL最佳实践
2012-10-15 17:41 690一、背景 其实在Windows下安装MySQL可谓是一件很简 ... -
mysql 数据表合并并且只重复数据只读取一条
2012-09-21 14:56 1693mysql教程 数据表合并并且只重复数据只读取一条//首先我们 ... -
Linux下设置MySQL编码
2012-09-11 13:59 754在某些时候,我们需要要修改mysql默认数据库的编码,以保证某 ... -
mysql show processlist 显示mysql 查询进程
2012-09-10 16:05 791processlist命令的输出结果显示了有哪些线程在运行,可 ... -
MySQL中的临时表使用方法
2012-09-06 09:51 583当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量 ...
相关推荐
B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2...
B:create table tab_new as select col1,col2… from tab_old definition only C: select * into table2 from table 5、说明: 删除新表:drop table tabname 6、说明: 增加一个列:Alter table tabname ...
B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2...
B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2...
B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2...
sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、select ename, sal * 12 from emp; --计算...
1. Create table命令 用于创建表。在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等 语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1...
select * from Users where UserName like @UserName and UserName like @nextName; go exec proc_findUsersByName; exec proc_findUsersByName '%l%', 'j%'; -------------------------------------------------...
SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=...
DROP TABLE, ALTER TABLE statements CREATE INDEX, DROP INDEX statements INSERT, UPDATE, DELETE statements BETWEEN, IN, LIKE, IS NULL, EXISTS operators Aggregate functions COUNT,SUM,MIN,MAX,AVG Most of...
create a new Network Interface Card and connect it to VLAN 'n' -net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=y|n] [,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,...
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...] ACPI table description -smbios file=binary load ...
Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ...