【MySQL】数据库的基础——数据库的介绍、MySQL的介绍和架构、SQL分类、MySQL的基本使用、MySQL的存储引擎

文章目录

  • MySQL
    • 1. 数据库的介绍
      • 1.2 主流数据库
    • 2. MySQL的介绍
      • 2.1 MySQL架构
      • 2.2 SQL分类
      • 2.3 MySQL的基本使用
      • 2.4 MySQL存储引擎

MySQL

在这里插入图片描述

  

1. 数据库的介绍

  数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。它是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

  数据库是一个文件集合,本质就是一个文件系统,它按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作。这些数据可以是数字、文字、图形、图像、声音、语言等,它们被存放在结构化的数据表里,并按一定顺序排列组合。

  数据库具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)四个特性根据数据结构的不同,数据库通常分为关系型数据库(SQL)和非关系型数据库(NoSQL)。 关系型数据库如Oracle、MySQL、SQL Server等,具有易于维护、使用方便、多表复杂操作友好度高等优点,但大批量数据的读写效率较差,表结构固定,灵活度稍欠。非关系型数据库如Redis、MongoDB等,则具有存储数据的格式灵活、速度快效率高、可扩展性强等优点,但不支持或有限支持SQL,数据结构相对复杂,学习和使用的成本高。

  数据库管理系统(DBMS)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。 常见的数据库管理系统有MySQL、SQL Server、Oracle和DB2等。

  数据库的发展史可以追溯到最早的通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。随着计算机的广泛应用,传统的文件系统已经不能满足人们对数据共享的需求,于是能够统一管理和共享数据的数据库管理系统应运而生。

  在生活中,人们可以直接用中文、英文等自然语言描述客观事物,但在计算机中,需要抽象出对这些事物感兴趣的特征,并组成一个记录来描述。例如,在学生档案中,学生信息是由学号、姓名、性别、年龄、籍贯、联系电话等特征组成的,那么这些具体的特征值所构成的一条记录就是一个学生的信息数据。

  

1.2 主流数据库

  SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目

  Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。

  MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。

  PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发

  SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

  H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

              

2. MySQL的介绍

  MySQL是一个关系型数据库管理系统(RDBMS),由瑞典的MySQL AB公司开发,目前属于Oracle旗下产品。它是最流行的关系型数据库管理系统之一, 特别是在WEB应用方面,MySQL被认为是最好的RDBMS应用软件之一。

  关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这种设计增加了速度并提高了灵活性。 MySQL所使用的SQL(Structured Query Language,结构化查询语言)是用于访问数据库的最常用标准化语言,这使得用户可以通过编写SQL语句来查询、插入、更新和删除数据库中的数据。

  MySQL软件采用了双授权政策,分为社区版和商业版。 由于其体积小、速度快、总体拥有成本低,并且开放源代码,MySQL成为了中小型和大型网站开发的首选数据库。此外,MySQL使用C和C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。同时,它为多种编程语言提供了API,方便开发者在不同的编程环境中使用MySQL。

  MySQL是一个功能强大、易于使用且经济实惠的关系型数据库管理系统,广泛应用于各种规模的网站和应用程序中。

  

2.1 MySQL架构

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

  MySQL的架构大致可以分为以下几层:

  (1)网络连接层:提供与MySQL服务器建立连接的支持,支持各种主流的服务器编程技术,如Java、C、Python、.NET等,通过各自的API技术与MySQL建立连接。

  (2)服务层:这是MySQL的核心部分,主要包含以下内容:

    1. 连接池负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接。

    2. 系统管理和控制工具如备份恢复、安全管理、集群管理等。

    3. SQL接口用于接受客户端发送的各种SQL命令,并返回用户需要查询的结果,如DML、DDL、存储过程、视图、触发器等。

    4. 解析器负责将请求的SQL解析生成一个“解析树”,然后根据一些MySQL规则进一步检查解析树是否合法。

    5. 查询优化器当“解析树”通过解析器语法检查后,将交由优化器将其转化成执行计划,然后与存储引擎交互。

    6. 缓存包括一系列小缓存,如表缓存、记录缓存、权限缓存、引擎缓存等。 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

  (3)存储引擎层:负责MySQL中数据的存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,服务器中的查询执行引擎通过接口与存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异。常见的存储引擎有InnoDB、MyISAM、Memory等。InnoDB是MySQL的默认存储引擎,它支持事务、行锁和外键等功能。

  此外,MySQL的架构中还包括系统文件层,但这一层通常与存储引擎层紧密相关,因为存储引擎需要与底层系统文件进行交互。

  

在这里插入图片描述

  

2.2 SQL分类

  DDL【Data Definition Language】 数据定义语言,用来维护存储数据的结构,代表指令: create, drop, alter

  DML【Data Manipulation Language】 数据操纵语言,用来对数据进行操作,代表指令: insert,delete,update

  DQL【Data Query Language】数据查询语言,用来对数据进行查询操作,代表指令: select

  DCL【Data Control Language】 数据控制语言,主要负责权限管理,代表指令: grant,revoke,commit

  TCL【Transaction Control Language】事务控制语言,用于管理数据库事务,代表指令:commit、rollback

  

2.3 MySQL的基本使用

连接服务器

mysql -h 127.0.0.1 -P 3306 -u root -p
mysql -u root -p

  如果没有写 -h 127.0.0.1 默认是连接本地

  如果没有写 -P 3306 默认是连接3306端口号

在这里插入图片描述

  

查询数据库

  通过show databases;操作,我们可以查看到当前MySQL中所拥有的所有数据库。

show databases;

在这里插入图片描述

  

创建数据库

  通过create databases <数据库的名字>;操作,我们可以创建数据库。

create database database_test;

在这里插入图片描述

  

使用数据库

  如果我们要对数据库进行下一步操作use <数据库的名字>;,我们要先选择使用那一个数据库。

use database_test;

在这里插入图片描述

  数据库修改成功。

  

创建数据库表

  使用create语句进行我们数据库表的创建 create table <数据库表名>( id int, name varchar(32), gender varchar(2) ); 我们建的表中包含了三个数据分别是id、姓名和性别。

  注意SQL语句都是以 ; 结尾的。

> create table person(
-> id int,
-> name varchar(32),
-> gender varchar(2)
-> );

在这里插入图片描述

  数据库表创建成功。
  
  

查看数据库表的信息

  输入desc <数据库表的名字>;我们就可以查看到数据库表的基本信息。

desc database_test;

在这里插入图片描述

  

表中插入数据

  向数据库表中插入数据insert into <数据库表名> (id, name, gender) values (1, '张三', '男');注意插入()中的信息和上面建表一致即可。

insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');

在这里插入图片描述
  

  我们同样可以插入部分的数据insert into <数据库表名> (id, name) values (3, '赵六'); 注意前后()中的内容匹配即可。

insert into person (id, name) values (3, '赵六');

在这里插入图片描述

  

查询表中的数据

  使用select查询数据库表中的数据,select * from <数据库表名>这里的 * 表示所有的数据。

select * from person;

在这里插入图片描述

  

删除数据库表的数据

  delete from <表名> where id=3;delete表示删除操作,操作from来自<表名>的数据,且数据的id为3,因为有两条id=3所以删除了两条信息。如果是 delete from <表名>就表示删除表中全部数据。

delete from person where id=3;

在这里插入图片描述
  

删除数据库

  drop database <数据库名>;drop删除数据库。

drop database database_test;

在这里插入图片描述

在这里插入图片描述

  database_test就被删除了。

  

2.4 MySQL存储引擎

  MySQL的存储引擎是数据库底层软件组织,它负责数据的存储、处理和保护。不同的存储引擎提供不同的存储机制、索引技巧、锁级别和事务等功能。MySQL的存储引擎是基于表的,而非数据库。

  MySQL中最常用的存储引擎包括InnoDB和MyISAM。 InnoDB是MySQL 5.5版本之后的默认存储引擎,它支持事务、提供行级锁,每个表的主键不能为空且支持主键自增长,还支持外键完整性约束。

  InnoDB的设计旨在达到处理巨大数据量的最大性能,其CPU效率可能是其他基于磁盘的关系型数据库引擎所无法比拟的。

  MyISAM存储引擎则不支持事务和外键,它使用表级锁来控制并发的读写操作,并支持全文索引。MyISAM引擎强调快速读取操作,因此主要用于高负载的SELECT查询,对于没有事务完整性要求的应用,可以使用MyISAM来创建表。

  除了InnoDB和MyISAM之外,MySQL还支持其他存储引擎,如Memory、Federated、CSV等,每种存储引擎都有其特定的使用场景和优势。

  此外,MySQL的存储引擎是可插拔的,这意味着用户可以根据需要选择和更换存储引擎,以满足不同的应用需求。这种灵活性使得MySQL能够适应各种场景,从简单的个人项目到复杂的企业级应用。

  MySQL的存储引擎是数据库管理系统中的重要组成部分,它负责数据的存储、访问和管理,并提供了多种选择以满足不同的应用需求。

  

查看存储引擎

show engines\G;

  \G指表示输出格式化,无关字符不进行打印。

在这里插入图片描述
  

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/255458.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue+vite项目,动态导入静态资源的几种方式

博主的桌面工具软件已经正式开发&#xff0c;获取方式&#xff1a; 可以关注我的小程序【中二少年工具箱】获取。&#xff08;若小程序更新有延迟&#xff0c;可先收藏小程序&#xff09; 通过下载链接 百度网盘: 链接&#xff1a;https://pan.baidu.com/s/15zDnSoEzJGSZLjpD…

Swift Combine 发布者publisher的生命周期 从入门到精通四

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三 1. 发布者和订阅者的生命周期 订阅者和发布者以明确定义的顺序进行通信&#xff0c;因此使得它们具有从开始到结束的生命周期&#xff1a; …

python+flask+django医院预约挂号病历分时段管理系统snsj0

技术栈 后端&#xff1a;python 前端&#xff1a;vue.jselementui 框架&#xff1a;django/flask Python版本&#xff1a;python3.7 数据库&#xff1a;mysql5.7 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm . 第一&#xff0c;研究分析python技术&#xff0c…

NLP_神经概率语言模型(NPLM)

文章目录 NPLM的起源NPLM的实现1.构建实验语料库2.生成NPLM训练数据3.定义NPLM4.实例化NPLM5.训练NPLM6.用NPLM预测新词 NPLM小结 NPLM的起源 在NPLM之前&#xff0c;传统的语言模型主要依赖于最基本的N-Gram技术&#xff0c;通过统计词汇的共现频率来计算词汇组合的概率。然而…

C#使用哈希表对XML文件进行查询

目录 一、使用的方法 1.Hashtable哈希表 2.Hashtable哈希表的Add方法 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;示例 3.XML文件的使用 二、实例 1.源码 2.生成效果 可以通过使用哈希表可以对XML文件进行查询。 一、使用的方法 1.Hashtable哈希表…

Go指针探秘:深入理解内存与安全性

目录 1. 指针的基础1.1 什么是指针&#xff1f;1.2 内存地址与值的地址1.2.1 内存中的数据存储1.2.2 如何理解值的地址 2. Go中的指针操作2.1 指针类型和值2.1.1 基本数据类型的指针2.1.2 复合数据类型的指针 2.2 如何获取一个指针值2.3 指针&#xff08;地址&#xff09;解引用…

14.0 Zookeeper环球锁实现原理

全局锁是控制全局系统之间同步访问共享资源的一种方式。 下面介绍zookeeper如何实现全民锁&#xff0c;讲解他锁和共享锁两类全民锁。 排他锁 排他锁&#xff08;Exclusive Locks&#xff09;&#xff0c;又被称为写锁或独占锁&#xff0c;如果事务T1对数据对象O1加上排他锁…

MongoDB部署策略

内 容 简 介 本文介绍了MongoDB数据库的优点的数据存储模式的安装部署过程。 利用MongoDB在存储海量数据上的优势&#xff0c;部署存储空间大数据。 欢迎批评指正补充 由于编者水平有限&#xff0c;所搜集资料也很有限&#xff0c;制定的规范肯定有考虑不周全、甚至完全错误…

【RT-DETR有效改进】利用SENetV2重构化网络结构 (ILSVRC冠军得主,全网独家首发)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是SENetV2,其是2023.11月的最新机制(所以大家想要发论文的可以在上面下点功夫),其是一种通过调整卷积网络中的通道关系来提升性能的网络结构。SENet并不是一个独立的网络模型,而…

flask+python企业产品订单管理系统938re

在设计中采用“自下而上”的思想&#xff0c;在创新型产品提前购模块实现了个人中心、个体管理、发布企业管理、投资企业管理、项目分类管理、产品项目管理、个体投资管理、企业投资管理、个体订单管理、企业订单管理、系统管理等的功能性进行操作。最终&#xff0c;对基本系统…

Peter算法小课堂—背包问题

我们已经学过好久好久的动态规划了&#xff0c;动态规划_Peter Pan was right的博客-CSDN博客 那么&#xff0c;我用一张图片来概括一下背包问题。 大家有可能比较疑惑&#xff0c;优化决策怎么优化呢&#xff1f;答案是&#xff0c;滚动数组&#xff0c;一个神秘而简单的东西…

Java奠基】对象数组练习

目录 商品对象信息获取 商品对象信息输入 商品对象信息计算 商品对象信息统计 学生数据管理实现 商品对象信息获取 题目要求是这样的&#xff1a; 定义数组存储3个商品对象。 商品的属性&#xff1a;商品的id&#xff0c;名字&#xff0c;价格&#xff0c;库存。 创建三个…

自适应二次元404页面源码

自适应二次元404页面源码&#xff0c;HTMLCSSJS,喜欢二次元的朋友可以下载使用 蓝奏云&#xff1a;https://wfr.lanzout.com/iuPNQ1ns7dxg

ctfshow-web21~28-WP

爆破(21-28) web21 题目给了一个zip文件,打开后解压是爆破的字典,我们抓包一下网址看看 发现账号和密码都被base64了,我们发送到intruder模块,给爆破的位置加上$符圈住 去base64解码一下看看格式

C#(C Sharp)学习笔记_If条件判断语句【五】

前言&#xff1a; 本期学习的是编程语言中的主要语句&#xff1a;if-条件判断语句。在这里我们会学到&#xff1a;if语法&#xff0c;if-else&#xff0c;和if嵌套。话不多说&#xff0c;我们开始吧&#xff01; 什么是条件判断语句&#xff1f; 条件语句是用来判断给定的条件…

11g(win)迁移升级12c(linux)

背景前言&#xff1a; 原环境为11202的windows环境&#xff0c;数据量较大约20T 目标环境为12201的linux环境 使用linux和windows的数据文件互通原理&#xff0c;原库关库拷贝数据文件后&#xff0c;在目标端启动并升级 升级流程&#xff1a; 启动实例到mount注册拷贝的数…

【CTFshow】VIP题目限免 通关

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

Vue项目创建

Vue项目创建 一、环境准备1.1.安装 node.js【下载历史版本node-v14.21.3-x64】1.2.安装1.3.检查是否安装成功&#xff1a;1.4.在Node下新建两个文件夹 node_global和node_cache并设置权限1.5.配置npm在安装全局模块时的路径和缓存cache的路径1.6.配置系统变量&#xff1a;Node\…

git版本回退。git reset参数详解,特殊提交情形下的git push操作(CR等常见场景),git reflog和git log的详解。

切换分支可以使用 git checkout <> 或者git switch ... 创建分支可以使用 git checkout -b <. ...> 或 git branch <...> git checkout <...> git reset --hrad HEAD^ -- 今日份chatgpt git reset --hard HEAD^ 的含义如下&#xff1a; git reset …

2024牛客寒假算法基础集训营3

前言 感觉有些题是有难度&#xff0c;但是是我花时间想能想的出来的题目&#xff0c;总体来说做的很爽&#xff0c;题目也不错。个人总结了几个做题技巧&#xff0c;也算是提醒自己。 1.多分类讨论 2.从特殊到一般&#xff0c;便于找规律。例如有一组数&#xff0c;有奇数和…