永发信息网

create table tb as select 和create table tb like的区别

答案:2  悬赏:70  手机版
解决时间 2021-03-09 08:13
  • 提问者网友:欲望失宠
  • 2021-03-08 08:31
create table tb as select 和create table tb like的区别
最佳答案
  • 五星知识达人网友:三千妖杀
  • 2021-03-08 09:56
1.INSERT INTO Table2 SELECt * from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量
2.SELECt * INTO Table2 FROM Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中
全部回答
  • 1楼网友:酒安江南
  • 2021-03-08 11:22
测试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子句
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯