【MySQL 01】数据库基础

目录

1.数据库是什么

2.基本操作

数据库服务器连接操作

数据库和数据库表的创建

服务器,数据库,表关系

数据逻辑存储

3.MySQL架构

4.SQL分类

5.存储引擎


1.数据库是什么

mysql&&mysqld:

  • mysql这通常指的是 MySQL 的命令行客户端工具。 它是用户与 MySQL 数据库服务器(mysqld)进行交互的一种方式。用户可以通过 mysql 客户端工具输入 SQL 语句来查询、更新、管理数据库中的数据。mysql 客户端通过 TCP/IP 网络协议(或其他支持的协议)与 MySQL 服务器(mysqld)进行通信。

  • mysqld这是 MySQL 数据库的服务端守护进程(daemon) 。它负责处理来自客户端(如 mysql 命令行工具、图形界面客户端、应用程序等)的请求,执行 SQL 语句,并管理数据库文件的存取。mysqld 提供了数据库的核心功能,包括数据的存储、查询、索引、事务处理等。它是 MySQL 数据库系统的核心组成部分。

MySQL本质:

MySQL本质:基于C(mysql)S(mysqld)模式的一种网络服务mysql 是一套给用户提供数据存取的服务的网络程序数据库服务指的就是mysqld。

有文件为什么不用文件存储:

一般文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据内容的管理能力。(eg:比如我想在百万行的IP地址中,找出所有以127开头的IP地址,这种情况下,数据库只需要给出指定的命令就可以了,但是文件操作并没有这么方便)

数据库本质:

数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据--将来在磁盘上存储的一套数据库方案。

对数据内容存储的一套解决方案,用户给我字段或要求,数据库直接给你结果就可以。

从物理层面来看,数据库确实也是以文件的形式存储在磁盘上的。数据库管理系统(如MySQL)提供了一套高级接口(如SQL语言),mysqld就会根据SQL语言,在数据库文件中给用户做增删查改,最后将结果返回给mysqld,mysqld再将结果交给用户

数据库本质是文件。只不过 这些文件并不由程序员直接操作,而是由数据库服务帮我们进行操作的

2.基本操作


数据库服务器连接操作

登录指令:

  • -h [主机名或IP地址]:这个选项用来指定MySQL服务器的主机名或IP地址。如果您想连接到本地机器上的MySQL服务,可以省略这个选项(或者指定为127.0.0.1localhost)。

  • -P [端口号]:这个选项允许您指定MySQL服务器监听的端口号。MySQL的默认端口号是3306,如果您使用的是默认端口号,也可以省略这个选项。

  • -u [用户名]:这个选项用来指定登录MySQL服务器的用户名。如果不指定,通常会尝试以root用户身份登录。但出于安全考虑,推荐使用具有适当权限的特定用户进行连接。

  • -p:这个选项告诉mysql命令在连接时需要密码。注意,-p选项后面不需要立即跟密码,因为系统会提示您输入密码以确保密码的安全性。

bash 复制代码
mysql -h 192.168.1.100 -P 3306 -u myuser -p

数据库和数据库表的创建

在ubuntu环境下查看配置文件:

bash 复制代码
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

其中有一行:datadir = /var/lib/mysql 表示MySQL的数据库文件被存储在 /var/lib/mysql 这个目录下。

以下工作由mysql客服端让mysqld服务端做的。

1.创建数据库:

bash 复制代码
create database 数据库名;

2.列出MySQL服务器中所有的数据库。

cpp 复制代码
show databases;

这就可以看到我们刚刚创建的数据库了。

在该路径下也确实新增了 hellosql数据库的目录。

所以建立数据库,本质就是建立Linux下的一个目录。

3.使用指定的数据库

cpp 复制代码
use 数据库名;

就是用刚才的数据库

4.在数据库内创建表

bash 复制代码
create table 表名(字段1 字段1类型);

这样我们就创建好了一张表,我们可以进入hellosql目录下进行查看:所以在数据库内建立表,本质就是在Linux下创建对应的文件即可。

5.往数据库中插入数据

bash 复制代码
insert into 表名(字段名) values(值);

6.查询表中所有数据

bash 复制代码
select * from 表名;

服务器,数据库,表关系

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

数据逻辑存储

在关系型数据库中,数据以表的形式进行组织。每个表由一系列定义好的列组成,每列代表特定类型的数据,每行则包含了一条记录,代表着一组相关数据。


3.MySQL架构

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

MySQL架构大致分为以下三层:

1. 连接层

  • 功能:处理客户端与服务器之间的连接、认证和通信。
  • 关键组件:连接管理器、认证模块、SSL加密。

2. 查询层

  • 功能:解析SQL查询,优化查询计划,并调用存储引擎执行查询。
  • 关键组件:SQL解析器、查询优化器(不再包括已废弃的查询缓存)。

3. 存储引擎层

  • 功能:负责数据的存储、索引和检索。
  • 特点:插件式架构,支持多种存储引擎(如InnoDB、MyISAM、Memory等),每种引擎有其特定的功能和性能特点。

4.SQL分类

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

5.存储引擎

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

查看存储引擎:

常见存储引擎对比:

最常用的就是以下两种;

1. InnoDB

特点

  • 事务支持:支持ACID事务模型,具有提交、回滚和崩溃恢复能力。
  • 数据一致性:通过MVCC(多版本并发控制)和行级锁定,保证数据的一致性。
  • 外键支持:支持外键约束,有助于维护数据的完整性。
  • 存储方式:使用聚簇索引存储数据,表数据直接存储在主键的B+树叶节点上。

优势

  • 高可靠性和高并发性能。
  • 适用于需要事务支持和复杂查询的应用场景。

适用场景

  • 大多数应用程序场景,尤其是需要处理大量并发访问和复杂数据操作的应用。

2. MyISAM

特点

  • 非事务型:不支持事务处理。
  • 表级锁定:使用表级锁定,并发性能相对较差。
  • 全文索引:支持全文索引,适用于文本搜索。
  • 存储方式:表数据和索引分开存储,索引文件包含指向数据文件中记录的指针。

优势

  • 读取速度较快(主要指读操作),特别是全表扫描。
  • 适用于读密集型的应用场景。
相关推荐
JSON_L20 小时前
Fastadmin中实现敏感词管理
数据库·php·fastadmin
不是起点的终点21 小时前
【实战】Python 一键生成数据库说明文档(对接阿里云百炼 AI,输出 Word 格式)
数据库·python·阿里云
2301_813599551 天前
Go语言怎么做秒杀系统_Go语言秒杀系统实战教程【实用】
jvm·数据库·python
NCIN EXPE1 天前
redis 使用
数据库·redis·缓存
MongoDB 数据平台1 天前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路1 天前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家1 天前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE1 天前
开启mysql的binlog日志
数据库·mysql
yejqvow121 天前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO1 天前
nacos2.3.0 接入pgsql或其他数据库
数据库