- 浏览: 282349 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (234)
- php (70)
- linux (46)
- apache (9)
- mysql (13)
- oauth (1)
- IT新闻 (18)
- 代码收藏 (20)
- python (2)
- webservice (6)
- 评论 (7)
- asd (0)
- 开源软件 (6)
- 前端 (9)
- 7z (1)
- js (17)
- windows (4)
- cmd (2)
- 开源 (3)
- vim (6)
- windows 软件安装错误 (2)
- 分享 (3)
- search (1)
- node.js (1)
- xmind (1)
- 变成语言 (1)
- drupal (0)
- jquery (2)
- css (7)
- ietester (1)
- 编辑器 (1)
- java (2)
- html5 (1)
- 生活 (1)
- Sublime Text 2 (1)
- 制图 (0)
- sublime (1)
最新评论
-
muxueqz:
我自己写了个开源的:http://muxueqz.top/sk ...
Delicious被Yahoo卖了 -
yangyongnihao:
...
REST与SOAP样式Web 服务的区别 -
wangshaofei:
zhou7707 写道 大神啊,太及时了,我今天服务器上不了 ...
Debian 6 下搭建nginx 1.3 -
zhou7707:
大神啊,太及时了,我今天服务器上不了外网,为搞包依赖折腾一 ...
Debian 6 下搭建nginx 1.3 -
wangshaofei:
bbs_ld 写道一楼说的对啊。如何解决呢?? 高手大人
利用php创建日期选择框
目的:测试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子句
权限不会随like一起复制
原表 test.test
原表table级别权限:
root:mysql> select * from tables_priv where Db='test' and Table_name='test';
+-------------+------+-------+------------+----------------+---------------------+-----------------------------+-------------+
| Host | Db | User | Table_name | Grantor | Timestamp | Table_priv | Column_priv |
+-------------+------+-------+------------+----------------+---------------------+-----------------------------+-------------+
| 192.168.%.% | test | root | test | root@localhost | 2009-09-17 11:22:25 | Select,Insert,Update,Delete | |
| 192.168.%.% | test | lidan | test | root@localhost | 2009-09-17 11:23:58 | Select,Insert,Update,Delete | |
+-------------+------+-------+------------+----------------+---------------------+-----------------------------+-------------+
2 rows in set (0.00 sec)
复制表:
root:test> create table pri_test like test;
Query OK, 0 rows affected (0.00 sec)
pri_test的权限
root:mysql> select * from tables_priv where Db='test' and Table_name='pri_test';
Empty set (0.00 sec)
可见使用like不可能保持原表和复制表的权限一致
至于如何实现完全创建表结构和索引的方法有待继续探讨!
发表评论
-
11111
2013-07-04 00:45 0qqqqqqqqqqqqq -
xcc
2013-06-24 17:41 0xxx -
征婚网站
2013-06-09 17:44 0征婚网站 -
CodeIgniter 用户指南 版本 2.1.3
2013-05-23 02:25 787CodeIgniter 是一套给 PHP 网站开发者使用的应用 ... -
xampp windows xdebug netbeans
2013-04-17 00:15 751xdebug config in php.ini xdeb ... -
Installing_Nginx_With_PHP5_And_MySQL_Support_On_Debian_Squeeze.rar
2013-03-17 20:37 651Installing_Nginx_With_PHP5_And_ ... -
Debian 6 下搭建nginx 1.3
2013-03-17 18:27 17051 准备debian 6.0环境 2 下载需要安装的 ... -
这样用google
2013-01-10 12:49 1039美国人教你这样用Google,你真的会变特工!!!来源: ... -
NetBeans Hot Keys
2012-12-16 17:01 686最近使用netbeans,发现还不错NetBeans Hot ... -
drupal开发
2012-10-12 09:35 0在请求的url中获取回调函数,根据回调函数来判断页面显 ... -
php windows xp zip
2012-09-28 10:31 625php windows xp zip -
drupal7源码和文档
2012-09-19 08:00 630drupal7源码和文档 -
我的文件
2012-06-29 17:18 0阿道夫 -
Nginx + PHP5
2012-06-03 02:44 787WINDOWS下应该有PHP-FPM类 ... -
SSH的官方下载地址
2012-05-15 11:05 0这里分别是SSH的官方下载地址: Struts2.0: ... -
php文档
2012-05-11 10:34 706php文档。 -
php set_magic_quotes_runtime() 函数过时解决方法
2011-11-15 09:45 916tags标签: set_magic_quotes_runtim ... -
php静态方法调用非静态方法不可取
2011-11-08 15:22 2377那天对这个主题比较感 ... -
国外PHP老手谈为何放弃PHP而改用Python
2011-11-01 13:28 1015本文作者做了11年的P ... -
vim 相关操作方法命令
2011-10-28 13:22 26591. 翻页 整页翻页 ctrl-f ctrl-b f就是f ...
相关推荐
CREATE TABLE A AS SELECT x, x, x, xx FROM B LIMIT 0; ``` 在这个例子中,表A将只包含从B表中选择的x和xx字段,而不包含B表的其他字段。由于使用了`LIMIT 0`,所以不会复制任何数据。这种方法适合在保留源表...
本文分析了MySQL中create table as 与like的区别。分享给大家供大家参考,具体如下: 对于mysql的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? 代码如下:create table t2 as ...
- 示例: `SELECT a.title, a.username, b.addddate FROM tablea, (SELECT MAX(adddate) adddate FROM table WHERE table.title = a.title) AS b;` 以上是SQL的一些基础与进阶用法,掌握这些知识点能够帮助你在实际...
* 查找: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 ...
- **示例**: `SELECT a.*, b.* FROM table_a a RIGHT OUTER JOIN table_b b ON a.key = b.key;` 3. **全外连接 (FULL OUTER JOIN)** - 包括左表和右表中的所有行, 无论是否有匹配。 - **示例**: `SELECT a.*, b....
CREATE TABLE tab_new AS SELECT col1, col2... FROM tab_old; ``` `ALTER TABLE` 语句用于修改表结构,如添加列、删除列或更改列属性。添加主键使用 `ADD PRIMARY KEY`,删除主键用 `DROP PRIMARY KEY`。例如: ```...
- **模糊查询**:`SELECT * FROM table_name WHERE field LIKE '%value%';` - **排序查询**:`SELECT * FROM table_name ORDER BY field ASC|DESC;` #### 插入数据 - **基本插入**:`INSERT INTO table_name (field...
SELECT * FROM table_a RIGHT OUTER JOIN table_b ON table_a.id = table_b.id; ``` - **全外连接**(Full Outer Join) - **功能**:返回左表和右表中的所有行,无论是否匹配;对于未匹配的行,另一侧使用NULL...
CREATE TABLE new_table AS SELECT * FROM old_table; ``` 6. **删除表**:`DROP TABLE`语句用于删除整个表,例如`DROP TABLE tablename`。 7. **增加列**:`ALTER TABLE`语句用于在表中添加新列,如`ALTER ...
- **SQL语句**: `SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a LEFT OUTER JOIN b ON a.key = b.key;` - **说明**: 返回左表的所有记录和右表中符合条件的记录,如果右表中没有匹配,则结果集中相应的列为空。 - **...
CREATE TABLE tab_new AS SELECT col1, col2 FROM tab_old DEFINITION ONLY ``` - **删除表**: `DROP TABLE tabname`。这条命令用于删除指定的表。 - **修改表结构**: - **增加列**: ```sql ALTER TABLE ...
- **示例**: `SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a LEFT OUTER JOIN b ON a.a = b.c;` - **右外连接**: - **语法**: `SELECT * FROM table1 RIGHT OUTER JOIN table2 ON table1.column = table2.column;`...
- **AS SELECT 语法**: `CREATE TABLE tab_new AS SELECT col1, col2 FROM tab_old DEFINITION ONLY;` - 只复制表结构不包含数据。 **3. 删除表 (DROP TABLE)** - **语法**: `DROP TABLE tabname;` - 删除指定表...