在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

MySQL怎么复制表

108次阅读
没有评论

共计 6215 个字符,预计需要花费 16 分钟才能阅读完成。

本篇内容介绍了“MySQL 怎么复制表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.MySQL 中的外键

1) 只能用于 InnoDB 表。
2) 父表可以在另一个数据库中。
3) 父表中被参照的字段只要有索引就行,可以存在重复的值。
4) 在“foreign key (colname) references tabname (colname)”后面加上 on delete cascade,可以实现级联删除。
注:除了 CASCADE,delete 后面还可以跟着 SET NULL,RESTRICT,NO ACTION 等关键字。另外,还可以使用 on update 子句实现级联更新,且两者可以同时使用,这里不再赘述。

[@more@]
2. 表类型

   MyISAM 和 InnoDB 是 MySQL 中最重要的表类型。一个 MyISAM 表在文件系统中有三个对应的文件(tabname.frm, tabname.MYD, tabname.MYI),而一个 InnoDB 表则只有一个对应的文件(tabname.frm)。

 1)MyISAM

   MyISAM 延伸了基本的 ISAM 类型,它可以在不同的操作系统和平台之间进行移植,支持大表文件(大于 4GB),允许对 BLOB 和 TEXT 列进行索引,可以对表和表索引进行压缩(这个特性对于 BLOB 和 TEXT 字段很实用)。它还可以约束 VARCHAR 字段的长度,或者自动根据数据的情况进行动态调节,支持使用键前缀和使用完整的键搜索记录。
   MySQL 启动时会自动检查 MyISAM 表以防止崩溃,甚至可以在出现错误时进行修复。表数据文件和表索引文件可以存储在不同的位置,甚至不同的文件系统中。即使进行大量的插入、更新和删除操作的表,智能防碎片逻辑也能保证其高性能的协作性。

 2)InnoDB

   InnoDB 是 MySQL 5.1 中的默认表类型,它完全兼容 ACID,又拥有可以与 MyISAM 媲美的性能,完全支持 MySQL 的事务处理并且不会降低速度或性能,它也可以在不同的操作系统和体系结构之间移植。InnoDB 提供行级和表级锁定,也支持无锁定读操作(类似 Oracle)和多版本。另外,它还提供对外键、提交、回顾和前滚的操作的支持。
   InnoDB 支持在需要时自动在内存中创建散列索引来提高性能,还使用缓冲来提高可靠性和数据库操作的速度。异步输入 / 输出和一系列的读缓冲提高了数据检索的速度,“伙伴算法”和 Oracle 类型的表空间可以进行文件的优化和内存的管理。

    此外,还有 ISAM(主要是兼容旧版本)、HEAP(在内存中创建的临时表)、BerkleyDB、MERGE(多个 MyISAM 表组合成一个单独的表)等类型。

3. 其他表修饰符

    除了 TYPE 外,还可以指定许多其他属性来控制创建表的操作。

属性             描述
AUTO_INCREMENT         第一次向 AUTO_INCREMENT 字段插入的值
CHECKSUM         是否储存表校验和(布尔值)
COMMENT             表的描述性注释
MAX_ROWS         表中存储的最大行数
MIN_ROWS         表中存储的最小行数
PACK_KEYS         是否压缩表索引(布尔值)
UNION             映射到一个单独的 MERGE 表的表
DATA DIRECTORY         表数据文件的位置
INDEX DIRECTORY         表索引文件的位置

4. 复制表

   MySQL 中可以结合 CREATE TABLE 和 SELECT 语句来复制表。例如:

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,这一点和 Oracle 不同。

    可以添加一个不成立的 where 条件,来创建一个结构相同的空表:

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)

    但是,这种方法只能复制表本身,表上的键需要手动创建。要在复制表的同时复制表上的键,可以使用下面的方法:

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)

    这样,就创建一个结构相同的空表,并带有原表上的键。这时可以向其中插入原表中的记录:

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)

    还可以创建一个既包含原表中的列,又包含新的列的“混合表”:

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 子句可以调整字段的位置:

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 怎么复制表”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计6215字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 成人黄色免费在线观看 | 日韩欧美亚洲一区 | 四虎网址大全 | 91亚洲国产在人线播放午夜 | 色五月五月丁香亚洲综合网 | 国产精品外围在线观看 | 亚洲综合在线一区 | 黄动漫免费 | 欧美日韩国产成人综合在线影院 | www.四虎网站 | 黄a在线观看 | 韩国主播vip福利视频在线播放 | 国产99久久精品一区二区 | 亚洲精品女同一区二区在线观看 | 自拍偷拍在线视频 | 日韩精品一区二区三区 在线观看 | 在线观看福利视频 | 亚洲综合另类小说色区一 | 美女张开腿让男人桶视频 | 91精品国产91热久久p | 国产亚洲一本大道中文在线 | 成年人网站免费看 | 最新国产三级在线观看不卡 | 久久免费精品国产视频 | 在线观看欧洲成人免费视频 | 精品少妇人妻av免费久久久 | 无码av中文一区二区三区 | 日本少妇春药特殊按摩3 | 午夜精品久久久久久中宇 | 午夜一区一品日本 | 免费一区二区视频 | 好吊视频一区二区三区 | 国产av人人夜夜澡人人爽麻豆 | 中文字幕一级 | 国产精品一二三区 | 自拍欧美 | 亚洲一区av无码少妇电影 | 国产无遮挡裸体免费视频 | 亚洲综合二区 | 国产精品无码无卡无需播放器 | 婷婷久久综合九色综合绿巨人 |