【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适用于对速度要求较高、数据量不大、对数据持久性要求不高的场景。

相关推荐
计算机毕设指导63 分钟前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
The_Ticker39 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
Elastic 中国社区官方博客1 小时前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
企鹅侠客1 小时前
ETCD调优
数据库·etcd
Json_181790144801 小时前
电商拍立淘按图搜索API接口系列,文档说明参考
前端·数据库
煎饼小狗1 小时前
Redis五大基本类型——Zset有序集合命令详解(命令用法详解+思维导图详解)
数据库·redis·缓存
永乐春秋1 小时前
WEB-通用漏洞&SQL注入&CTF&二次&堆叠&DNS带外
数据库·sql
打鱼又晒网2 小时前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
大白要努力!2 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
tatasix3 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql