mysql復(fù)制表的幾種常用方式總結(jié)
mysql復(fù)制表的幾種方式
所描述的方法還請(qǐng)實(shí)際測(cè)試一下再使用.
1、復(fù)制表結(jié)構(gòu)及數(shù)據(jù)到新表
CREATE TABLE 新表SELECT * FROM 舊表
這種方法會(huì)將oldtable中所有的內(nèi)容都拷貝過(guò)來(lái),當(dāng)然我們可以用delete from newtable;來(lái)刪除。
新表中沒(méi)有了舊表的primary key、Extra(auto_increment)等屬性。需要自己用"alter"添加,而且容易搞錯(cuò)。
2、只復(fù)制表結(jié)構(gòu)到新表
CREATE TABLE 新表SELECT * FROM 舊表WHERE 1=2
或CREATE TABLE 新表LIKE 舊表
3、復(fù)制舊表的數(shù)據(jù)到新表(假設(shè)兩個(gè)表結(jié)構(gòu)一樣)
INSERT INTO 新表SELECT * FROM 舊表
4、復(fù)制舊表的數(shù)據(jù)到新表(假設(shè)兩個(gè)表結(jié)構(gòu)不一樣)
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 舊表
5、可以將表1結(jié)構(gòu)復(fù)制到表2
SELECT * INTO 表2 FROM 表1 WHERE 1=2
6、可以將表1內(nèi)容全部復(fù)制到表2
SELECT * INTO 表2 FROM 表1
7、 show create table 舊表;
這樣會(huì)將舊表的創(chuàng)建命令列出。我們只需要將該命令拷貝出來(lái),更改table的名字,就可以建立一個(gè)完全一樣的表
8、mysqldump
用mysqldump將表dump出來(lái),改名字后再導(dǎo)回去或者直接在命令行中運(yùn)行
9、復(fù)制舊數(shù)據(jù)庫(kù)到新數(shù)據(jù)庫(kù)(復(fù)制全部表結(jié)構(gòu)并且復(fù)制全部表數(shù)據(jù))
#mysql -u root -ppassword >CREATE DATABASE new_db; #mysqldump old_db -u root -ppassword--skip-extended-insert --add-drop-table | mysql new_db -u root -ppassword
10、表不在同一數(shù)據(jù)庫(kù)中(如,db1 table1, db2 table2)
sql: insert into db1.table1 select * from db2.table2 (完全復(fù)制) insert into db1.table1 select distinct * from db2.table2(不復(fù)制重復(fù)紀(jì)錄) insert into tdb1.able1 select top 5 * from db2.table2 (前五條紀(jì)錄)
MySQL拷貝表的幾種方式
1、拷貝結(jié)構(gòu)-添加數(shù)據(jù)
## 拷貝結(jié)構(gòu) CREATE TABLE newTable LIKE oldTable; ## 添加數(shù)據(jù) INSERT INTO newTable SELECT * FROM oldTable;
2、拷貝結(jié)構(gòu)和數(shù)據(jù)
CREATE TABLE newTable SELECT * FROM oldTable;
注:新表中沒(méi)有了舊表的primary key、Extra(auto_increment)等屬性。需要自己用"alter"添加,而且容易搞錯(cuò)。
3、拷貝部分字段和部分?jǐn)?shù)據(jù)
## 拷貝部分字段
CREATE TABLE newTable AS
(
SELECT 字段1, 字段2,... FROM oldTable
)
## 拷貝部分?jǐn)?shù)據(jù)
CREATE TABLE 新表 AS<br>(<br>SELECT * FROM 舊表 WHERE id='1'4、不同數(shù)據(jù)庫(kù)拷貝表
CREATE TABLE newTable LIKE base1.oldTable; CREATE TABLE base1.newTable LIKE base2.oldTable;
表復(fù)制/合并查詢/外連接
1. 表復(fù)制
自我復(fù)制數(shù)據(jù)(蠕蟲復(fù)制)
有時(shí),為了對(duì)某個(gè)sql語(yǔ)句進(jìn)行效率測(cè)試,我們需要海量的數(shù)據(jù)時(shí),可以使用此法為表創(chuàng)建海量數(shù)據(jù)
演示如何自我復(fù)制

思考:如何去掉一張表中的重復(fù)數(shù)據(jù)
思路:
先創(chuàng)建一張臨時(shí)表 my_tmp,該表的結(jié)構(gòu)和 my_tab02 一樣

把 my_tmp 的記錄,通過(guò) distinct 關(guān)鍵字 處理后 , 把記錄復(fù)制到 my_tmp

清除 my_tab02 中的所有記錄

把 my_tmp 中的記錄 復(fù)制到 my_tab02 中

drop 掉臨時(shí)表 my_tmp

2. 合并查詢
有時(shí)在實(shí)際應(yīng)用中,為了合并多個(gè) select 語(yǔ)句的結(jié)果,可以使用集合操作符號(hào) union,union all
union all
該操作符用于取得兩個(gè)結(jié)果集的并集,當(dāng)使用該操作符時(shí),不會(huì)取消重復(fù)行。

union
該操作符用于取得兩個(gè)結(jié)果集的并集,當(dāng)使用該操作符時(shí),會(huì)取消重復(fù)行。

3. 外連接
左外連接:如果左側(cè)的表完全顯示我們就說(shuō)是左外連接右外連接:如果右側(cè)的表完全顯示我們就說(shuō)是右外連接舉例說(shuō)明: 創(chuàng)建兩張表,一張存放名字,一張存放分?jǐn)?shù)
要求:顯示所有人的成績(jī),如果沒(méi)有成績(jī),也要顯示該人的姓名和id號(hào),成績(jī)顯示為空

若用多表查詢的方式,則無(wú)法查詢到成績(jī)?yōu)榭盏娜说慕Y(jié)果

用左外連接的方式來(lái)查找,就可以將成績(jī)?yōu)榭盏娜说拿忠诧@示出來(lái)
說(shuō)明:左外連接就是左側(cè)表完全顯示,所以會(huì)把stu的內(nèi)容全部顯示出來(lái)

用右外連接的方式來(lái)查找,就可以將成績(jī)?yōu)榭盏娜说拿忠诧@示出來(lái)
說(shuō)明:右外連接就是右側(cè)表完全顯示,即使和左表沒(méi)有匹配的記錄,也會(huì)把exam的內(nèi)容全部顯示出來(lái)

問(wèn)題:列出部門名稱和這些部門的員工名稱和工作,同時(shí)要求顯示出那些沒(méi)有員工的部門

在實(shí)際開(kāi)發(fā)中,我們絕大多數(shù)情況下使用的是內(nèi)連接
總結(jié)
到此這篇關(guān)于mysql復(fù)制表的幾種常用方式的文章就介紹到這了,更多相關(guān)mysql復(fù)制表方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL字段默認(rèn)值為NULL時(shí)的避坑指南
在 MySQL 中,字段默認(rèn)值為 NULL 是一種常見(jiàn)設(shè)計(jì),但如果你不小心,NULL 會(huì)成為你系統(tǒng)中最隱蔽的問(wèn)題源頭之一,本文將通過(guò)真實(shí) SQL 示例,帶你了解默認(rèn)值為 NULL 時(shí)常見(jiàn)的“坑”,需要的朋友可以參考下2025-05-05
mysql高效查詢left join和group by(加索引)
這篇文章主要給大家介紹了關(guān)于mysql高效查詢left join和group by,這個(gè)的前提是加了索引,以及如何在MySQL高效的join3個(gè)表 的相關(guān)資料,需要的朋友可以參考下2021-06-06
Docker搭建MySQL并掛載數(shù)據(jù)的全過(guò)程
環(huán)境搭建費(fèi)時(shí)費(fèi)力,但要必不可少,這篇文章主要給大家介紹了關(guān)于Docker搭建MySQL并掛載數(shù)據(jù)的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
MySQL?使用觸發(fā)器記錄用戶的操作日志問(wèn)題
使用?MySQL?觸發(fā)器可以記錄哪些用戶、什么時(shí)間對(duì)數(shù)據(jù)表進(jìn)行了增、刪、改操作。如果執(zhí)行刪除操作,則記錄刪除之前的數(shù)據(jù)記錄;如果執(zhí)行更新操作,記錄更新之前的數(shù)據(jù)記錄,這篇文章主要介紹了MySQL?使用觸發(fā)器記錄用戶的操作日志,需要的朋友可以參考下2022-12-12
一文總結(jié)MySQL中數(shù)學(xué)函數(shù)有哪些
MySQL函數(shù)包括數(shù)學(xué)函數(shù)、字符串函數(shù)、日期和時(shí)間函數(shù)、條件判斷函數(shù)、系統(tǒng)信息函數(shù)、加密函數(shù)等,下面這篇文章主要給大家介紹了關(guān)于MySQL中數(shù)學(xué)函數(shù)有哪些的相關(guān)資料,需要的朋友可以參考下2023-02-02
MySQL每天自動(dòng)增加分區(qū)的實(shí)現(xiàn)
本文主要介紹了MySQL每天自動(dòng)增加分區(qū)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
MySql 知識(shí)點(diǎn)之事務(wù)、索引、鎖原理與用法解析
這篇文章主要介紹了MySql 知識(shí)點(diǎn)之事務(wù)、索引、鎖原理與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了mysql數(shù)據(jù)庫(kù)事務(wù)、索引、鎖的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-09-09
MySQL下PID文件丟失的相關(guān)錯(cuò)誤的解決方法
這篇文章主要介紹了MySQL下PID文件丟失的相關(guān)錯(cuò)誤的解決方法,具體的提示可能會(huì)是"mysql PID file not found and Can’t connect to MySQL through socket mysql.sock",需要的朋友可以參考下2015-07-07

