03_MySQL数据库的基本操作

1.创建数据库

MySQL安装好之后,首先需要创建数据库,这是使用MySQL各种功能的前提。本章将详细介绍数据库的基本操作,主要内容包括:创建数据库,删除数据库,不同类型的数据库存储引擎和存储引擎的选择。
MySQL安装完成之后,将会在其data目录下自动创建几个必须的数据库,可以使用‘show databases;’语句来查看当前所有存在的数据库 如下:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| mytest             |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

可以看到,数据库列表中包含了4个数据库,mysql是必需的,它描述用户访问权限,用户经常利用mytest数据库做测试的工作,其他数据库将在后面章节介绍。
创建数据库是在系统磁盘上划分一块区域用于数据库的存储和管理,如果管理员在设置权限的时候为用户创建了数据库,则可以直接使用,否则,需要自己创建数据库。
//MySQL中创建数据库的基本sql语句格式为:

CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <
字符集名>] [[DEFAULT] COLLATE <校对规则名>];

解释:

  • <数据库名>:创建数据库的名称。MySQL的数据库存储将以目方式表示MySQL数据库,因此数据库名称必须符合操作系统的文件名规则,注意在MySQL中不区分大小写。
  • IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
  • [DEFAULT] CHARACTER SET:指定数据库默认字符集。
mysql> create database db_test1 character set gb2312;  //字符集为gb2312
Query OK, 1 row affected (0.01 sec)

mysql> show create database db_test1;          //查看数据库字符集
+----------+---------------------------------------------------------------------+
| Database | Create Database                                                     |
+----------+---------------------------------------------------------------------+
| db_test1 | CREATE DATABASE `db_test1` /*!40100 DEFAULT CHARACTER SET gb2312 */ |
+----------+---------------------------------------------------------------------+
1 row in set (0.00 sec)

2.删除数据库

删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一起被删除。删除数据库语句和创建数据库的命令相似,MySQL中删除数据库的基本语法格式为:

DROP DATABASE database_name;

解释:“database_name”为要删除的数据库的名称,如果指定的数据库不存在,则删除出
错。

mysql> drop database db_test1;
Query OK, 0 rows affected (0.00 sec)

3.1 数据库存储引擎

数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎提,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。

3.2 MySQL存储引擎简介

MySQL提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在MySQL中,不需要在整个服务器中使用一种引擎,针对具体要求可以对每个表使用不同的存储引擎。MySQL5.5支持的存储引擎有:InnoDB、MyISAM Memory等。
//查看引擎的命令:

mysql> show engines\g
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

//查看默认存储引擎

mysql> show variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)


一、存储引擎简介

  1. 存储引擎说⽩了就是数据存储的格式,不同的存储引擎功能不同,占⽤的空间⼤⼩不同,读取性能也不同
  2. 数据库存储引擎是数据库底层软件组件,不同的存储引擎提供不同的存储机制
  3. 在 MySQL 中,不需要在整个服务器中使⽤同⼀种存储引擎,可以对每⼀个表使⽤不同的存储引擎
  4. MySQL ⽀持多种存储引擎,如 InnoDB 、MyISAM 、Memory 、Merge 、Archive 、CSV 、Federated 等等

MyISAM 存储引擎特点:
5. MySQL 5.5 之前使⽤ MyISAM 引擎,MySQL 5.5 之后使⽤ InnoDB 引擎
6. MyISAM 引擎读取速度较快,占⽤资源相对较少,不⽀持事务,不⽀持外键约束,但⽀持全⽂索引
7. 读写互相阻塞,也就是说读数据的时候你就不能写数据,写数据的时候你就不能读数据
8. MyISAM 引擎只能缓存索引,⽽不能缓存数据

MyISAM 适⽤场景:

  1. 不需要事务⽀持的业务,例如转账就不⾏
  2. 适⽤于读数据⽐较多的业务,不适⽤于读写频繁的业务
  3. 并发相对较低、数据修改相对较少的业务
  4. 硬件资源⽐较差的机器可以考虑使⽤ MyISAM 引擎

InnoDB 存储引擎特点:

扫描二维码关注公众号,回复: 12740698 查看本文章
  1. 事务型数据库的⾸选引擎,⽀持事务安全表,⽀持⾏锁定和外键,MySQL
    5.5.5 版本之后,InnoDB 作为默认存储引擎
  2. 具有提交、回滚和崩溃恢复能⼒的事务安全存储引擎,能处理巨⼤数据量,性
    能及效率⾼,完全⽀持外键完整性约束
  3. 具有⾮常⾼效的缓存特性,能缓存索引也能缓存数据,对硬件要求⽐较⾼
  4. 使⽤ InnoDB 时,将在 MySQL 数据⽬录下创建⼀个名为 ibdata1 的 10MB ⼤⼩的⾃动扩展数据⽂件,以及两个名为 ib_logfile0 和 ib_logfile1 的 5MB ⼤⼩的⽇志⽂件

InnoDB 适⽤场景:

  1. 需要事务⽀持的业务、⾼并发的业务
  2. 数据更新较为频繁的场景,⽐如 BBS、SNS、微博等
  3. 数据⼀致性要求较⾼的业务,⽐如充值转账、银⾏卡转账

Memory 存储引擎特点:

1.Memory 存储引擎将表中的数据存储到内存中,为查询和引⽤其他表数据提供快速访问
2. Memory 存储引擎执⾏ HASH 和 BTREE 索引,不⽀持 BLOB 和 TEXT 列,⽀持 AUTO_INCREMENT 列和对可包含 NULL 值得列的索引
3. 当不再需要 Memory 表的内容时,要释放被 Memory 表使⽤的内存,应该执⾏DELETE FROM 或 TRUNCATE TABLE ,或者删除整个表

二、存储引擎的选择

  1. 如果要提供提交、回滚和崩溃恢复能⼒的事务安全能⼒,并要求实现并发控
    制,InnoDB 是个很好的选择
  2. 如果数据表主要⽤来插⼊和查询记录,则 MyISAM 引擎能提供较⾼的处理效率
  3. 如果只是临时存放数据,数据量不⼤,并且不需要较⾼的安全性,可以选择将
    数据保存在内存中的 Memory 引擎,MySQL 使⽤该引擎作为临时表,存放查
    询的中间结果
  4. 如果只有 INSERT 和 SELECT 操作,可以选择 Archive 引擎,⽀持⾼并发的插
    ⼊操作,如记录⽇志信息可以使⽤ Archive 引擎

拓展:
在mysql中,每个数据库最多可创建20亿个表,⼀个表允许定义1024列,每⾏的最⼤⻓度为8092字节(不包括⽂本和图像类型的⻓度)。当表中定义有varchar、nvarchar或varbinary类型列时,如果向表中插⼊的数据⾏超过8092字节时将导致语句失败,并产⽣错误信息。SQL Server对每个表中⾏的数量没有直接限制,但它受数据库存储空间的限制。每个数据库的最⼤空间1048516TB,所以⼀个表可⽤的最⼤空间为1048516TB减去数据库类系统表和其它数据库对象所占⽤的空间。理论上⽆限⼤ 就看你硬⽚够不够⼤ ⼤多数情况先是你的硬⽚不够。

猜你喜欢

转载自blog.csdn.net/weixin_45310323/article/details/109982697
今日推荐