来自 美高梅4858mgm 2019-10-19 10:25 的文章
当前位置: 美高梅4858官方网站 > 美高梅4858mgm > 正文

表的操作

06-表的操作

 

本节牵线

  • 储存引擎介绍(精通)
  • 表的增加和删除改查

一、存款和储蓄引擎(明白)

前几节我们驾驭mysql中国建工业总集合团立的库===》文件夹,库中的表====》文件

现实生活中大家用来积累数据的文书有区别的门类,每个文件类型对应各自分歧的拍卖体制:比方拍卖公事用txt类型,管理表格用excel,管理图片用png等

数据库中的表也相应有两样的类别,表的种类不一致,会对应mysql不一致的存取机制,表类型又称作存款和储蓄引擎。

ps: 存款和储蓄引擎说白了就是什么样存款和储蓄数据、怎么着为存款和储蓄的数据创设目录和怎么翻新、查询数据等手艺的兑现方式。因为在关周密据库中数据的存放是以表的款式积攒的,所以存款和储蓄引擎也能够称之为表类型(即存款和储蓄和操作此表的门类)

在Oracle 和SQL Server等数据库中唯有一种存款和储蓄引擎,全数数据存款和储蓄管理机制都以大同小异的。而MySql
数据库提供了二种囤积引擎。客商能够依据不一样的必要为数据表选取分化的积攒引擎,客户也得以根据
和谐的须要编写制定本人的仓库储存引擎

美高梅4858mgm 1

SQL 深入分析器、SQL 优化器、缓冲池、存款和储蓄引擎等零件在各类数据库中都设有,但不是每一个数据库都有像这种类型多存储引擎。MySQL 的插件式存款和储蓄引擎能够让存款和储蓄引擎层的开拓人士设 计他们希望的存款和储蓄层,譬如,有的利用要求满意职业的须求,有的使用则没有供给对事情有这 么强的渴求 ;有的盼望多少能长久存款和储蓄,有的只盼望放在内部存款和储蓄器中,一时并很快地提供对数据 的查询。

 

二、mysql帮衬的累积引擎

mysql> show enginesG;# 查看所有支持的引擎
mysql> show variables like 'storage_engine%'; # 查看正在使用的存储引擎

 

1、InnoDB 存款和储蓄引擎----常用

支撑工作,其设计指标首要面向联机事务管理(OLTP)的使用。其

特征是行锁设计、扶助外键,并协理类似 Oracle 的非锁定读,即暗中认可读取操作不会产生锁。 从 MySQL 5.5.8 版本先河是私下认可的寄存引擎。

InnoDB 存款和储蓄引擎将数据放在贰个逻辑的表空间中,那些表空间就像黑盒同样由 InnoDB 存款和储蓄引擎本人来治本。从 MySQL 4.1(包罗 4.1)版本开始,能够将各样InnoDB 存款和储蓄引擎的 表单独存放到四个独立的 ibd 文件中。其余,InnoDB 存款和储蓄引擎帮助将裸设备(row disk)用 于建构其表空间。

InnoDB 通过利用多版本出现调节(MVCC)来取得高并发性,何况完结了 SQL 典型 的 4 种隔断等级,默感觉 REPEATABLE 等级,同一时间利用一种名为 netx-key locking 的战术来 防止幻读(phantom)现象的发出。除外,InnoDB 存款和储蓄引擎还提供了插入缓冲(insert buffer)、二遍写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead) 等高质量和高可用的成效。

对于表中数量的积存,InnoDB 存储引擎选取了聚众(clustered)的点子,每张表都以按 主键的顺序进行仓库储存的,若无显式地在表定义时钦定主键,InnoDB 存款和储蓄引擎会为每一 行生成三个 6 字节的 ROWID,并以此作为主键。

InnoDB 存款和储蓄引擎是 MySQL 数据库最为常用的一种引擎,照片墙(Twitter)、Google、Yahoo 等 集团的功成名就接纳已经认证了 InnoDB 存款和储蓄引擎具有高可用性、高品质以致高可扩张性。对其 底层实现的主宰和清楚也急需时日和本领的积淀。假使想深切摸底 InnoDB 存款和储蓄引擎的专门的工作 原理、完成和选拔,能够参照《MySQL 手艺底细:InnoDB 存款和储蓄引擎》一书。

2、MyISAM 存款和储蓄引擎----常用

不扶植职业、表锁设计、协助全文索引,首要面向一些 OLAP 数 据库应用,在 MySQL 5.5.8 版本以前是私下认可的积存引擎(除 Windows 版本外)。数据库系统 与文件系统二个一点都不小的不如在于对业务的扶持,MyISAM 存款和储蓄引擎是不帮衬工作的。究其根 本,那也并简单通晓。顾客在装有的使用中是否都供给职业呢?在数据宾馆中,若无ETL 这一个操作,只是轻易地通过报表查询还索要职业的支撑啊?另外,MyISAM 存款和储蓄引擎的 另一个奇特的地点是,它的缓冲池只缓存(cache)索引文件,而不缓存数据文件,那与 大相当多的数据库都不平等。

3、NDB 存款和储蓄引擎

年,MySQL AB 公司从 Sony Ericsson 公司收购了 NDB 存款和储蓄引擎。 NDB 存款和储蓄引擎是四个集群存款和储蓄引擎,类似于 Oracle 的 RAC 集群,但是与 Oracle RAC 的 share everything 结构不一的是,其结构是 share nothing 的集群架构,因而能提供更高档别的 高可用性。NDB 存款和储蓄引擎的特点是数量总体位于内部存款和储蓄器中(从 5.1 版本早先,能够将非索引数 据放在磁盘上),由此主键查找(primary key lookups)的快慢相当慢,何况能够在线增多 NDB 数据存款和储蓄节点(data node)以便线性地增加数据库品质。同理可得,NDB 存款和储蓄引擎是高可用、 高品质、高可扩充性的数据库集群系统,其面向的也是 OLTP 的数据库应用类型。

4、Memory 存款和储蓄引擎----常用

正如其名,Memory 存款和储蓄引擎中的数据都寄放在内存中,数据库重 启或产生崩溃,表中的数据都将一去不返。它极其切合于积攒 OLTP 数据库应用中有的时候数据的临时表,也足以用作 OLAP 数据库应用中数据客栈的维度表。Memory 存款和储蓄引擎私下认可使用哈希 索引,并不是经常熟知的 B+ 树索引。

5、Infobright 存款和储蓄引擎

其三方的仓库储存引擎。其特点是积存是依据列而非洲开发银行的,由此极度 符合 OLAP 的数据库应用。其官方网站是 http://www.infobright.org/,上边有比很多打响的数码 饭店案例可供解析。

6、NTSE 存款和储蓄引擎

乐乎公司开垦的面向其里面选择的仓库储存引擎。前段时间的版本不援助专门的学业, 但提供压缩、行级缓存等特点,不久的以后会达成面向内部存款和储蓄器的思想政治工作援助。

7、BLACKHOLE----常用

黑洞存款和储蓄引擎,能够运用于主备复制中的分发主库。

MySQL 数据库还大概有许多此外存款和储蓄引擎,上述只是列举了极其常用的有的内燃机。借让你开心,完全可以编写制定专项于本身的引擎,那正是开源付与我们的技巧,也是开源的魔力所在。

 

点名表类型/存款和储蓄引擎

create table t1(id int)engine=innodb;# 默认不写就是innodb

 

小练习:

创办四张表,分别选拔innodb,myisam,memory,blackhole存款和储蓄引擎,实行扦插数据测量检验 

create table t1(id int)engine=innodb;
create table t2(id int)engine=myisam;
create table t3(id int)engine=memory;
create table t4(id int)engine=blackhole;

美高梅4858mgm,翻开data文件下db1数据库中的文件:

美高梅4858mgm 2

美高梅4858mgm 3

#.frm是存储数据表的框架结构

# .ibd是mysql数据文件 

#.MYD是MyISAM表的数据文件的扩展名

#.MYI是MyISAM表的索引的扩展名

#发现后两种存储引擎只有表结构,无数据

#memory,在重启mysql或者重启机器后,表内数据清空
#blackhole,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录

美高梅4858mgm 4

 

三、表介绍

表相当于文件,表中的一条记下就一定于文件的一行内容,差异的是,表中的一条记下有对应的标题,称为表的字段

美高梅4858mgm 5

id,name,sex,age,birth称为字段,其他的,一行内容称为一条记下

 

四、创建表

语法:

美高梅4858mgm 6

create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);

#注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的

美高梅4858mgm 7

1.创办数据库

create database db2 charset utf8;

2.用到数据库

use db2;

3.创建a1表

create table a1(
  id int,
  name varchar(50),
  age int(3)
);

4.插入表的笔录

insert into a1 values
(1,'mjj',18),
(2,'wusir',28);

ps:以;作为mysql的尾声

5.查询表的数据和布局

(1)查询a1表中的存款和储蓄数据

美高梅4858mgm 8

mysql> select * from a1;
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | mjj   | 18  |
| 2 | wusir | 28  |
+------+-------+------+
2 rows in set (0.02 sec)

mysql>

美高梅4858mgm 9

 

(2)查看a1表的布局

美高梅4858mgm 10

mysql> desc a1;
+-------+-------------+------+-----+---------+-------+
| Field     | Type           | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id        | int(11)        | YES  |      | NULL    |       |
| name      | varchar(50)    | YES  |      | NULL    |       |
| age       | int(3)         | YES  |      | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.16 sec)

美高梅4858mgm 11

(3)查看表的详尽结构

美高梅4858mgm 12

mysql> show create table a1G;
*************************** 1. row ***************************
       Table: a1
Create Table: CREATE TABLE `a1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  `age` int(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

美高梅4858mgm 13

6.复制表

(1)新创造贰个数据库db3

mysql> create database db3 charset utf8;
Query OK, 1 row affected (0.00 sec)

(2)使用db3

mysql> use db3;
Database changed

美高梅4858mgm 14

#这是上个创建的db2数据库中的a1表
mysql> select * from db2.a1;
+------+-------+------+
| id   | name  | age  |
+------+-------+------+
|    1 | mjj   |   18 |
|    2 | wusir |   28 |
+------+-------+------+

美高梅4858mgm 15

(3)复制db2.a1的表结构和笔录

# 这就是复制表的操作(既复制了表结构,又复制了记录)
mysql> create table b1 select * from db2.a1;
Query OK, 2 rows affected (0.03 sec)

(4)查看db3.b第11中学的数据和表结构

美高梅4858mgm 16

#再去查看db3文件夹下的b1表发现 跟db2文件下的a1表数据一样
mysql> select * from db3.b1;
+------+-------+------+
| id   | name  | age  |
+------+-------+------+
|    1 | mjj   |   18 |
|    2 | wusir |   28 |
+------+-------+------+
2 rows in set (0.00 sec)

美高梅4858mgm 17

 

ps1:借使只要表结构,不要记录

#在db2数据库下新创建一个b2表,给一个where条件,条件要求不成立,条件为false,只拷贝表结构
mysql> create table b2 select * from db2.a1 where 1>5;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

查看表结构:

美高梅4858mgm 18

# 查看表结构
mysql> desc b2;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | int(3)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

#查看表结构中的数据,发现是空数据
mysql> select * from b2;
Empty set (0.00 sec)

美高梅4858mgm 19

 

ps2:还应该有一种做法,使用like(只拷贝表结构,不拷贝记录)

美高梅4858mgm 20

mysql> create table b3 like db2.a1;
Query OK, 0 rows affected (0.01 sec)

mysql> desc b3;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | int(3)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

mysql> select * from db3.b3;
Empty set (0.00 sec)

美高梅4858mgm 21

 

7.删除表:

drop table 表名;

本文由美高梅4858官方网站发布于美高梅4858mgm,转载请注明出处:表的操作

关键词: