首頁  >  文章  >  資料庫  >  Mysql中create as 和create like有什麼差別? (對比介紹)

Mysql中create as 和create like有什麼差別? (對比介紹)

不言
不言轉載
2019-02-14 11:52:374248瀏覽

這篇文章帶給大家的內容是關於Mysql中create as 和create like有什麼差別? (對比介紹),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

大家可能使用Navicat Premium時發現很方便,例如複製表或資料結構等,其實這種複製表資料或結構方法就是create table as 和create table like 這種方式實作

細心的朋友會問,他們有啥差別呢? 。 。 。廢話不多說,直入正題:、

(推薦課程:MySQL教學

例如這裡有張表資料t1:

DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1`  (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID,自增',
  `uid` bigint(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户uid',
  `nickname` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '昵称',
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '用户名',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `unn`(`uid`, `name`, `nickname`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci  ROW_FORMAT = Compact;

-- ----------------------------
-- Records of t1
-- ----------------------------
INSERT INTO `t1` VALUES (3, 100, 'kaven', 'test3');
INSERT INTO `t1` VALUES (2, 101, 'maha', 'test2');
INSERT INTO `t1` VALUES (4, 102, 'loose', 'test4');
INSERT INTO `t1` VALUES (5, 105, 'balala', 'test5');

注意上面有索引:

Create As 複製表

create table t1_copy as select * from t1 where 1=2# 或者 create table t1_copy as select * from t1 limit 0

這裡我們只需要表結構,所以上面的 where 1=2 或lmit 0 查詢的是空資料。我們會發現新表t1_copy沒有索引:

缺少t1表(來源表)的索引資訊而只有表結構相同。 (如果要複製數據,去掉limit 0即可,也就是查詢到的所有數據複製)

 Create like 複製表

create table t1_copy2 like t1

我們發現like 建立出來的新表包含來源表的完整表結構和索引資訊。

總結

as用來建立相同表結構並複製來源表資料。

like用來建立完整表結構和全部索引。

注意:兩種方式在複製表的時候是不會複製權限對錶的設定。比如說原本對錶A做了權限設置,複製表AA後,表AA並不具備類似表A的權限。有興趣的朋友可以試試

以上是Mysql中create as 和create like有什麼差別? (對比介紹)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除