MySQL怎么復(fù)制表

本篇內(nèi)容介紹了“MySQL怎么復(fù)制表”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開發(fā),軟件開發(fā),微信小程序,10多年建站對(duì)VR全景等多個(gè)行業(yè),擁有多年的網(wǎng)站營銷經(jīng)驗(yàn)。

1.MySQL中的外鍵

1)只能用于InnoDB表。
2)父表可以在另一個(gè)數(shù)據(jù)庫中。
3)父表中被參照的字段只要有索引就行,可以存在重復(fù)的值。
4)在“foreign key (colname) references tabname (colname)”后面加上on delete cascade,可以實(shí)現(xiàn)級(jí)聯(lián)刪除。
注:除了CASCADE,delete后面還可以跟著SET NULL,RESTRICT,NO ACTION等關(guān)鍵字。另外,還可以使用on update子句實(shí)現(xiàn)級(jí)聯(lián)更新,且兩者可以同時(shí)使用,這里不再贅述。

[@more@]
2.表類型

   MyISAM和InnoDB是MySQL中最重要的表類型。一個(gè)MyISAM表在文件系統(tǒng)中有三個(gè)對(duì)應(yīng)的文件(tabname.frm, tabname.MYD, tabname.MYI),而一個(gè)InnoDB表則只有一個(gè)對(duì)應(yīng)的文件(tabname.frm)。

 1)MyISAM

   MyISAM延伸了基本的ISAM類型,它可以在不同的操作系統(tǒng)和平臺(tái)之間進(jìn)行移植,支持大表文件(大于4GB),允許對(duì)BLOB和TEXT列進(jìn)行索引,可以對(duì)表和表索引進(jìn)行壓縮(這個(gè)特性對(duì)于BLOB和TEXT字段很實(shí)用)。它還可以約束VARCHAR字段的長度,或者自動(dòng)根據(jù)數(shù)據(jù)的情況進(jìn)行動(dòng)態(tài)調(diào)節(jié),支持使用鍵前綴和使用完整的鍵搜索記錄。
   MySQL啟動(dòng)時(shí)會(huì)自動(dòng)檢查MyISAM表以防止崩潰,甚至可以在出現(xiàn)錯(cuò)誤時(shí)進(jìn)行修復(fù)。表數(shù)據(jù)文件和表索引文件可以存儲(chǔ)在不同的位置,甚至不同的文件系統(tǒng)中。即使進(jìn)行大量的插入、更新和刪除操作的表,智能防碎片邏輯也能保證其高性能的協(xié)作性。

 2)InnoDB

   InnoDB是MySQL 5.1中的默認(rèn)表類型,它完全兼容ACID,又擁有可以與MyISAM媲美的性能,完全支持MySQL的事務(wù)處理并且不會(huì)降低速度或性能,它也可以在不同的操作系統(tǒng)和體系結(jié)構(gòu)之間移植。InnoDB提供行級(jí)和表級(jí)鎖定,也支持無鎖定讀操作(類似Oracle)和多版本。另外,它還提供對(duì)外鍵、提交、回顧和前滾的操作的支持。
   InnoDB支持在需要時(shí)自動(dòng)在內(nèi)存中創(chuàng)建散列索引來提高性能,還使用緩沖來提高可靠性和數(shù)據(jù)庫操作的速度。異步輸入/輸出和一系列的讀緩沖提高了數(shù)據(jù)檢索的速度,“伙伴算法”和Oracle類型的表空間可以進(jìn)行文件的優(yōu)化和內(nèi)存的管理。

   此外,還有ISAM(主要是兼容舊版本)、HEAP(在內(nèi)存中創(chuàng)建的臨時(shí)表)、BerkleyDB、MERGE(多個(gè)MyISAM表組合成一個(gè)單獨(dú)的表)等類型。


3.其他表修飾符

   除了TYPE外,還可以指定許多其他屬性來控制創(chuàng)建表的操作。

屬性            描述
AUTO_INCREMENT        第一次向AUTO_INCREMENT字段插入的值
CHECKSUM        是否儲(chǔ)存表校驗(yàn)和(布爾值)
COMMENT            表的描述性注釋
MAX_ROWS        表中存儲(chǔ)的最大行數(shù)
MIN_ROWS        表中存儲(chǔ)的最小行數(shù)
PACK_KEYS        是否壓縮表索引(布爾值)
UNION            映射到一個(gè)單獨(dú)的MERGE表的表
DATA DIRECTORY        表數(shù)據(jù)文件的位置
INDEX DIRECTORY        表索引文件的位置


4.復(fù)制表

   MySQL中可以結(jié)合CREATE TABLE和SELECT語句來復(fù)制表。例如:

mysql> create table test_crttb
   -> (
   -> id tinyint(3),
   -> name varchar(15),
   -> primary key (id)
   -> );
Query OK, 0 rows affected (0.10 sec)

mysql> insert into test_crttb values (1, 'Adam');
Query OK, 1 row affected (0.04 sec)

mysql> insert into test_crttb values (2, 'Bob');
Query OK, 1 row affected (0.03 sec)

mysql> insert into test_crttb values (3, 'Clark');
Query OK, 1 row affected (0.03 sec)

mysql> select * from test_crttb;
+----+-------+
| id | name  |
+----+-------+
|  1 | Adam  |
|  2 | Bob   |
|  3 | Clark |
+----+-------+
3 rows in set (0.00 sec)

mysql> create table test_crttb2 select * from test_crttb;
Query OK, 3 rows affected (0.52 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from test_crttb;
+----+-------+
| id | name  |
+----+-------+
|  1 | Adam  |
|  2 | Bob   |
|  3 | Clark |
+----+-------+
3 rows in set (0.00 sec)

   注意,select緊跟在“create table ...”后面,前面沒有as,這一點(diǎn)和Oracle不同。

   可以添加一個(gè)不成立的where條件,來創(chuàng)建一個(gè)結(jié)構(gòu)相同的空表:

mysql> desc test_crttb;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | tinyint(3)  | NO   | PRI | 0       |       |
| name  | varchar(15) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.02 sec)

mysql> desc test_crttb3;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | tinyint(3)  | NO   |     | 0       |       |
| name  | varchar(15) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.03 sec)

   但是,這種方法只能復(fù)制表本身,表上的鍵需要手動(dòng)創(chuàng)建。要在復(fù)制表的同時(shí)復(fù)制表上的鍵,可以使用下面的方法:

mysql> create table test_crttb4 like test_crttb;
Query OK, 0 rows affected (0.13 sec)

mysql> show create table test_crttb;
+------------+------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------+
| Table      | Create Table

                 |
+------------+------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------+
| test_crttb | CREATE TABLE `test_crttb` (
 `id` tinyint(3) NOT NULL DEFAULT '0',
 `name` varchar(15) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+------------+------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------+
1 row in set (0.00 sec)

mysql> show create table test_crttb4;
+-------------+-----------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------+
| Table       | Create Table

                   |
+-------------+-----------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------+
| test_crttb4 | CREATE TABLE `test_crttb4` (
 `id` tinyint(3) NOT NULL DEFAULT '0',
 `name` varchar(15) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------------+-----------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------+
1 row in set (0.00 sec)

   這樣,就創(chuàng)建一個(gè)結(jié)構(gòu)相同的空表,并帶有原表上的鍵。這時(shí)可以向其中插入原表中的記錄:

mysql> insert into test_crttb4 select * from test_crttb;
Query OK, 3 rows affected (0.24 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from test_crttb4;
+----+-------+
| id | name  |
+----+-------+
|  1 | Adam  |
|  2 | Bob   |
|  3 | Clark |
+----+-------+
3 rows in set (0.00 sec)

   還可以創(chuàng)建一個(gè)既包含原表中的列,又包含新的列的“混合表”:

mysql> create table test_crttb5
   -> (
   -> tel smallint(15)
   -> )
   -> select * from test_crttb;
Query OK, 3 rows affected (0.16 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from test_crttb5;
+------+----+-------+
| tel  | id | name  |
+------+----+-------+
| NULL |  1 | Adam  |
| NULL |  2 | Bob   |
| NULL |  3 | Clark |
+------+----+-------+
3 rows in set (0.00 sec)

   使用alter table語句的first和after子句可以調(diào)整字段的位置:

mysql> alter table test_crttb5 modify id tinyint(3) first;
Query OK, 3 rows affected (0.65 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> desc test_crttb5;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | tinyint(3)   | YES  |     | NULL    |       |
| tel   | smallint(15) | YES  |     | NULL    |       |
| name  | varchar(15)  | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> alter table test_crttb5 modify tel smallint(15) after name;
Query OK, 3 rows affected (0.56 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> desc test_crttb5;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | tinyint(3)   | YES  |     | NULL    |       |
| name  | varchar(15)  | YES  |     | NULL    |       |
| tel   | smallint(15) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

“MySQL怎么復(fù)制表”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

新聞標(biāo)題:MySQL怎么復(fù)制表
網(wǎng)頁URL:http://m.kartarina.com/article36/pihssg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)網(wǎng)站策劃定制開發(fā)做網(wǎng)站網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
主站蜘蛛池模板: 亚洲av中文无码乱人伦在线咪咕 | 日韩A无码AV一区二区三区| 亚洲Av无码乱码在线观看性色| 无码av无码天堂资源网| 国产精品无码久久久久久久久久| 久久精品中文字幕无码| 国产成人无码精品久久久小说 | 亚洲AV永久青草无码精品| 亚洲av永久无码精品天堂久久| 日韩AV片无码一区二区不卡| 无码AV天堂一区二区三区| 麻豆精品无码国产在线果冻| 无码专区天天躁天天躁在线| 无码少妇一区二区浪潮av| 无码专区人妻系列日韩精品少妇| 国产色无码专区在线观看| 2020无码专区人妻系列日韩| 久久久久久亚洲AV无码专区| 亚洲av无码日韩av无码网站冲| 久久中文字幕无码专区| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲乱码无码永久不卡在线| 亚洲精品无码久久久| 蜜色欲多人AV久久无码| 西西444www无码大胆| 西西人体444www大胆无码视频| 亚洲看片无码在线视频| 亚洲国产精品无码久久久| 亚洲AV日韩AV永久无码免下载 | 亚洲中文无码永久免| 亚洲AV无码第一区二区三区| 亚洲精品色午夜无码专区日韩| 国产精品成人无码久久久久久 | 本道久久综合无码中文字幕| 亚洲AV无码AV日韩AV网站| 无码人妻一区二区三区在线| 国精品无码一区二区三区在线蜜臀 | 无码人妻丰满熟妇区五十路| 中文字幕无码日韩欧毛| 无码AV大香线蕉| yy111111少妇影院无码|