MySQL基础

目录

[一、登录 MySQL](#一、登录 MySQL)

二、MySQL的部署

三、什么是数据库

[3.1 数据库概念](#3.1 数据库概念)

[3.2 服务器,数据库,表关系](#3.2 服务器,数据库,表关系)

[3.3 SQL 分类](#3.3 SQL 分类)

四、MySQL架构

五、初识Linux下的MySQL

[5.1 创建数据库](#5.1 创建数据库)

[5.2 创建表](#5.2 创建表)

[5.3 表中插入数据](#5.3 表中插入数据)


一、登录 MySQL

cpp 复制代码
mysql -h 127.0.0.1 -P 3306 -u root -p

-h:指明登录部署了mysql服务的主机端口号(127.0.0.1,本地环回)

-P:指明要访问的端口号(3306,MySQL默认的端口号)

-u:指明登录用户

-p:指明需要输入密码

二、MySQL的部署

在主机中,可以看到存在 mysql 文件夹与 mysqld 文件夹,

其中,mysql指的是数据库服务的客户端;mysqld指的是数据库服务的服务端。

从这里不难看出,MySQL本质是基于C(Client,即mysql)S(Server,即mysqld)模式的一种网络服务。

三、什么是数据库

3.1 数据库概念

数据库:一般指在磁盘(或内存)中存储的特定结构组织的数据,即在磁盘上存储的一套数据库方案。

说白了,数据库其实就是用户将数据保存在文件过程的中介中,那么为什么用户不直接将数据存储在文件中

文件只提供了存储的功能,但是没有提供很好的对文件内容进行增删查改的能力。

以图的形式来看,用户在外只需要访问 mysql ,对 mysql 执行对应的 sql 句柄,后台由 mysqld 对磁盘存储的数据库文件进行相关的操作,用户并不关心。

这是不是与面向对象的思想类似?或者说面向对象的思想才是计算机帮人们解决问题的思想。

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

在某个软件或某一程序中,所有数据都存在同一数据库中显然是不合理的,假设在某一购物软件中,存在全部订单、待支付订单、退款/售后订单,这些数据还需要建立多个数据库来存储吗?

其实只需要在一个数据库下建立表即可,下面来看看它们之间的关系:

从上图中的信息可以看出来,Linux一切皆文件的特点,数据库在Linux下就是一个目录,数据库表就是目录下的一个文件。下面来见一下Linux下的MySQL。

3.3 SQL 分类

DDL【data definition language】 数据定义语言,用来维护存储数据的结构

代表指令: create, drop, alter

DML【data manipulation language】 数据操纵语言,用来对数据进行操作

代表指令: insert,delete,update

DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务

代表指令: grant,revoke,commit

四、MySQL架构

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

从上图可以看出MySQL的基本架构:
Client Connectors(客户端连接器)

JDBC, ODBC, .NET, PHP, Python, PERL, C API 等客户端接口:这些连接器允许不同编程语言和框架与MySQL服务器进行通信。它们通过标准化的协议与MySQL服务器建立连接,执行SQL语句,并接收服务器返回的数据。

MySQL Server(MySQL服务器核心部分):

Connection Pool(连接池):负责连接管理、身份验证和安全性。它通过连接池减少频繁打开和关闭连接的开销,提高了性能。

Services & Utilities(服务和实用工具):包含诸如备份恢复、安全性、集群、分区管理等功能,以及用于管理数据库的工具

SQL Interface(SQL接口):提供了执行SQL语句(如DML、DDL等)的接口。支持存储过程、触发器、视图等高级功能。

Parser(解析器):包括词法分析、语法分析和代码生成:解析输入的SQL语句,将其分解为可以进一步处理的元素,并生成内部表示供优化器使用。

Optimizer(优化器):负责SQL查询的重写、扫描和索引的顺序选择等,确保SQL查询执行的效率达到最佳。

Caches(缓存):包括全局缓存和针对具体存储引擎的缓存,帮助加快数据查询和写入的速度。缓存用于减少磁盘I/O操作,提升查询性能。

Pluggable Storage Engines(可插拔存储引擎)

MySQL支持不同的存储引擎,用户可以根据不同的业务场景选择适合的存储引擎。

目前MySQL主流的引擎是 MyISAM (早期的默认存储引擎) 和 InnoDB (现在的默认引擎)

五、初识Linux下的MySQL

在Linux下,数据库目录一般是 /var/lib/mysql ,可以 cd 进入该目录然后查看。

5.1 创建数据库

mysql> create database helloworld;
Query OK, 1 row affected (0.01 sec)

当新建数据库时,可以在不同的终端上查看到新建的目录:

这就说明了在Linux下,数据库就是一个目录。

5.2 创建表

创建表之前,需要先使用数据库,至少让数据库知道你要操控的是哪个数据库吧!

mysql> use helloworld

Database changed

然后就可以进行创建表了,这里随便创建一个日期类:

mysql> create table date(

-> year int,

-> month int,

-> day int);

Query OK, 0 rows affected (0.05 sec)

紧接着就可以在 helloworld 目录下查看到有一个新建的文件 date.ibd

5.3 表中插入数据

// 表中插入数据

mysql> insert into date (year, month, day) values (2021, 03, 22);

Query OK, 1 row affected (0.01 sec)

// 查看表中数据

mysql> select * from date;

+------+-------+------+

| year | month | day |

+------+-------+------+

| 2021 | 3 | 22 |

+------+-------+------+

1 row in set (0.00 sec)

从查看表也能知道,MySQL是一个行列式的存储结构:

相关推荐
Ahern_36 分钟前
Oracle 普通表至分区表的分区交换
大数据·数据库·sql·oracle
夜半被帅醒1 小时前
MySQL 数据库优化详解【Java数据库调优】
java·数据库·mysql
不爱学习的啊Biao1 小时前
【13】MySQL如何选择合适的索引?
android·数据库·mysql
破 风1 小时前
SpringBoot 集成 MongoDB
数据库·mongodb
Rverdoser1 小时前
MySQL-MVCC(多版本并发控制)
数据库·mysql
醒了就刷牙1 小时前
黑马Java面试教程_P9_MySQL
java·mysql·面试
m0_748233642 小时前
SQL数组常用函数记录(Map篇)
java·数据库·sql
dowhileprogramming2 小时前
Python 中的迭代器
linux·数据库·python
0zxm3 小时前
08 Django - Django媒体文件&静态文件&文件上传
数据库·后端·python·django·sqlite
橘子师兄5 小时前
如何在自己的云服务器上部署mysql
运维·服务器·mysql