- 浏览: 139040 次
-
文章分类
最新评论
目的:测试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 11261. DATE_FORMAT() 函数用于以不同的格式显示日 ... -
(转载)mysql通过关联修改表中两个字段的值
2013-01-21 15:28 1124mysql通过关联修改表中 ... -
转Error Code: 2006 - MySQL server has gone away(Error Code: 2006 - MySQL 服务器已离线)
2012-12-27 11:14 942刚才在导入数据库的时候 SQLyog 报错了Error Cod ... -
mysql添加用户和用户权限
2013-01-21 15:29 1852Mysql添加用户使用可以对mysql数据库用户表有操作权限的 ... -
主从服务器配置
2012-12-18 17:06 750安装环境:主服务器::192.168.1.10从服务器::19 ... -
同机MySQL主从同步设置
2012-12-18 17:02 7961、 配置主库my.ini port=3306 data ... -
MySQL主从复制与读写分离
2012-12-18 16:05 716MySQL主从复制(M ... -
mysql主从复制
2012-12-18 15:23 653mysql主从复制 怎么安装mysql数据库,这里不说了,只 ... -
(转载)MySQL的log-bin的日志功能
2012-12-18 15:10 654装mysql,运行一段时间后 ... -
(转载)mysql 远程连接速度慢的解决方案
2012-12-14 15:35 691PHP远程连接MYSQL速度慢,有时远程连接到M ... -
(转载)MySQL常用操作基本操作
2012-12-13 11:18 676MySQL常用操作基本操作,以下都是MySQL5.0下测试通过 ... -
MySQL 5.5版本下my.ini内[mysqld]项中不能再写default-character-set=utf8
2012-12-13 11:12 753原来在5.1版本时,为了解决中文乱码问题设置默认字符集为utf ... -
mysql从一个表向另一个表转移数据的存储过程
2012-12-11 10:59 831DELIMITER $$ USE `sms`$$ DROP ... -
(转载)MYSQL数据表损坏的原因分析和修复方法
2012-11-28 09:23 709一、表损坏的原因分析 以下原因是导致mysql 表毁坏的 ... -
MySQL日期时间函数大全
2012-11-17 10:38 642DAYOFWEEK(date) 返回日期date是星期几(1 ... -
(转载)Windows下安装MySQL最佳实践
2012-10-15 17:41 720一、背景 其实在Windows下安装MySQL可谓是一件很简 ... -
mysql 数据表合并并且只重复数据只读取一条
2012-09-21 14:56 1717mysql教程 数据表合并并且只重复数据只读取一条//首先我们 ... -
Linux下设置MySQL编码
2012-09-11 13:59 780在某些时候,我们需要要修改mysql默认数据库的编码,以保证某 ... -
mysql show processlist 显示mysql 查询进程
2012-09-10 16:05 824processlist命令的输出结果显示了有哪些线程在运行,可 ... -
MySQL中的临时表使用方法
2012-09-06 09:51 611当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量 ...
相关推荐
* 查找:SELECT * FROM table1 WHERE field1 LIKE %value1% * 排序:SELECT * FROM table1 ORDER BY field1, field2 [DESC] * 总数:SELECT COUNT(*) AS totalcount FROM table1 * 求和:SELECT SUM(field1) AS ...
- `CREATE TABLE tab_new AS SELECT col1, col2 FROM tab_old` 5. **删除表**:`DROP TABLE`语句用于删除表,例如`DROP TABLE tabname`。 6. **添加列**:若需向表中添加列,使用`ALTER TABLE`语句,如`ALTER ...
CREATE VIEW StudentInfo AS SELECT StudentID, Name, Age FROM Students; ``` ##### 删除视图 - **语法**: ```sql DROP VIEW view_name; ``` - **描述**:此命令用于删除视图`view_name`。 - **示例**: ``...
- **CREATE TABLE**:创建新的表结构,例如`CREATE TABLE tb1 (Id int NOT NULL PRIMARY KEY, name VARCHAR, ...)`。 - **ALTER TABLE**:修改表结构,可以添加新列,但一旦添加,列不能被删除,且在某些数据库...
创建视图的基本语法是:CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition。 9. MySQL.ini文件和MySQL窗口 在Windows系统中,MySQL的配置信息存储在MySQL.ini文件中,而在类Unix...
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...
- `SELECT COUNT(*) AS total FROM table_name;` 统计记录数。 - `SELECT AVG(col) AS avg_value FROM table_name;` 计算平均值。 - `SELECT MAX(col) AS max_value FROM table_name;` 获取最大值。 - `SELECT ...
CREATE TABLE tb (id INT, name VARCHAR(50) DEFAULT 'abc', num INT DEFAULT 5); INSERT INTO tb (id) SELECT 1; INSERT INTO tb SELECT 1, 'oo', 100; INSERT INTO tb (id, name) SELECT 1, 'oo'; GO DECLARE @...
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...
- `SELECT * FROM tb_test WHERE names LIKE '%chen_qing%';`:查询tb_test表中names列符合'chen_qing'通配符模式的所有记录。 需要注意的是,由于文档内容是通过OCR扫描技术生成,可能会存在一些文字识别错误或...
- 使用 `SELECT` 子句从其他表中读取数据创建新表:`CREATE TABLE new_table AS SELECT * FROM existing_table;` - 设置主键、唯一索引等约束条件:例如,`CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR...
CREATE TABLE new_table AS SELECT ..., new_column_name AS old_column_name, ... FROM old_table; DROP TABLE old_table; RENAME TABLE new_table TO old_table; ``` 3. **修改表名**:在Hive中,可以使用`...
`,查看表结构用`SHOW CREATE TABLE tb_name;`,描述表为`DESCRIBE tb_name;`,删除表用`DROP TABLE [IF EXISTS] tb_name;`。修改表包括更改表名、字段、存储引擎等,例如`ALTER TABLE think_user ENGINE = MyISAM;`...
- **语法**:`CREATE TABLE table_name (column1 datatype, column2 datatype, ...);` - **示例**:`CREATE TABLE employee (id INT, name VARCHAR(255), age INT);` ##### ALTER TABLE - 修改表 - **功能**:修改...
CREATE TABLE tab_new AS SELECT col1, col2 FROM tab_old DEFINITION ONLY; ``` - **功能**:根据查询结果的列定义来创建新表。 - **参数**:`tab_new` 是新表名称;`tab_old` 是源表;`col1`, `col2` 是选择的...
CREATE TABLE tb_goods01 LIKE tb_goods; ``` 5. **删除数据表**: - 使用`DROP TABLE`语句删除数据表,如删除`tb_goods01`: ```sql DROP TABLE tb_goods01; ``` 6. **添加列(字段)**: - 使用`ALTER ...
CREATE TABLE IF NOT EXISTS tb_new (SELECT * FROM db.table1); ``` #### 七、修改表结构 随着项目需求的变化,可能需要对已有的表进行结构调整。 ```sql ALTER TABLE db.table1 ADD COLUMN new_field INT(5) ...
CREATE TABLE tb_admin ( id INT AUTO_INCREMENT PRIMARY KEY, nickname VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, create_time DATETIME ); ``` 查看表结构可以通过`SHOW COLUMNS`或`DESCRIBE`命令...