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...