【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://xiahunao.cn/news/2778693.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

elasticsearch下载及可视化工具下载使用

elasticsearch下载及配置、启动 一、下载 Download Elasticsearch | Elastic 二、启动 双击bat即可。 出现如下说明启动成功&#xff1a; 访问测试&#xff1a; 三、注意 &#xff08;1&#xff09;因为es启动默认端口是&#xff1a;9200,所以需要检查此端口是否被占用。…

C#在窗体正中输出文字以及输出文字的画刷使用

为了在窗体正中输出文字&#xff0c;需要获得输出文字区域的宽和高&#xff0c;这使用MeasureString方法&#xff0c;方法返回值为Size类型&#xff1b; 然后计算输出的起点的x和y坐标&#xff0c;就可以输出了&#xff1b; using System; using System.Collections.Generic; …

js中bind、call、apply 区别(如何实现)

文章目录 一、作用二、区别applycallbind小结 三、实现 一、作用 call、apply、bind作用是改变函数执行时的上下文&#xff0c;简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢&#xff1f;下面举个例子 var name "lucy"; var obj {n…

每日五道java面试题之java基础篇(五)

第一题. final、finally、finalize 的区别&#xff1f; final ⽤于修饰变量、⽅法和类&#xff1a;final 修饰的类不可被继承&#xff1b;修饰的⽅法不可被重写&#xff1b;修饰的变量不可变。finally 作为异常处理的⼀部分&#xff0c;它只能在 try/catch 语句中&#xff0c;…

Java外卖小程序管理系统

技术架构&#xff1a; springboot ssm mysql redis 有需要该项目的小伙伴可以私信我你的Q。 功能描述&#xff1a; 商品管理&#xff1a;新增商品、所有商品 菜单管理&#xff1a;菜单管理、菜单分类 订单管理&#xff1a;订单总览&#xff08;包括未付款、已付款、已…

linux进程(进程地址空间)

目录 前言&#xff1a; 正文&#xff1a; 1.验证地址空间 2.地址空间是指物理空间吗 3.linux内核的地址空间 4进程访问地址 4.1早期程序寻址 4.2进程地址空间到物理内存的映射 4.3解释同一变量产生不同值 5虚拟地址空间的意义 5.1保护物理内存 5.2进程管理和内…

[论文总结] 深度学习在农业领域应用论文笔记12

文章目录 1. 3D-ZeF: A 3D Zebrafish Tracking Benchmark Dataset (CVPR, 2020)摘要背景相关研究所提出的数据集方法和结果个人总结 2. Automated flower classification over a large number of classes (Computer Vision, Graphics & Image Processing, 2008)摘要背景分割…

前端JavaScript篇之对象创建的方式有哪些?

目录 对象创建的方式有哪些&#xff1f;1. 工厂模式&#xff1a;2. 构造函数模式&#xff1a;3. 原型模式&#xff1a;4. 混合模式&#xff1a;5. 动态原型模式&#xff1a;6. 寄生构造函数模式&#xff1a;7. 字面量方式&#xff1a; 对象创建的方式有哪些&#xff1f; JavaS…

春晚魔术和约瑟夫问题

春晚的魔术实际上是一个约瑟夫问题&#xff0c;最终的结果是魔术开始时确定的几个变量确定好的&#xff0c;扑克牌只是道具和障眼法。网上一查这个问题发现颇有历史渊源&#xff0c;17世纪的法国数学家加斯帕在《数目的游戏问题》中讲了这样一个故事&#xff1a;15个教徒和15 个…

房屋租赁系统的Java实战开发之旅

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

WebSocket 通信流程,注解和Spring实现WebSocket ,实战多人聊天室系统

一、前言 实现即时通信常见的有四种方式-分别是&#xff1a;轮询、长轮询(comet)、长连接(SSE)、WebSocket。 ①短轮询 很多网站为了实现推送技术&#xff0c;所用的技术都是轮询。轮询是在特定的的时间间隔&#xff08;如每1秒&#xff09;&#xff0c;由客户端浏览器对服务…

机器学习2--逻辑回归(案列)

糖尿病数据线性回归预测 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_diabetes diabetesload_diabetes() datadiabetes[data] targetdiabetes[target] feature_namesdiabetes[feature_names] data.shape df …

2024刘谦春晚第二个扑克牌魔术

前言 就是刚才看春晚感觉这个很神奇&#xff0c;虽然第一个咱模仿不过来&#xff0c;第二个全国人民这么多人&#xff0c;包括全场观众都有成功&#xff0c;这肯定是不需要什么技术&#xff0c;那我觉得这个肯定就是数学了&#xff0c;于是我就胡乱分析一通。 正文 首先准备…

Mysql Day04

mysql体系结构 连接层服务层引擎层&#xff08;索引&#xff09;存储层 存储引擎 存储引擎是基于表建立的&#xff0c;默认是innoDB show create table tb; 查看当前数据库支持的存储引擎 show engines; InnoDB 特点 DML&#xff08;数据增删改&#xff09;遵循ACID模…

MongoDB的分片集群(二) :mongodb4.x分片集群离线搭建开启安全认证

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 相关文章&#xff1a; MongoDB的分片集群(一) : 基础知识 在《MongoDB的分片集群(一) : 基础知识》中梳理了分片集群的基础知识…

opencv计算机视觉

树莓派主机的无键盘解决 进入控制面板&#xff0c;更改适配器设置&#xff0c;WIFI属性&#xff0c;勾选 1.将网线两头分别接入树莓派和笔记本的网线接口 2.在无线连接属性那里勾选允许其他用户连接 3.运行cmd使用arp -a查看树莓派ip地址&#xff0c;或者使用ipscanner查看 cmd…

JavaIO读取C101.txt文件

一、split分割带空格的字符串&#xff08;四种方法及其区别&#xff09; 参考&#xff1a;https://blog.csdn.net/yezonghui/article/details/106455940 String str "a b c d";String[] arr1 str.split(" "); //仅分割一个空格 String[] arr2 str…

c++之说_11|自定义类型 enum(枚举)与enumclass (c11新枚举)

至于枚举 会用就行 至少目前我感觉没什么太多问题 enum 被称为无作用域枚举 &#xff0c; enumclass / enumstruct 被称为有作用域枚举 看到了吧 语法规则 和 struct 差不多 只不过枚举成员 只是一个标志 它本质是数值 从上到下 下面的数根据上面的数 加 1 也可以直接…

前端JavaScript篇之对闭包的理解

目录 对闭包的理解用途循环中使用闭包解决 var 定义函数的问题 对闭包的理解 闭包是指一个函数能够访问并操作其词法作用域&#xff08;定义时所在的作用域&#xff09;之外的变量的能力。它可以通过在一个函数内部创建另一个函数来实现。内部函数可以访问外部函数的局部变量、…

【维生素C语言】附录:strlen 函数详解

写在前面&#xff1a;本篇将专门为 strlen 函数进行讲解&#xff0c;总结了模拟实现 strlen 函数的三种方法&#xff0c;并对其进行详细的解析。手写库函数是较为常见的面试题&#xff0c;希望通过本篇博客能够加深大家对 strlen 的理解。 0x00 strlen函数介绍 【百度百科】str…