澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:表的操作,MySQL存款和储蓄

2019-06-08 作者:数据库网络   |   浏览(155)

本节通晓

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

0六-表的操作

制造数据库

MySQL存款和储蓄引擎及其面向的数据库应用

天涯论坛已开通有一段时间,一贯有想写博客的主张,但困扰文笔及未有系统的知识分享,第二篇博客平昔拖到将来。

壹、存款和储蓄引擎(精通)

前几节大家领悟mysql中国建工业总会公司立的库===》文件夹,库中的表====》文件

现实生活中大家用来累积数据的文书有两样的体系,每一种文件类型对应各自不一样的管理机制:比如拍卖文件用txt类型,管理表格用excel,管理图片用png等

数据库中的表也理应有例外的品类,表的类型不相同,会对应mysql不一致的存取机制,表类型又称作存款和储蓄引擎。

ps: 存款和储蓄引擎说白了正是何许存款和储蓄数据、怎么着为存款和储蓄的数目建设构造目录和如何翻新、查询数据等才能的落到实处方式。因为在关周到据库中数据的存款和储蓄是以表的款式积攒的,所以存款和储蓄引擎也足以叫做表类型(即存款和储蓄和操作此表的类型)

在Oracle 和SQL Server等数据库中只有一种存款和储蓄引擎,全数数据存款和储蓄管理机制都是千篇壹律的。而MySql
数据库提供了多样积累引擎。用户能够依赖差别的须求为数据表选用分化的蕴藏引擎,用户也足以依照
和煦的须要编写制定本身的存款和储蓄引擎

澳门新萄京官方网站 1

SQL 分析器、SQL 优化器、缓冲池、存款和储蓄引擎等零件在各种数据库中都留存,但不是每一个数据库都有那般多囤积引擎。MySQL 的插件式存储引擎能够让存款和储蓄引擎层的开辟职员设 计他们期望的存款和储蓄层,举个例子,有的使用须要知足职业的渴求,有的使用则无需对作业有这 么强的供给;有的盼望多少能持久存款和储蓄,有的只希望放在内部存储器中,临时并快速地提供对数据 的查询。

 

 

  1. 语法(help create database)

 

开采职员对数据库一定不不熟悉,可是今后的各个O汉兰达M框架使得大家不太关爱数据库方面包车型大巴学识储备。今日自己就从数据库原理来享受近日学到的1部分文化。

2、mysql帮忙的累积引擎

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

 

一、InnoDB 存款和储蓄引擎

扶助职业,其陈设指标主要面向联机事务管理(OLTP)的施用。其

性格是行锁设计、支持外键,并匡助类似 Oracle 的非锁定读,即默许读取操作不会产生锁。 从 MySQL 5.伍.8版本开首是暗中认可的贮存引擎。

InnoDB 存款和储蓄引擎将数据放在二个逻辑的表空间中,那些表空间就像是黑盒同样由 InnoDB 存款和储蓄引擎本身来管理。从 MySQL 肆.一(包涵 四.壹)版本开头,能够将各种InnoDB 存款和储蓄引擎的 表单独存放到三个单身的 ibd 文件中。别的,InnoDB 存款和储蓄引擎帮助将裸设备(row disk)用 于建构其表空间。

InnoDB 通过动用多版本出现调节(MVCC)来博取高并发性,并且达成了 SQL 标准 的 四 种隔开分离等第,默感到 REPEATABLE 等级,同期采取1种名称为 netx-key locking 的政策来 幸免幻读(phantom)现象的发生。除了那些之外,InnoDB 存款和储蓄引擎还提供了插入缓冲(insert buffer)、一次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead) 等高品质和高可用的功用。

对此表中多少的蕴藏,InnoDB 存款和储蓄引擎接纳了聚众(clustered)的办法,每张表都以按 主键的次第实行仓库储存的,借使未有显式地在表定义时钦定主键,InnoDB 存款和储蓄引擎会为每一 行生成1个 陆 字节的 ROWID,并以此作为主键。

InnoDB 存款和储蓄引擎是 MySQL 数据库最为常用的一种引擎,脸书、谷歌(Google)、Yahoo 等 公司的中标使用已经表明了 InnoDB 存款和储蓄引擎具有高可用性、高品质以及高可增加性。对其 底层达成的精晓和清楚也亟需时刻和本领的积淀。借使想深刻摸底 InnoDB 存款和储蓄引擎的做事 原理、完毕和选取,能够参谋《MySQL 能力内幕:InnoDB 存款和储蓄引擎》壹书。

2、MyISAM 存款和储蓄引擎

不帮助专业、表锁设计、扶助全文索引,重要面向一些 OLAP 数 据库应用,在 MySQL 5.伍.八 版本此前是默许的蕴藏引擎(除 Windows 版本外)。数据库系统 与文件系统一个非常大的例外在于对事情的辅助,MyISAM 存储引擎是不扶助工作的。究其根 本,那也并轻便通晓。用户在享有的选择中是还是不是都须要职业呢?在数据货仓中,倘诺未有ETL 这几个操作,只是简短地经过报表查询还亟需专门的职业的支撑呢?别的,MyISAM 存款和储蓄引擎的 另三个诡异的地方是,它的缓冲池只缓存(cache)索引文件,而不缓存数据文件,那与 大许多的数据库都不平等。

叁、NDB 存款和储蓄引擎

年,MySQL AB 公司从 索尼(Sony) 埃里克sson 集团收购了 NDB 存储引擎。 NDB 存款和储蓄引擎是贰个集群存款和储蓄引擎,类似于 Oracle 的 RAC 集群,但是与 Oracle RAC 的 share everything 结构不一的是,其结构是 share nothing 的集群架构,由此能提供越来越高等别的 高可用性。NDB 存储引擎的风味是数量总体位于内部存款和储蓄器中(从 五.一 版本开端,能够将非索引数 据放在磁盘上),因而主键查找(primary key lookups)的快慢相当慢,并且能够在线增添 NDB 数据存款和储蓄节点(data node)以便线性地提升数据库质量。总来说之,NDB 存储引擎是高可用、 高质量、高可扩大性的数据库集群系统,其面向的也是 OLTP 的数据库应用项目。

肆、Memory 存款和储蓄引擎

正如其名,Memory 存款和储蓄引擎中的数据都存放在内存中,数据库重 启或产生崩溃,表中的数码都将荡然无存。它特别适合于储存 OLTP 数据库应用中如今数据的不常表,也足以当做 OLAP 数据库应用中数据饭馆的维度表。Memory 存款和储蓄引擎默许使用哈希 索引,而不是普普通通熟练的 B 树索引。

伍、Infobright 存款和储蓄引擎

其三方的积累引擎。其特点是积攒是依据列而非洲开发银行的,因而十三分 适合 OLAP 的数据库应用。其官方网站是 http://www.infobright.org/,上边有多数打响的数码 商旅案例可供剖析。

6、NTSE 存款和储蓄引擎

搜狐公司支付的面向其里面使用的积存引擎。近期的版本不扶助工作, 但提供压缩、行级缓存等天性,不久的明日会促成面向内部存款和储蓄器的政工扶助。

7、BLACKHOLE

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

MySQL 数据库还会有为数非常的多别样存款和储蓄引擎,上述只是列举了极致常用的片段电动机。倘让你喜爱,完全能够编写专门项目于自身的外燃机,那就是开源赋予我们的能力,也是开源的魅力所在。

 

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

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

 

小练习:

创造4张表,分别采用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;

查阅data文件下db1数据库中的文件:

澳门新萄京官方网站 2

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

# .ibd是mysql数据文件 

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

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

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

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

 

本节精晓

  • 存款和储蓄引擎介绍(了然)
  • 表的增加和删除改查

是因为专门的职业的须要作者有非常短1段时间必要与开垦人士举行沟通,并在要求时进行有关的养育工作。在那几个历程中,作者开掘超越1贰分之5开辟职员不明白MySQL的蕴藏引擎概念,那或者和她俩过去开辟的数据库应用如Microsoft SQL Server、Oracle、DB二等关于。而在MySQL数据库中,存款和储蓄引擎的概念体现越发主要,每种存款和储蓄引擎大概面向一种特定恐怕最优的数据库应用境遇。

博客除享受所学外,更重要的是给自个儿知识的加强。若是有畸形的地方还请指正,拍砖。

三、表介绍

表也正是文件,表中的一条记下就一定于文件的1行内容,不相同的是,表中的一条记下有对应的标题,称为表的字段

澳门新萄京官方网站 3

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

 

1、存储引擎(领会)

前几节大家掌握mysql中国建工业总集合团立的库===》文件夹,库中的表====》文件

现实生活中大家用来存款和储蓄数据的文书有分歧的类型,各个文件类型对应各自不一样的拍卖体制:比方拍卖公事用txt类型,管理表格用excel,管理图片用png等

数据库中的表也应当有例外的项目,表的项目不一样,会对应mysql不一致的存取机制,表类型又叫做存款和储蓄引擎。

ps: 存款和储蓄引擎说白了就是什么样存款和储蓄数据、怎么着为存款和储蓄的数据创设目录和怎么革新、查询数据等技术的完毕方式。因为在关全面据库中数量的囤积是以表的款型储存的,所以存款和储蓄引擎也能够称为表类型(即存款和储蓄和操作此表的花色)

在Oracle 和SQL Server等数据库中只有一种存款和储蓄引擎,全数数据存款和储蓄管理机制都以如出1辙的。而MySql
数据库提供了三种囤积引擎。用户能够根据分化的急需为数据表选取差异的仓储引擎,用户也能够依赖
投机的急需编写制定自身的囤积引擎

澳门新萄京官方网站 4

SQL 拆解分析器、SQL 优化器、缓冲池、存款和储蓄引擎等零件在每种数据库中都设有,但不是每个数据库都有那样多存款和储蓄引擎。MySQL 的插件式存款和储蓄引擎能够让存款和储蓄引擎层的开采人士设 计他们期待的存款和储蓄层,举例,有的利用必要满足专门的学业的渴求,有的利用则无需对业务有这 么强的渴求 ;有的盼望多少能坚忍不拔存款和储蓄,有的只盼望放在内部存款和储蓄器中,有的时候并飞速地提供对数据 的询问。

 

CREATE DATABASE 数据库名 charset utf8;

  www.2cto.com  

1、引言

四、创建表

语法:

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

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

壹.开立数据库

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的截止语

伍.查询表的数据和布局

(壹)查询a一表中的存款和储蓄数据

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

mysql>

 

(2)查看a一表的结构

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)

(3)查看表的事无巨细结构

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)

6.复制表

(一)新创制2个数据库db三

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

(2)使用db3

mysql> use db3;
Database changed

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

(3)复制db2.a一的表结交涉著录

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

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

#再去查看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)

 

ps一:如若假定表结构,不要记录

#在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

查看表结构:

# 查看表结构
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)

 

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

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)

 

7.删除表:

drop table 表名;

 

贰、mysql援救的积存引擎

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

 

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

援救工作,其设计指标关键面向联机事务管理(OLTP)的使用。其

个性是行锁设计、协理外键,并支持类似 Oracle 的非锁定读,即暗中同意读取操作不会时有产生锁。 从 MySQL 伍.伍.捌版本开首是暗中同意的储存引擎。

InnoDB 存款和储蓄引擎将数据放在三个逻辑的表空间中,那么些表空间就像是黑盒同样由 InnoDB 存款和储蓄引擎本身来管理。从 MySQL 4.1(包括 四.一)版本开始,能够将各个InnoDB 存款和储蓄引擎的 表单独存放到三个单身的 ibd 文件中。其余,InnoDB 存款和储蓄引擎援助将裸设备(row disk)用 于塑造其表空间。

InnoDB 通过选拔多版本出现调整(MVCC)来收获高并发性,并且完毕了 SQL 规范 的 肆 种隔开等第,默感到 REPEATABLE 等第,同期使用一种名为 netx-key locking 的计谋来 防止幻读(phantom)现象的发生。除此而外,InnoDB 存款和储蓄引擎还提供了插入缓冲(insert buffer)、三次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead) 等高品质和高可用的效率。

对于表中数据的积攒,InnoDB 存款和储蓄引擎选拔了汇聚(clustered)的方法,每张表都以按 主键的各样进行仓库储存的,倘若未有显式地在表定义时钦点主键,InnoDB 存款和储蓄引擎会为每一 行生成几个 六 字节的 ROWID,并以此作为主键。

InnoDB 存款和储蓄引擎是 MySQL 数据库最为常用的壹种引擎,Instagram、谷歌、Yahoo 等 公司的功成名就运用已经认证了 InnoDB 存款和储蓄引擎具有高可用性、高性能以及高可增加性。对其 底层完毕的牵线和明白也急需时间和本领的集合。借使想深刻摸底 InnoDB 存款和储蓄引擎的干活 原理、达成和利用,能够参照《MySQL 技能内幕:InnoDB 存款和储蓄引擎》一书。

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

不扶助工作、表锁设计、补助全文索引,首要面向一些 OLAP 数 据库应用,在 MySQL 五.五.八 版本此前是默许的贮存引擎(除 Windows 版本外)。数据库系统 与文件系统2个异常的大的比不上在于对事情的帮助,MyISAM 存款和储蓄引擎是不支持理工科程师作的。究其根 本,那也并简单理解。用户在具有的选取中是或不是都需求工作呢?在数据旅馆中,要是未有ETL 这几个操作,只是简短地经过报表查询还亟需职业的支撑呢?别的,MyISAM 存款和储蓄引擎的 另3个独特的地点是,它的缓冲池只缓存(cache)索引文件,而不缓存数据文件,这与 大多数的数据库都不平等。

三、NDB 存款和储蓄引擎

年,MySQL AB 公司从 Sony 埃里克sson 公司收购了 NDB 存储引擎。 NDB 存款和储蓄引擎是2个集群存款和储蓄引擎,类似于 Oracle 的 RAC 集群,不过与 Oracle RAC 的 share everything 结构不相同的是,其组织是 share nothing 的集群架构,由此能提供更加高端其他 高可用性。NDB 存款和储蓄引擎的本性是数据总体身处内部存储器中(从 5.一 版本起首,能够将非索引数 据放在磁盘上),由此主键查找(primary key lookups)的进度非常快,并且能够在线增添 NDB 数据存储节点(data node)以便线性地升高数据库品质。综上可得,NDB 存款和储蓄引擎是高可用、 高质量、高可扩张性的数据库集群系统,其面向的也是 OLTP 的数据库应用类型。

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

正如其名,Memory 存款和储蓄引擎中的数据都存放在内部存款和储蓄器中,数据库重 启或产生崩溃,表中的数据都将熄灭。它特别适合于积存 OLTP 数据库应用中一时数据的有时表,也可以当作 OLAP 数据库应用中数据饭店的维度表。Memory 存款和储蓄引擎私下认可使用哈希 索引,而不是普通熟谙的 B 树索引。

5、Infobright 存款和储蓄引擎

其3方的囤积引擎。其性状是储存是遵照列而非洲开发银行的,由此十三分 适合 OLAP 的数据库应用。其官网是 http://www.infobright.org/,上边有广大成功的多寡 货仓案例可供深入分析。

陆、NTSE 存款和储蓄引擎

乐乎公司支付的面向其里面使用的仓库储存引擎。近日的本子不援助职业, 但提供压缩、行级缓存等风味,不久的今日会落到实处面向内部存款和储蓄器的业务补助。

7、BLACKHOLE----常用

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

MySQL 数据库还只怕有非常多其余存款和储蓄引擎,上述只是列举了有一无二常用的局部引擎。要是你喜欢,完全能够编写制定专门项目于本人的内燃机,那正是开源赋予大家的力量,也是开源的魅力所在。

 

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

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

 

澳门新萄京官方网站:表的操作,MySQL存款和储蓄引擎及其面向的数据库应用。小练习:

创设四张表,分别选取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;

翻看data文件下db一数据库中的文件:

澳门新萄京官方网站 5

澳门新萄京官方网站 6

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

# .ibd是mysql数据文件 

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

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

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

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

澳门新萄京官方网站 7

 

二、相关库操作

  图一-1显得了MySQL数据库的系统布局,可知MySQL数据库由以下几局地构成:

     MySQL 数据库独有的插件式类别布局,存款和储蓄引擎是MySQL差别于其它数据库的1个最重大特色。存款和储蓄引擎的裨益是,每一种存款和储蓄引擎都有些的表征,能够依据实际的选拔创建分化存储引擎表。

三、表介绍

表相当于文件,表中的一条记下就也等于文件的一行内容,分化的是,表中的一条记下有相应的标题,称为表的字段

澳门新萄京官方网站 8

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

 

1 查看数据库
show databases;
show create database db1;
select database();

2 选择数据库
USE 数据库名

3 删除数据库
DROP DATABASE 数据库名;

4 修改数据库
alter database db1 charset utf8;

 

     由于 MySQL 数据库开源性格,存款和储蓄引擎可以分为二类:

四、创建表

语法:

澳门新萄京官方网站 9

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

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

澳门新萄京官方网站 10

一.创制数据库

create database db2 charset utf8;

贰.运用数据库

use db2;

澳门新萄京官方网站:表的操作,MySQL存款和储蓄引擎及其面向的数据库应用。3.创建a1表

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

四.插入表的记录

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

ps:以;作为mysql的停止语

伍.查询表的数据和组织

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

澳门新萄京官方网站 11

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

mysql>

澳门新萄京官方网站 12

 

(2)查看a1表的协会

澳门新萄京官方网站 13

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)

澳门新萄京官方网站 14

(三)查看表的详尽结构

澳门新萄京官方网站 15

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)

澳门新萄京官方网站 16

6.复制表

(一)新创制一个数据库db三

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

(2)使用db3

mysql> use db3;
Database changed

澳门新萄京官方网站 17

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

澳门新萄京官方网站 18

(叁)复制db2.a1的表结构和记录

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

(四)查看db叁.b第11中学的数据和表结构

澳门新萄京官方网站 19

#再去查看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)

澳门新萄京官方网站 20

 

ps一:如若一旦表结构,不要记录

#在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

查看表结构:

澳门新萄京官方网站 21

# 查看表结构
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)

澳门新萄京官方网站 22

 

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

澳门新萄京官方网站 23

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)

澳门新萄京官方网站 24

 

7.删除表:

drop table 表名;

2、数据仓库储存款和储蓄引擎
MySQL存款和储蓄引擎介绍

  ·连接池组件(Connection Pool)。

     第二类:MySQL 官方存款和储蓄引擎

InnoDB 存款和储蓄引擎

协助专门的学业,其安插指标首要面向联机事务管理(OLTP)的使用。其
天性是行锁设计、援救外键,并帮助类似 Oracle 的非锁定读,即暗中同意读取操作不会产生锁。 从 MySQL 伍.5.捌版本起先是暗许的囤积引擎。
InnoDB 存款和储蓄引擎将数据放在多个逻辑的表空间中,这几个表空间就像黑盒同样由 InnoDB 存款和储蓄引擎自个儿来治本。从 MySQL 4.1(包涵 ④.一)版本早先,能够将各类InnoDB 存款和储蓄引擎的 表单独存放到二个单身的 ibd 文件中。其它,InnoDB 存款和储蓄引擎协助将裸设备(row disk)用 于营造其表空间。
InnoDB 通过利用多版本出现调控(MVCC)来获得高并发性,并且完结了 SQL 标准 的 4 种隔绝品级,默以为 REPEATABLE 品级,同有时候选取1种名字为 netx-key locking 的政策来 防止幻读(phantom)现象的发生。除了那个之外,InnoDB 存款和储蓄引擎还提供了插入缓冲(insert buffer)、一遍写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead) 等高品质和高可用的法力。
对于表中多少的贮存,InnoDB 存储引擎选拔了集聚(clustered)的措施,每张表都是按 主键的逐1实行仓库储存的,尽管未有显式地在表定义时钦赐主键,InnoDB 存款和储蓄引擎会为每1 行生成1个 陆 字节的 ROWID,并以此作为主键。
InnoDB 存款和储蓄引擎是 MySQL 数据库最为常用的1种引擎,推特(TWTR.US)、谷歌(Google)、Yahoo 等 集团的中标选拔已经评释了 InnoDB 存款和储蓄引擎具备高可用性、高质量以及高可扩张性。对其 底层落成的牵线和清楚也亟需时日和本领的群集。假诺想深切摸底 InnoDB 存款和储蓄引擎的劳作 原理、完结和选拔,能够参见《MySQL 手艺内幕:InnoDB 存款和储蓄引擎》一书。

 

     第3类:第二方存储引擎 如:InnoDB

MyISAM 存储引擎

不协助专业、表锁设计、支持全文索引,首要面向一些 OLAP 数 据库应用,在 MySQL 5.伍.八 版本从前是暗中认可的蕴藏引擎(除 Windows 版本外)。数据库系统 与文件系统贰个相当的大的例外在于对作业的接济,MyISAM 存款和储蓄引擎是不扶助工作的。究其根 本,那也并简单精晓。用户在富有的行使中是或不是都急需专业呢?在数据酒馆中,如若未有ETL 那些操作,只是简短地通过报表查询还索要工作的支撑啊?其余,MyISAM 存储引擎的 另3个特殊的地点是,它的缓冲池只缓存(cache)索引文件,而不缓存数据文件,那与 大诸多的数据库都不雷同。

  ·管理服务和工具组件(Management Services &Utilities)。

 

NDB 存款和储蓄引擎

200三 年,MySQL AB 集团从 索尼 埃里克sson 公司收购了 NDB 存款和储蓄引擎。 NDB 存款和储蓄引擎是1个集群存款和储蓄引擎,类似于 Oracle 的 RAC 集群,可是与 Oracle RAC 的 share everything 结构不1的是,其组织是 share nothing 的集群架构,由此能提供更加高等其余 高可用性。NDB 存款和储蓄引擎的个性是数量总体位于内部存款和储蓄器中(从 伍.壹 版本开端,能够将非索引数 据放在磁盘上),由此主键查找(primary key lookups)的速度不慢,并且能够在线加多 NDB 数据存款和储蓄节点(data node)以便线性地提升数据库品质。总来讲之,NDB 存款和储蓄引擎是高可用、 高性能、高可扩充性的数据库集群系统,其面向的也是 OLTP 的数据库应用项目。

 

 2、各存款和储蓄引擎介绍

Memory 存款和储蓄引擎

正如其名,Memory 存款和储蓄引擎中的数据都存放在内部存款和储蓄器中,数据库重 启或发生崩溃,表中的数额都将一去不归。它非常适合于积存 OLTP 数据库应用中一时数据的有时表,也得以当作 OLAP 数据库应用中数据仓库的维度表。Memory 存款和储蓄引擎私下认可使用哈希 索引,而不是常常熟习的 B 树索引。

  ·SQL接口组件(SQL Interface)。

    二.壹 InnoDB 存款和储蓄引擎

Infobright 存款和储蓄引擎

其3方的积攒引擎。其特点是积存是依照列而非洲开发银行的,因而极度 适合 OLAP 的数据库应用。其官方网站是 http://www.infobright.org/,上边有众多成功的数码 仓库案例可供剖判。

 

          InnoDB 存款和储蓄引擎协监护人业,设计器重面向在线事务管理 (OLTP) 的利用。特点是 行锁设计、帮忙外键、并支持类似于 Oracle 的非锁定读,暗中同意读取操作不会生出锁。从 MySQL 数据库 5.5.八版本起头,InnoDB 存款和储蓄引擎是的存款和储蓄引擎。

NTSE 存款和储蓄引擎

腾讯网公司支付的面向其里面选用的囤积引擎。方今的版本不协管事人业, 但提供压缩、行级缓存等特点,不久的后天会兑现面向内部存款和储蓄器的作业帮衬。

  ·查询分析器组件(Parser)。

          InnoDB 存款和储蓄引擎将数据放在1个逻辑的表空间中,那几个表空间就好像黑盒一样由 InnoDB 存储引擎本身管理。能够将每个 InnoDB 存款和储蓄引擎的表单独置于叁个单独的 idb 文件中。

BLACKHOLE

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

MySQL 数据库还应该有十分的多别的存款和储蓄引擎,上述只是列举了但是常用的1对发动机。假让你欣赏,完全可以编写专项于自个儿的引擎,那正是开源赋予我们的工夫,也是开源的魔力所在

查看存储引擎操作

MariaDB [(none)]> show enginesG #查看全数帮助的累积引擎
MariaDB [(none)]> show variables like 'storage_engine%'; #查看正在使用的仓库储存引擎

怎么行使存款和储蓄引擎
方法一

MariaDB [db1]> create table innodb_t1(id int,name char)engine=innodb;
MariaDB [db1]> create table innodb_t2(id int)engine=innodb;
MariaDB [db1]> show create table innodb_t1;
MariaDB [db1]> show create table innodb_t2;

方法二

/etc/my.cnf
[mysqld]
default-storage-engine=INNODB
innodb_file_per_table=1

创建表

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

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

code

MariaDB [(none)]> create database db1 charset utf8;

MariaDB [(none)]> use db1;

MariaDB [db1]> create table t1(  
   -> id int, 
   -> name varchar(50),
   -> sex enum('male','female'),
   -> age int(3)
   -> );

MariaDB [db1]> show tables; #查看db1库下所有表名

MariaDB [db1]> desc t1;
 ------- ----------------------- ------ ----- --------- ------- 
| Field | Type                  | Null | Key | Default | Extra |
 ------- ----------------------- ------ ----- --------- ------- 
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
 ------- ----------------------- ------ ----- --------- ------- 

MariaDB [db1]> select id,name,sex,age from t1;
Empty set (0.00 sec)

MariaDB [db1]> select * from t1;
Empty set (0.00 sec)

MariaDB [db1]> select id,name from t1;
Empty set (0.00 sec)

往表中插数据

MariaDB [db1]> insert into t1 values
    -> (1,'egon',18,'male'),
    -> (2,'alex',81,'female')
    -> ;
MariaDB [db1]> select * from t1;
 ------ ------ ------ -------- 
| id   | name | age  | sex    |
 ------ ------ ------ -------- 
|    1 | egon |   18 | male   |
|    2 | alex |   81 | female |
 ------ ------ ------ -------- 



MariaDB [db1]> insert into t1(id) values 
    -> (3),
    -> (4);
MariaDB [db1]> select * from t1;
 ------ ------ ------ -------- 
| id   | name | age  | sex    |
 ------ ------ ------ -------- 
|    1 | egon |   18 | male   |
|    2 | alex |   81 | female |
|    3 | NULL | NULL | NULL   |
|    4 | NULL | NULL | NULL   |
 ------ ------ ------ -------- 

MySQL数据类型:
http://www.runoob.com/mysql/mysql-data-types.html

修改表

语法:
1. 修改表名
      ALTER TABLE 表名 
                          RENAME 新表名;

2. 增加字段
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…],
                          ADD 字段名  数据类型 [完整性约束条件…];
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;

3. 删除字段
      ALTER TABLE 表名 
                          DROP 字段名;

4. 修改字段
      ALTER TABLE 表名 
                          MODIFY  字段名 数据类型 [完整性约束条件…];
      ALTER TABLE 表名 
                          CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
      ALTER TABLE 表名 
                          CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

示例:

示例:
1. 修改存储引擎
mysql> alter table service 
    -> engine=innodb;

2. 添加字段
mysql> alter table student10
    -> add name varchar(20) not null,
    -> add age int(3) not null default 22;

mysql> alter table student10
    -> add stu_num varchar(10) not null after name;                //添加name字段之后

mysql> alter table student10                        
    -> add sex enum('male','female') default 'male' first;          //添加到最前面

3. 删除字段
mysql> alter table student10
    -> drop sex;

mysql> alter table service
    -> drop mac;

4. 修改字段类型modify
mysql> alter table student10
    -> modify age int(3);
mysql> alter table student10
    -> modify id int(11) not null primary key auto_increment;    //修改为主键

5. 增加约束(针对已有的主键增加auto_increment)
mysql> alter table student10 modify id int(11) not null primary key auto_increment;
ERROR 1068 (42000): Multiple primary key defined

mysql> alter table student10 modify id int(11) not null auto_increment;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

6. 对已经存在的表增加复合主键
mysql> alter table service2
    -> add primary key(host_ip,port);        

7. 增加主键
mysql> alter table student1
    -> modify name varchar(10) not null primary key;

8. 增加主键和自动增长
mysql> alter table student1
    -> modify id int not null primary key auto_increment;

9. 删除主键
a. 删除自增约束
mysql> alter table student10 modify id int(11) not null; 

b. 删除主键
mysql> alter table student10                                 
    -> drop primary key;

复制表:

复制表结构+记录 (key不会复制: 主键、外键和索引)
mysql> create table new_service select * from service;

只复制表结构
mysql> select * from service where 1=2;        //条件为假,查不到任何记录
Empty set (0.00 sec)
mysql> create table new1_service select * from service where 1=2;  
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> create table t4 like employees;

 

          InnoDB 通过动用多版本并发调整(MVCC) 来获得高并发性,并且达成了 SQL 规范的四种隔断等级,黑夜为 REPEATABLE 等级。 InnoDB 存款和储蓄引擎还提供了插入缓冲 、一遍写、自适应哈希索引、预读等高品质和高可用效用

  ·优化器组件(Optimizer)。

         对于表中数据的蕴藏,InnoDB 存款和储蓄引擎选择了集中 (clustered) 的法门,因而每张表的积累都以按主键的逐条进行存放。假设未有展现地在表定义时内定主键, InnoDB 存款和储蓄引擎会为每一行生成二个 陆 字节的 ROWID, 并以此作为主键。 

 

    贰.二 MyISAM 存款和储蓄引擎

  ·缓冲组件(Caches & Buffers)。

       MyISAM 存款和储蓄引擎不扶助工作、表锁设计,协理全文索引,首要面向一些 OLAP 数据库应用。数据库系统与文件系统相当大的3个分裂之处在于对作业的援助,然则MyISAM 存款和储蓄引擎是不帮助专门的学问的。

 

         MyISAM 存款和储蓄引擎的另七个例内地点是它的缓冲池只缓存 (cache) 索引文件,而不缓冲数据文件,那一点与大诸多的数据库都不可同日而语

  ·插件式存款和储蓄引擎(Pluggable Storage Engines)。

         MyISAM 存款和储蓄引擎表由 MYD 和 MYI 组成,MYD 用来存放数据文件, MYI 用来存放索引文件。能够由此采用myisampack 工具来更是回落数量,因而利用 myisampack 工具压缩后的表是只读的,也可以用 myisampack 来解压数据文件。

  www.2cto.com  

         在 MySQL 5.0 版本以前, MyISAM 暗许支持的表大小为 四GB,固然急需支持胜出4G,供给制订 MAX_ROWS 和 AVG_ROW_LENGTH属性。从5.0本子开首,暗中同意辅助25陆TB的单表数据。

  ·物理文件(File system)。

    2.三 NDB 存款和储蓄引擎

澳门新萄京官方网站 25

        NDB 存款和储蓄引擎是一个集群存款和储蓄引擎,类似于 Oracle 的RAC集群,与之差异的是,其结构是 share nothing 的集群架构,由此能提供更加高的可用性。

 

          特点:a. 数据总体身处内部存款和储蓄器中,由此主键查找速度比非常快,并且经过加NDB 数据存储节点能够线性地升高数据库品质,是高可用、高品质的集群系统。

图 一-1MySQL数据库的系统布局

          注意:NDB 存款和储蓄引擎的连年操作 (JOIN) 是在 MySQL 数据库层达成的, 不是在存款和储蓄引擎层完毕。意味着复杂的连接操作供给巨大的网络支付,因而查询速度相当的慢。

  SQL深入分析器、SQL优化器、缓冲池、存款和储蓄引擎等零件在各类数据库中都设有,但不是各类数据库都有诸如此类多存储引擎。MySQL的插件式存款和储蓄引擎可以让存款和储蓄引擎层的开辟人士设计他们盼望的存款和储蓄层,比方,有的利用供给满意工作的须求,有的利用则无需对事务有这么强的要求;有的盼望多少能坚定不转移存入款和储蓄,有的只期待放在内存中,不经常并快捷地提供对数码的查询。上边将介绍MySQL数据库中有的常用的仓库储存引擎及它们面向的数据库应用。

 

 

    别的存储引擎这里就不一一介绍,有意思味的童鞋能够透过  MySQL 技能内幕 中通晓

  InnoDB存款和储蓄引擎:

 

  援助专业,其安插目的首要面向联机事务管理(OLTP)的施用。其特色是行锁设计、帮助外键,并扶助类似Oracle的非锁定读,即暗中认可读取操作不会爆发锁。从MySQL 伍.5.捌本子早先是私下认可的贮存引擎。

    总括:每个存款和储蓄引擎的贯彻都不壹致,MYSQL 数据的设计思想和储存引擎的关联需要数据库设计者权衡。

 

    查看当前MYSQL 数据库所辅助的存款和储蓄引擎命令: show engings

  InnoDB存储引擎将数据放在1个逻辑的表空间中,那一个表空间就如黑盒一样由InnoDB存款和储蓄引擎本人来治本。从MySQL 四.一(包含四.一)版本开头,能够将各个InnoDB存储引擎的表单独存放到二个独立的ibd文件中。其余,InnoDB存款和储蓄引擎支持将裸设备(row disk)用于建立其表空间。

 

  InnoDB通过运用多版本现身调控(MVCC)来赢得高并发性,并且完成了SQL标准的四种隔开分离等第,默以为REPEATABLE等级,同一时候使用①种名字为netx-key locking的攻略来制止幻读(phantom)现象的爆发。除了那一个之外,InnoDB存款和储蓄引擎还提供了插入缓冲(insert buffer)、一次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高质量和高可用的服从。

 

  对于表中数据的存款和储蓄,InnoDB存款和储蓄引擎接纳了聚众(clustered)的秘籍,每张表都以按主键的逐条进行仓库储存的,即便没有显式地在表定义时钦点主键,InnoDB存款和储蓄引擎会为每一行生成三个陆字节的ROWID,并以此作为主键。

  www.2cto.com  

  InnoDB存款和储蓄引擎是MySQL数据库最为常用的一种引擎,Facebook、谷歌、Yahoo等厂商的功成名就运用已经表明了InnoDB存储引擎具有高可用性、高品质以及高可扩大性。对其底层完毕的支配和透亮也急需时日和本领的集结。如果想深刻摸底InnoDB存款和储蓄引擎的干活规律、完结和利用,能够参照《MySQL本事内幕:InnoDB存款和储蓄引擎》壹书。

  MyISAM存款和储蓄引擎:

 

  不帮助专门的学业、表锁设计、帮助全文索引,首要面向一些OLAP数据库应用,在MySQL 伍.伍.8版本在此以前是暗中同意的蕴藏引擎(除Windows版本外)。数据库系统与文件系统七个非常的大的不如在于对工作的支撑, MyISAM存款和储蓄引擎是不扶助工作的。究其根本,那也并轻松精通。用户在富有的运用中是还是不是都急需职业呢?在数据旅舍中,假如未有ETL这么些操作,只是简短地通过报表查询还索要专业的支撑啊?其余,MyISAM存款和储蓄引擎的另多少个特别的地点是,它的缓冲池只缓存(cache)索引文件,而不缓存数据文件,那与抢先四分之二的数据库都不雷同。

 

  NDB存款和储蓄引擎:

  200叁年,MySQL AB集团从索尼(Sony) 埃里克sson公司收购了NDB 存款和储蓄引擎。NDB存储引擎是一个集群存储引擎,类似于Oracle的RAC集群,但是与Oracle RAC的 share everything结构不1的是,其布局是share nothing的集群架构,由此能提供更加高端别的高可用性。NDB存款和储蓄引擎的特征是数据总体身处内部存款和储蓄器中(从伍.壹版本初阶,可以将非索引数据放在磁盘上),因而主键查找(primary key lookups)的速度比十分的快,并且能够在线增添NDB数据存款和储蓄节点(data node)以便线性地做实数据库质量。综上可得,NDB存款和储蓄引擎是高可用、高质量、高可扩张性的数据库集群系统,其面向的也是OLTP的数据库应用项目。

 

  Memory存款和储蓄引擎:

  正如其名,Memory存款和储蓄引擎中的数据都存放在内部存款和储蓄器中,数据库重启或爆发崩溃,表中的多少都将不复存在。它特别适合于存储OLTP数据库应用中临时数据的有时表,也得以作为OLAP数据库应用中数据旅舍的维度表。Memory存款和储蓄引擎暗中同意使用哈希索引,而不是一般熟习的B 树索引。

  www.2cto.com  

  Infobright存储引擎:

  第二方的贮存引擎。其特征是累积是根据列而非洲开发银行的,因而特别适合OLAP的数据库应用。其官网是

 

  NTSE存款和储蓄引擎:

  知乎集团费用的面向在那之中间采纳的贮存引擎。方今的版本不协助专业,但提供压缩、行级缓存等特点,不久的现在会促成面向内部存款和储蓄器的政工扶助。

  MySQL数据库还应该有十分的多其它存款和储蓄引擎,上述只是列举了最为常用的一些引擎。若是你喜欢,完全能够编制专门项目于自个儿的发动机,那就是开源赋予大家的力量,也是开源的魔力所在。

 

 

本文来源于腾讯网网

由于专门的学业的需求笔者有相当短1段时间必要与开荒人士实行关联,并在要求时展开有关的养育工作。在那...

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站:表的操作,MySQL存款和储蓄

关键词: