当前位置: 首页 > article >正文

【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选项后面不需要立即跟密码,因为系统会提示您输入密码以确保密码的安全性。

mysql -h 192.168.1.100 -P 3306 -u myuser -p

 数据库和数据库表的创建

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

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

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

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

1.创建数据库:

create database 数据库名;

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

show databases;

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

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

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

3.使用指定的数据库

use 数据库名;

就是用刚才的数据库

4.在数据库内创建表

create table 表名(字段1 字段1类型);

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

5.往数据库中插入数据

insert into 表名(字段名) values(值);

6.查询表中所有数据

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

特点

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

优势

  • 读取速度较快(主要指读操作),特别是全表扫描。
  • 适用于读密集型的应用场景。

http://www.kler.cn/a/314337.html

相关文章:

  • 【云原生系列--Longhorn的部署】
  • 【项目组件】第三方库——websocketpp
  • 深入解析贪心算法及其应用实例
  • DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链
  • 3D编辑器教程:如何实现3D模型多材质定制效果?
  • SystemVerilog学习笔记(六):控制流
  • 配置docker的proxy指向
  • 【Proteus仿真】基于51单片机的L298N电机电速调节
  • 记录动态库项目仅生成了dll,未生成lib文件的问题
  • 深度学习02-pytorch-07-张量的拼接操作
  • 剖析Spark Shuffle原理(图文详解)
  • go 以太坊代币查余额
  • Python | Leetcode Python题解之第424题替换后的最长重复字符
  • 是德科技Keysight N4433D ECal模块 26.5GHz 4端口3.5毫米
  • 在python爬虫中xpath方式提取lxml.etree._ElementUnicodeResult转化为字符串str类型
  • RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
  • 演示jvm锁存在的问题
  • Java集合(三)
  • Centos7安装chrome的问题
  • WebApi开发中依赖注入和RESTful 详解
  • OceanBase 的并发简述笔记
  • Navicate 链接Oracle 提示 Oracle Library is not loaded ,账号密码都正确地址端口也对
  • 【变化检测】基于ChangeStar建筑物(LEVIR-CD)变化检测实战及ONNX推理
  • php变量赋值javascipt变量
  • 13.面试算法-字符串常见算法题(二)
  • 【论文阅读】3D Diffuser Actor: Policy Diffusion with 3D Scene Representations