【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

特点

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

优势

  • 读取速度较快(主要指读操作),特别是全表扫描。
  • 适用于读密集型的应用场景。
相关推荐
小诸葛的博客21 分钟前
pg入门12—pg中的subscriptions是什么
数据库·oracle
青云交23 分钟前
大数据新视界 --大数据大厂之探索ES:大数据时代的高效搜索引擎实战攻略
大数据·数据库·elasticsearch·搜索引擎·数据分析·高效搜索·可扩展性·电商平台、新闻媒体、企业内部
Flying_Fish_roe24 分钟前
Flyway 数据库差异处理
数据库·oracle
知行合一。。。32 分钟前
MySQL调优--11--分批插入/更新数据 ---案例
数据库·windows·mysql
江凡心1 小时前
Qt 每日面试题 -2
开发语言·数据库·qt·面试
炬火初现1 小时前
Mysql进阶——1
数据库·mysql
代码吐槽菌1 小时前
基于SpringBoot的在线点餐系统【附源码】
java·开发语言·spring boot·后端·mysql·计算机专业
罗小罗同学1 小时前
困扰霍金和蔡磊等人的渐冻症,能否在医学AI领域寻找到下一个解决方案?|个人观点·24-09-22
数据库·人工智能·医学图像处理·医学人工智能·渐冻症
TTBIGDATA1 小时前
【ranger编译报错】cloudera-manager-api-swaggerjar7.0.3 not found
java·大数据·数据库·hadoop·oracle·ambari·cloudera
Idiot_20181 小时前
centos 安装配置mysql
mysql·adb·centos