mysql將A庫中的表copy到B庫中

2021-09-12 15:01:36 字數 3061 閱讀 6592

a資料庫,b資料庫

目的:將 

a庫 中的表 匯入到 b庫 中

注意:

create table b.products as select * from a.products 與create table b.products like a.products 的區別

mysql下測試:

源表:a

表結構如下

mysql> show create table products \g

*************************** 1. row ***************************

table: products

create table: create table `products` (

`products_id` int(11) not null auto_increment,

`language_id` int(11) not null default '1',

`products_name` varchar(255) not null default '',

`products_description` text,

`products_url` varchar(255) default null,

`products_viewed` int(5) default '0',

`itemno` varchar(100) default null,

primary key (`products_id`,`language_id`),

fulltext key `products_name` (`products_name`)

) engine=myisam auto_increment=10740 default charset=utf8 row_format=dynamic

a 使用create as select語句建立表

mysql> create table b.products as select * from a.products;

mysql> show create table products \g

*************************** 1. row *******************

table: products

create table: create table `products` (

`products_id` int(11) not null default '0',

`language_id` int(11) not null default '1',

`products_name` varchar(255) not null default '',

`products_description` text,

`products_url` varchar(255) default null,

`products_viewed` int(5) default '0',

`itemno` varchar(100) default null

) engine=innodb default charset=utf8

對比源表的表結構,發現auto_increment、primary key (`products_id`,`language_id`)、fulltext key `products_name` (`products_name`)沒有被建立

b 使用like子句建立表

mysql> create table b.products like a.products;

mysql> show create table b.products \g

*************************** 1. row **********************

table: products

create table: create table `products` (

`products_id` int(11) not null auto_increment,

`language_id` int(11) not null default '1',

`products_name` varchar(255) not null default '',

`products_description` text,

`products_url` varchar(255) default null,

`products_viewed` int(5) default '0',

`itemno` varchar(100) default null,

primary key (`products_id`,`language_id`),

fulltext key `products_name` (`products_name`)

) engine=myisam default charset=utf8 row_format=dynamic

1 row in set (0.00 sec)

將 a.products 表中的資料新增到 b.products

insert into b.products select * from a.products;

對比源表的表結構,兩者完全一致,完整的包含了表結構和索引

結論:mysql下create table b.products as select * from a.products形式建立的表不包含索引資訊,like子句形式包含完整表結構和索引資訊

所以 as select 子句一般適用於建表並複製源表資料的情況,like子句適用於只複製表結構的情況

誤用的風險: 索引的缺失對於業務的效能是致命的

oracle下:

a create as select同樣不會建立索引

b oracle不支援like子句

至於如何實現完全建立表結構和索引的方法有待繼續**!

(今天更換資料庫時本人用的as,導致**打不開,反應相當緩慢,特意整理乙份,希望對大家有點幫助!)

mysql庫和表 Mysql中關於庫和表的管理

一 庫的管理 1.庫的建立 create database if not exists 庫名 2.庫的修改 一般建立後不修改 rename database 原庫名 to 新庫名 3.庫的刪除 drop database if exists 庫名 二 表的管理 1.表的建立 create table...

copy模組中的copy與deepcopy的區別

每空閒下來,就覺得以前寫的部落格很low.也許現在也很low 好吧就當公升級版的low吧 如果要了解copy與deepcopy的區別,就需要了解python的儲存機制 python在賦值會在記憶體裡開闢乙個空間來存放值這就叫 記憶體位址 同時會開闢乙個空間來存放名字叫命名,在資料相同長度在一定範圍 ...

MySQL將表a中查詢的資料插入到表b中

mysql將表a中查詢的資料插入到表b中 假設表b存在 insert into b select from a 假設表b不存在 create table b as select from a 擴充套件 將b表中的某寫字段值插入到a表中 insert into a userid,username se...