【MySQL数据库基础】

2023-12-28 15:41:13

1 什么是数据库

存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

数据库存储介质:

  • 磁盘
  • 内存

为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标

2. 主流数据库

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电
    商,SNS,论坛。对简单的SQL处理效果好。
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
    关系型数据库是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为数据库架构的主流模型。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

那么上文提到的关系型数据库是什么呢?

关系型数据库是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为数据库架构的主流模型。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

关系型数据库以行和列的形式存储数据,以便于用户理解,这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。常用的关系型数据库有Oracle、SqlServer、Informix、MySql、SyBase等。

总的来说,关系型数据库是一个基于关系模型的数据库,它通过表格的形式组织数据,并提供了一套完整的操作和管理数据的方法

3. 基本使用

3.1MysQL的基本安装

MySQL的基本安装博客很多,在这里不在赘述,可参考其中的许多优秀作品:

3.2 连接服务器

输入:mysql -h 你的服务器ip地址 -P 3306 -u root -p
输出:

Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21-log MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

注意:
如果没有写 -h 127.0.0.1 默认是连接本地
如果没有写 -P 3306 默认是连接3306端口号

3.3 服务器管理

  • 执行 win+r 输入 services.msc 打开服务管理器
  • 通过下图左侧停止,暂停,重启动按钮进行服务管理
    在这里插入图片描述

3.4 服务器,数据库,表关系

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
  • 数据库服务器、数据库和表的关系如下:
    在这里插入图片描述

3.5 使用案例

  • 创建数据库
create databases helloworld;
  • 使用数据库
use helloworld
  • 创建数据库表
create table student
(
  id int,
  name varchar(32),
  gender varchar(2)
);
  • 表中插入数据
insert into student (id,name,gender) values(1,'张无忌','男');
insert into student (id,name,gender) values(2,'李云龙','女');
insert into student (id,name,gender) values(3,'王德发','男');
  • 查询表中的数据
select * from student;

在这里插入图片描述

4 MySQL架构

MySQL 是一个可移植的数据库几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、
Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
在这里插入图片描述

5 SQL分类

  • DDL【data definition language】 数据定义语言,用来维护存储数据的结构,代表指令: create, drop, alter
  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作,代表指令: insert,delete,update
    • DML中又单独分了一个DQL(Data Query Language),数据查询语言,代表指令: select
  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
    代表指令: grant,revoke,commit

6 存储引擎

6.1 存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。

6.2 查看存储引擎

show engines;

在这里插入图片描述
MySQL中的存储引擎是用于存储、检索和管理数据的软件组件。不同的存储引擎提供了不同的性能、功能和适用场景。以下是MySQL中常见的存储引擎及其特点的详细介绍:

  1. InnoDB:

    • 事务支持: 支持ACID事务,提供了事务的完整性和并发控制。
    • 行级锁定: 支持行级锁定,提供了更好的并发性能。
    • 外键支持: 支持外键约束,有助于维护数据完整性和引用完整性。
    • MVCC (多版本并发控制): 支持MVCC,提供了非阻塞读取操作,提高了并发性能。
    • 崩溃恢复: 提供崩溃恢复功能,确保数据在系统崩溃后能够恢复。
    • 全文搜索: 不直接支持全文搜索,但可以通过外部插件如Sphinx实现。
    • 性能: 通常提供较好的并发性能和崩溃恢复能力。
    • 默认存储引擎: 在MySQL 5.5之后成为默认存储引擎。
  2. MyISAM:

    • 事务支持: 不支持事务处理。
    • 行级锁定: 只支持表级锁定,不支持行级锁定。
    • 外键支持: 不支持外键约束。
    • MVCC: 不支持。
    • 崩溃恢复: 需要定期运行REPAIR TABLE命令进行修复。
    • 全文搜索: 支持全文索引,提供了文本搜索功能。
    • 性能: 在只读操作中表现较好,但在高并发写入的场景下可能不如InnoDB。
  3. Memory (或HEAP引擎):

    • 事务支持: 不支持事务处理。
    • 行级锁定: 不支持行级锁定,只支持表级锁定。
    • 外键支持: 不支持外键约束。
    • MVCC: 不支持。
    • 崩溃恢复: 数据存储在内存中,数据在数据库重启后会丢失。通常用于缓存等临时存储场景。
    • 性能: 非常快,因为数据存储在内存中。但重启后数据会丢失。
  4. CSV:

    • 事务支持: 不支持事务处理。
    • 行级锁定: 不支持行级锁定,只支持表级锁定。
    • 外键支持: 不支持外键约束。
    • MVCC: 不支持。
    • 崩溃恢复: 依赖于文件系统的事务支持。通常用于需要大量数据分析的场景,因为数据可以轻松地被外部程序读取和写入。
  5. Archive:

    • 事务支持: 不支持事务处理。
    • 行级锁定: 不支持行级锁定,只支持表级锁定。
    • 外键支持: 不支持外键约束。
    • MVCC: 不支持。
    • 崩溃恢复: 简化的恢复算法,用于存档和压缩大量数据。通常用于存储和检索大量的归档数据或日志数据。
  6. Blackhole:

    • 事务支持: 不支持事务处理。
    • 行级锁定: 不支持行级锁定,只支持表级锁定。
    • 外键支持: 不支持外键约束。
    • MVCC: 不支持。不存储数据,常用于复制和分区的场景,可以将数据“吸”进黑洞中,然后从另一个实例中“吐”出来。
  7. Federated:

    • 事务支持: 依赖于远程服务器的事务支持。
    • 行级锁定: 依赖于远程服务器的事务支持。
    • 外键支持: 依赖于远程服务器的事务支持。
    • MVCC: 依赖于远程服务器的事务支持。常用于跨多个MySQL实例的数据集成和联邦查询。允许用户通过统一的数据库界面访问多个远程数据库中的数据,如同在一个数据库中一样。它提供了透明的数据访问方式,无需了解远程数据库的细节信息。通过Federated存储引擎,可以实现数据的集中管理和查询优化,提高数据整合和查询效率。

文章来源:https://blog.csdn.net/qq_51536567/article/details/135261075
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。