MySQL数据库的基本操作及存储引擎的使用

Posted 猿童学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库的基本操作及存储引擎的使用相关的知识,希望对你有一定的参考价值。

        大家好呀!我是猿童学🐵,最近在学习mysql数据库,给初学者分享一些知识,也是学习的总结,关注我将会不断地更新数据库知识,也欢迎大家指点一二🌹。

 

目录

一、常用的MySQL语句

二、创建一个数据库

三、存储引擎

1、常用的存储引擎介绍

【1】InnoDB存储引擎

【2】MyISAM存储引擎

【3】MEMORY存储引擎

2、查看存储引擎

【1】查看存储引擎

【2】查看表使用的存储引擎

3、修改存储引擎

4、选择存储引擎


一、常用的MySQL语句

先来学习一些基本的sql语句来进行操作吧。

经常使用的语句
1.show databases; 查看所有的数据库
2.create database test; 创建一个叫test的数据库
3.drop database test;删除一个叫test的数据库
4.use test;选中库 ,在建表之前必须要选择数据库
5.show tables; 在选中的数据库之中查看所有的表
6.create table 表名 (字段1 类型, 字段2 类型);
7.desc 表名;查看所在的表的字段
8.drop table 表名; 删除表
9.show create database 库名;查看创建库的详细信息
10.show create table 表名; 查看创建表的详细信息

当我们安装 MySQL 8.0 并初始化数据库之后,默认会创建以下系统数据库:

查询Mysql服务器中的数据库。

> show databases;

  • mysql:存储了 MySQL 服务器正常运行所需的各种信息。
  • information_schema:提供了访问数据库元数据的各种视图,包括数据库、表、字段类型以及访问权限等。
  • performance_schema:为 MySQL 服务器的运行时状态提供了一个底层的监控功能。
  • sys:包含了一系列方便 DBA 和开发人员利用 performance_schema 性能数据库进行性能调优和诊断的视图。

二、创建一个数据库

1、创建数据库;

create database 库名; 

2、查看数据库;

show databases;

3、选择数据库;

use 目标库;

4、修改数据库;

alter table 表名 add 列名 数据类型

5、删除数据库;

drop database 库名;

三、存储引擎

        在Mysql中提供了多种存储引擎,可以根据不同的需求为表选择不同的存储引擎,也可

以根据自己的需求来编程自己的存储引擎。

1、常用的存储引擎介绍

【1】InnoDB存储引擎

InnoDB是事务型数据库的首选引擎,InnoDB是目前MYSQL的默认事务型引擎,是目前最重要、使用最广泛的存储引擎。支持事务安全表(ACID),支持行锁定和外键。InnoDB主要特性有:

(1)InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合

(2)InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的

(3)InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件)。这与MyISAM表不同,比如在MyISAM表中每个表被存放在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上

(4)InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键

(5)InnoDB被用在众多需要高性能的大型数据库站点上

InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。

场景:由于其支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
 

【2】MyISAM存储引擎

MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物和外键。

MyISAM主要特性有:

(1)大文件(达到63位文件长度)在支持大文件的文件系统和操作系统上被支持

(2)当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成

(3)每个MyISAM表最大索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16

(4)最大的键长度是1·000字节,这也可以通过编译来改变,对于键长度超过250字节的情况,一个超过1024字节的键将被用上

(5)BLOB和TEXT列可以被索引,支持FULLTEXT类型的索引,而InnoDB不支持这种类型的索引

(6)NULL被允许在索引的列中,这个值占每个键的0~1个字节

(7)所有数字键值以高字节优先被存储以允许一个更高的索引压缩

(8)每个MyISAM类型的表都有一个AUTO_INCREMENT的内部列,当INSERT和UPDATE操作的时候该列被更新,同时AUTO_INCREMENT列将被刷新。所以说,MyISAM类型表的AUTO_INCREMENT列更新比InnoDB类型的AUTO_INCREMENT更快

(9)可以把数据文件和索引文件放在不同目录

(10)每个字符列可以有不同的字符集

(11)有VARCHAR的表可以固定或动态记录长度

(12)VARCHAR和CHAR列可以多达64KB
 

【3】MEMORY存储引擎

MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。MEMORY主要特性有:

(1)MEMORY表的每个表可以有多达32个索引,每个索引16列,以及500字节的最大键长度

(2)MEMORY存储引擎执行HASH和BTREE缩影

(3)可以在一个MEMORY表中有非唯一键值

(4)MEMORY表使用一个固定的记录长度格式

(5)MEMORY不支持BLOB或TEXT列

(6)MEMORY支持AUTO_INCREMENT列和对可包含NULL值的列的索引

(7)MEMORY表在所由客户端之间共享(就像其他任何非TEMPORARY表)

(8)MEMORY表内存被存储在内存中,内存是MEMORY表和服务器在查询处理时的空闲中,创建的内部表共享

(9)当不再需要MEMORY表的内容时,要释放被MEMORY表使用的内存,应该执行DELETE FROM或TRUNCATE TABLE,或者删除整个表(使用DROP TABLE)

MEMORY存储引擎默认使用哈希(HASH)索引,其速度比使用B-+Tree型要快,但也可以使用B树型索引。由于这种存储引擎所存储的数据保存在内存中,所以其保存的数据具有不稳定性,比如如果mysqld进程发生异常、重启或计算机关机等等都会造成这些数据的消失,所以这种存储引擎中的表的生命周期很短,一般只使用一次。现在mongodb、redis等NOSQL数据库愈发流行,MEMORY存储引擎的使用场景越来越少。

场景:如果需要该数据库中一个用于查询的临时表。

2、查看存储引擎

【1】查看存储引擎

show engines;

【2】查看表使用的存储引擎

 方法1不进入库查看:
show table status from 库名 where name='表名'\\G
示例:
show table status from school where name='info'\\G
方法2进入库查看:
use 库名;
show create table 表名;
示例:
use school
show create table info;

3、修改存储引擎

方法1:
use 库名;
alter table 表名 engine=myisam;
示例:
use school;
alter table info engine=myisam;
show create table info;
方法2:通过修改/etc/my.cnf 配置文件,指定默认存储引擎并重启服务
vim letc/ my . cnf
[mysqld]
default-storage-engine=INNODB
systemctl restart mysqld.service修改完记得重启mysql服务
#注意:此方法只对修改了配置文件并重启mysql服务后新创建的表有效,已经存在的表不会有变更。
方法3:通过create table 创建表时指定存储引擎
use 库名;
create table 表名(字段1数据类型,...) engine=MyISAM;
例: mysql -u root -p
use SCHOOL;
create table hellolic (name varchar (10),age char (4 ), engine=myisam);

4、选择存储引擎

功能MYISAMMemorylnnoDB
存储限制256TBRAM64TB
支持事物NoNoYes
支持全文索引YesNoNo
支持数索引YesYesYes
支持哈希索引NoYesNo
支持数据缓存NoNAYes
支持外键NoNoYes

以上是关于MySQL数据库的基本操作及存储引擎的使用的主要内容,如果未能解决你的问题,请参考以下文章

存储引擎,MySQL中的数据类型及约束

MySQL数据库的基本操作及存储引擎的使用

mysql存储引擎及索引类型都有哪些

MySQL之表的基本操作及存储引擎和数据类型

MYSQL 表大小限制

MySQL-存储引擎基础