久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL怎么復(fù)制表

共計(jì) 6215 個(gè)字符,預(yù)計(jì)需要花費(fèi) 16 分鐘才能閱讀完成。

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

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è)對應(yīng)的文件(tabname.frm, tabname.MYD, tabname.MYI),而一個(gè) InnoDB 表則只有一個(gè)對應(yīng)的文件(tabname.frm)。

 1)MyISAM

   MyISAM 延伸了基本的 ISAM 類型,它可以在不同的操作系統(tǒng)和平臺(tái)之間進(jìn)行移植,支持大表文件(大于 4GB),允許對 BLOB 和 TEXT 列進(jìn)行索引,可以對表和表索引進(jìn)行壓縮(這個(gè)特性對于 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)和多版本。另外,它還提供對外鍵、提交、回顧和前滾的操作的支持。
   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)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-17發(fā)表,共計(jì)6215字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 长沙市| 灌云县| 宁国市| 福鼎市| 清原| 冷水江市| 象州县| 河东区| 从江县| 抚顺市| 密云县| 托克逊县| 望谟县| 承德市| 宜阳县| 伊川县| 伊宁市| 集贤县| 吉水县| 琼结县| 游戏| 五常市| 铁力市| 南丰县| 浦县| 衡阳市| 海门市| 瓦房店市| 福建省| 陵水| 吐鲁番市| 勐海县| 临沂市| 克山县| 贞丰县| 乌兰浩特市| 汉源县| 东台市| 大渡口区| 黄山市| 海原县|