【MySQL】数据库基础和SQL分类

文章目录

  1. MySQL数据库基础
  2. MySQL架构

MySQL数据库基础

数据库的概念

数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库的使用优于简单的文件存储,因为它提供了更好的安全性、数据查询和管理的功能,并更容易控制和存储海量数据。

主流数据库

下面列举了几个主流的数据库:

  • SQL Server:微软的产品,适用于中大型项目。
  • MySQL:甲骨文产品,全球最受欢迎的数据库,适用于电商、SNS、论坛等简单业务。
  • Oracle:甲骨文产品,适合大型项目和复杂的业务逻辑。
  • PostgreSql:加州大学伯利克分校开发的关系型数据库。
  • SQLite:轻型数据库,适用于嵌入式设备。
  • H2:Java开发的嵌入式数据库。

基本使用

连接服务器

连接MySQL服务器的方式:

复制代码
mysql -h127.0.0.1 -P3306 -uroot -p

服务器管理

停止服务器:

复制代码
systemctl stop mysqld

启动服务器:

复制代码
systemctl start mysqld

重启服务器:

复制代码
systemctl restart mysqld

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

数据库服务器、数据库和表的关系如下:

说明一下:

图中的Client对应的就是mysql命令,MySQL对应的就是mysqld服务。

DB(database)表示的是mysqld管理的多个数据库,而每一个DB下会包含多张表。

使用案例

数据存储路径

MySQL创建的数据库和表结构会以文件的形式存储,数据存储路径可以在配置文件中查看。

创建数据库

连接MySQL服务器后,通过create语句创建数据库:

sql 复制代码
CREATE DATABASE helloworld;

使用数据库

使用数据库:

sql 复制代码
USE helloworld;

创建数据库表

通过create语句创建一个名为student的表:

sql 复制代码
CREATE TABLE student (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50),
  age INT
);

表中插入数据

通过insert语句向表中插入数据:

sql 复制代码
INSERT INTO student (name, age) VALUES ('John', 25);
INSERT INTO student (name, age) VALUES ('Jane', 28);

查询表中的数据

通过select语句查看表中的数据:

sql 复制代码
SELECT * FROM student;

数据逻辑存储

数据的逻辑存储以二维表格的形式进行,每行为一条记录,每列代表一个属性。

MySQL架构

MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。MySQL架构主要可分为如下四层:

  1. 连接层: 完成连接处理、授权认证及相关的安全方案。

  2. 服务层: 在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的。包括权限判断、SQL接口、SQL解析、SQL分析优化、缓存查询的处理以及部分内置函数执行等。各个存储引擎提供的功能都集中在这一层,如存储过程、触发器、视图等。

  3. 引擎层: 由多种可拔插的存储引擎共同组成。真正负责MySQL中数据的存储和提取。每个存储引擎都有自己的优点和缺陷,例如InnoDB支持事务、行级锁和外键等,MyISAM则支持全文索引和压缩等特性。

  4. 存储层: 将数据存储在裸设备的文件系统之上,完成存储引擎的交互。

MySQL客户端是通过MySQL服务器来执行数据库操作的。MySQL服务器会收到MySQL客户端发来的SQL语句,并根据SQL语句执行对应的操作。MySQL客户端不仅指连接MySQL时使用的mysql命令,还包括语言接口客户端。MySQL提供了多种语言接口,如C/C++、Python、Java和PHP等。

SQL分类

SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL语句可分为以下三类:

  1. DDL(Data Definition Language): 数据定义语言,用于维护存储数据的结构,包括create语句用于创建数据库、表等;drop语句用于删除数据库、表等;alter语句用于修改数据库、表等的结构。

  2. DML(Data Manipulation Language): 数据操作语言,用于对数据进行操作,包括insert语句用于向表中插入数据;delete语句用于从表中删除数据;update语句用于修改表中的数据。

  3. DCL(Data Control Language): 数据控制语言,主要用于权限管理和事务控制,包括grant语句用于授权给用户访问数据库或表的权限;revoke语句用于收回已授权的权限;commit语句用于提交事务。

此外,DML中又单独分了一个DQL(Data Query Language)数据查询语言,包括select语句用于查询表中的数据、from语句用于指定要查询的表等。

存储引擎

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

查看存储引擎

通过show语句可以查看MySQL支持的存储引擎。在MySQL客户端中执行以下命令:

sql 复制代码
SHOW ENGINES;

其中MySQL默认使用的存储引擎是InnoDB,该存储引擎支持事务、行级锁、外键等。其他常用的存储引擎还包括MyISAM、MEMORY和CSV等。

存储引擎的选择要根据具体的业务需求和数据特点进行,不同的存储引擎有不同的特性和适用场景。例如,InnoDB适用于事务处理和并发读写较多的场景,MyISAM适用于读操作频繁、写操作较少的场景,MEMORY适用于对速度要求较高、数据量不大、对数据持久性要求不高的场景。

相关推荐
IvorySQL3 小时前
PG 日报|新增 VACUUM 全维度统计信息补丁迭代
数据库·人工智能·postgresql·ivorysql
白露与泡影5 小时前
Redis 缓存实战:雪崩、穿透、击穿一次讲透
数据库·redis·缓存
赵渝强老师6 小时前
【赵渝强老师】使用Oracle可传输的表空间迁移数据
数据库·oracle
Csvn7 小时前
Day 3:LIKE 与模式匹配 — 让查询学会"模糊搜索"
后端·sql
IpdataCloud8 小时前
跨区服玩家延迟高怎么办?用IP离线库自动分配到最近服务器
数据库·tcp/ip·github·php·ip
wuqingshun3141598 小时前
MYSQL默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
空中湖9 小时前
电池简史(五):极限之梦与终章——锂硫、锂空气、量子电池,以及你该知道的电池投资与生活指南
数据库·程序人生
蓝胖子酱10 小时前
在 Electron 中用 electron-store 实现加密存储与自定义格式文件
前端·javascript·数据库
snow@li11 小时前
Redis:数据库语法速查表 / 全景梳理
数据库·redis·缓存
Devlive 开源社区11 小时前
Nebula 1.6.0 发布:跨区域桶自动路由、秒传、文本/PDF 预览一次到位
数据库·sql