MySQL数据库基础


img

MySQL数据库基础

1、数据库概念

数据库(Database)是一个组织化的集合,用于存储、管理和检索数据。它使用数据库管理系统(DBMS)来提供这些功能。数据库的设计旨在高效、安全地处理大量数据,并支持多用户环境中的并发访问。

为什么是使用数据库,直接使用文件保存数据有什么弊端吗?

使用文件保存数据虽然简单,但存在以下几个缺点:

  • 数据冗余和不一致性:在文件系统中,同一数据可能会被存储在多个文件中,导致数据冗余。这会导致数据不一致性,因为不同文件中的数据可能会发生冲突。

  • 难以管理和检索:文件系统没有结构化的数据存储和检索机制。要找到特定的数据,需要遍历文件或使用复杂的自定义程序。

  • 数据完整性和安全性:文件系统难以保证数据的完整性和安全性,尤其是在多用户环境中。数据库提供了事务管理、数据加密和访问控制等功能来确保数据的完整性和安全性。

  • 并发访问问题:文件系统对并发访问支持较差,多用户同时访问和修改同一个文件时可能会出现数据冲突和丢失。数据库系统通过锁机制和事务管理来解决并发访问问题。

  • 数据备份和恢复:文件系统的备份和恢复操作通常比较复杂,容易出错。而数据库系统提供了更简便和可靠的数据备份和恢复机制。

  • 数据关系处理:文件系统难以处理复杂的数据关系。例如,要表示一对多或多对多的关系,文件系统需要额外的设计和实现。而关系型数据库通过表和外键等机制,能够更自然地表示和操作数据关系。


2、主流数据库

  1. MySQL
  • 开源关系型数据库管理系统
  • 广泛用于Web开发
  • 支持多种存储引擎,如InnoDB和MyISAM
  1. PostgreSQL
  • 功能强大的开源关系型数据库
  • 支持高级SQL功能和扩展,如窗口函数和CTE
  • 高度可扩展,支持多种数据类型和自定义函数
  1. Oracle Database
  • 商业化的高性能关系型数据库
  • 广泛应用于企业级应用
  • 支持大量高级功能,如分区、并行执行和高级安全性
  1. Microsoft SQL Server
  • 微软提供的关系型数据库
  • 集成于Windows服务器环境中
  • 提供强大的BI工具和分析服务
  1. MongoDB
  • 文档型NoSQL数据库
  • 使用JSON风格的文档存储数据
  • 灵活且易扩展,适合处理非结构化数据
  1. Redis
  • 基于内存的键值存储NoSQL数据库
  • 性能极高,常用于缓存和实时数据处理
  • 支持多种数据结构,如列表、集合和有序集合
  1. SQLite
  • 轻量级的嵌入式关系型数据库
  • 广泛用于移动应用和小型项目
  • 自包含的数据库引擎,无需独立服务器
  1. Cassandra
  • 分布式的列存储NoSQL数据库
  • 擅长处理大量数据和高吞吐量
  • 高可用性和无单点故障设计,适用于大规模分布式系统

这些数据库在不同的应用场景中表现出色,选择合适的数据库需要考虑具体的需求、数据特性和系统架构。


3、数据库使用

这里和后面的博客我们主要以MySQL讲解为主。

3.1、MySQL的安装

MySQL的安装


3.2、连接数据库

命令行输入:mysql -h 127.0.0.1 -P 3306 -u root -p

如果没有写 -h 127.0.0.1 默认是连接本地

如果没有写 -P 3306 默认是连接3306端口号

注意:刚开始没有设置密码的时候,直接回车是进入不了数据库的!

因此我们一般刚开始学的时候,命令行输入:mysql -uroot -p,然后回车就行!


3.3、服务器、数据库、表关系

  • 服务器(Server)

  • 服务器是指运行数据库管理系统(DBMS)的物理或虚拟机器。

  • 它提供计算资源、存储空间和网络连接,支持数据库操作。

  • 服务器可以托管多个数据库实例,每个实例可以运行独立的DBMS服务。

  • 数据库(Database)

  • 数据库是服务器上的一个逻辑容器,用于存储和管理数据。

  • 每个数据库包含多个表、视图、存储过程、触发器和其他数据库对象。

  • 数据库提供数据的组织、存储、检索和管理功能。

  • 一个服务器上可以有多个数据库,分别用于不同的应用或用户。

  • 表(Table)

  • 表是数据库中的一个基本存储结构,用于存放结构化的数据。

  • 表由行和列组成,每一行代表一个记录,每一列代表一个字段或属性。

  • 表定义了数据的模式(schema),包括字段名称、数据类型和约束条件(如主键、外键、唯一性约束等)。

  • 表之间可以通过外键建立关系,实现数据的关联和联接操作。

关系示意图

以下是服务器、数据库和表之间关系的示意图:

服务器 (Server)
│
├── 数据库1 (Database1)
│   ├── 表1 (Table1)
│   ├── 表2 (Table2)
│   └── 表3 (Table3)
│
├── 数据库2 (Database2)
│   ├── 表A (TableA)
│   ├── 表B (TableB)
│   └── 表C (TableC)
│
└── 数据库3 (Database3)
   ├── 表X (TableX)
   ├── 表Y (TableY)
   └── 表Z (TableZ)


3.4、使用案例

  • 创建数据库:
create database test;
  • 使用数据库:
use test;
  • 创建表结构:
create table t1(
    name varchar(20),
    id int
	);
  • 查询表中所有的数据:
select * from t1;
  • 示意图:


3.5、数据存储逻辑


4、MySQL的架构

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


5、SQL分类

SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系型数据库的标准语言。SQL语句可以根据其功能和用途分为几类,主要包括以下几种:

  1. 数据定义语言(DDL - Data Definition Language):DDL 用于定义数据库结构和对象,包括创建、修改和删除数据库中的表、索引、视图等。
  • 代表指令:create、alter、drop、truncate
  1. 数据操作语言(DML - Data Manipulation Language):DML 用于对数据库中的数据进行查询、插入、更新和删除操作。
  • 代表指令:select、insert、update、delete
  1. 数据控制语言(DCL - Data Control Language):DCL 用于控制数据库的访问权限和安全性。
  • 代表指令:grant、revoke
  1. 事务控制语言(TCL - Transaction Control Language):TCL 用于管理数据库中的事务,保证数据的一致性和完整性。
  • 代表指令:commit、rollback、savepoint、release savepoint、set transaction
  1. 数据查询语言(DQL - Data Query Language):DQL 是一个特定子集,用于查询数据库中的数据,主要是 SELECT 语句。
  • 代表指令:select

  • 尽管 DQL 通常被视为 DML 的一部分,但它的重要性使其在某些文献中被单独列出


6、存储引擎

6.1、存储引擎概念

存储引擎(Storage Engine)是数据库管理系统(DBMS)用于存储、管理和检索数据的底层软件组件。不同的存储引擎提供不同的存储机制、索引技术、锁机制和其他功能。使用不同的存储引擎,数据库系统可以根据应用需求进行优化,以提高性能、可靠性和可扩展性。

在MySQL中,存储引擎是可插拔的,这意味着同一个数据库实例中的不同表可以使用不同的存储引擎。

MySQL的核心就是插件式存储引擎,支持多种存储引擎


6.2、查看存储引擎

show engines;


6.3、存储引擎对比


OKOK,MySQL数据库基础就到这里,如果你对Linux和C++也感兴趣的话,可以看看我的主页哦。下面是我的github主页,里面记录了我的学习代码和leetcode的一些题的题解,有兴趣的可以看看。

Xpccccc的github主页

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xpccccc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值