MySQL SQL命令進行表結構與資料複製

2021-08-01 07:33:09 字數 3611 閱讀 8099

第一種方式:

create table 表名 like [資料庫.]表名;

-- 如果是同乙個資料庫下的表的複製,不需要新增[資料庫.];

-- 不會複製資料;

示例如下:

-- 原表建立語句:

create table `tb_lesson` (

`id` int(11) not null auto_increment,

`name` varchar(60) default null,

`jointime` datetime default null,

primary key (`id`)

) engine=innodb auto_increment=34 default charset=utf8;

-- 刪除原表:

drop table tb_lesson;

--並從備份資料庫複製

create table tb_lesson like db_exam2.tb_lesson;

-- 檢視複製的新錶語句;

create table `tb_lesson` (

`id` int(11) not null auto_increment,

`name` varchar(60) default null,

`jointime` datetime default null,

primary key (`id`)

) engine=innodb default charset=utf8;

-- 字段屬性未變

第二種方式:

create table new_table

asselect * from [資料庫名.]old_table;

-- 第二種方式在mysql下可能會丟失列屬性,如主鍵,自增等。

示例如下:

-- 第二種方式複製的新錶如下:

create table `tb_lesson` (

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

`name` varchar(60) default null,

`jointime` datetime default null

) engine=innodb default charset=utf8;

-- 改變了字段屬性等。

-- 同時複製了資料;

-- 如果側重表結構不建議使用這種方式。

又被稱為蠕蟲複製,語法格式如下:

insert into table2(field1,field2,...) select value1,value2,... from table1;

// 如果不指定列,則如下(一定保證兩個表列一致):

insert into new_table select * from [資料庫.]old_table

指定列欄位例項:

insert

into

tb_sys_news

(category_name

,category_id

,user_name

,user_id

,content

,field9

,create_time

)select

'xx特色',1

,'***xx',2

,content

,website

,publish_time

from

sheetj1

需要注意的是,下面方式不適用於mysql:

select vale1, value2 into table2 from table1
該方式常常用於mysql觸發器、儲存過程或函式中為變數賦值。

兩個資料庫之間表複製過程如下:

複製db_exam2資料庫的表tb_lesson到當前資料庫的表tb_lesson(表不出存在時需要建立)。

-- 刪除已經存在的表;

drop table if exists tb_lesson;

--複製並建立新錶

create table tb_lesson like db_exam2.tb_lesson;

-- 複製資料

insert into tb_lesson select * from db_exam2.tb_lesson;

這裡是從另外乙個資料庫(兩個資料庫在同乙個主機)複製表和資料到當前資料庫,省略了當前資料庫名字。

也可以不省略資料庫名字如下:

從data_analysis複製表和資料到data_analysis_zh。此處不管當前連線物件是哪個資料庫,都可以正確執行。

drop table if exists data_analysis_zh.store_card_2;

create table data_analysis_zh.store_card_2 like data_analysis.pos_sale;

insert into data_analysis_zh.store_card_2

select * from data_analysis.pos_sale where data_analysis.pos_sale.number_store_card >0;

select * from data_analysis_zh.store_card_2 ;

效果等同如下(開啟data_analysis連線):

drop table if exists data_analysis_zh.store_card_2;

create table data_analysis_zh.store_card_2 like pos_sale;

insert into data_analysis_zh.store_card_2

select * from pos_sale where number_store_card >0;

select * from data_analysis_zh.store_card_2 ;

效果等同如下(開啟data_analysis_zh連線):

drop table if exists store_card_2;

create table store_card_2 like data_analysis.pos_sale;

insert into store_card_2

select * from data_analysis.pos_sale where [data_analysis.pos_sale.]number_store_card >0;

select * from store_card_2 ;

參考博文:mysql - 資料備份與還原(匯出匯入)。

mySQL SQL命令大全

有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連線mysql 修改密碼 增加使用者等方面來學習一些mysql的常用命令。一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後...

mySQL SQL命令大全

有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連線mysql 修改密碼 增加使用者等方面來學習一些mysql的常用命令。一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後...

mysql sql 備份表 SQL語句之備份表

select into 語句 表示從乙個表中選取資料,然後把資料插入另乙個表中,常用來備份一張表 1.全表結構備份 select into new table name from old tablename 示例 備份student表,備份表取名為student backup select into...