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

news2024/11/15 18:46:41

文章目录

  • 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.coloradmin.cn/o/1444268.html

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

相关文章

安装了多个Java版本如何指定特定版本

Java版本问题的实战场景 机器安装了一个JDK 8的安装版本&#xff0c;默认的安装路径是 C:\Program Files\Java&#xff0c;JDK的安装版本同时安装了JDK 和JRE, 安装的路径分别是&#xff1a; JDK 路径&#xff1a; C:\Program Files\Java\jdk1.8.0_361JRE 路径&#xff1a; C…

Java图形化界面编程——菜单组件 笔记

2.7 菜单组件 ​ 前面讲解了如果构建GUI界面&#xff0c;其实就是把一些GUI的组件&#xff0c;按照一定的布局放入到容器中展示就可以了。在实际开发中&#xff0c;除了主界面&#xff0c;还有一类比较重要的内容就是菜单相关组件&#xff0c;可以通过菜单相关组件很方便的使用…

在 Windows上恢复删除照片的 4 种有效方法

您是否曾在 Windows 7/8/10/11 中不小心删除过照片&#xff1f;如何轻松快速地恢复已删除的照片&#xff1f;在这里这篇文章列出了几种在Windows 11/10/8/7中恢复已删除照片的可行方法&#xff0c;而MiniTool数据恢复软件 是丢失照片恢复的最佳选择。 意外删除的照片 根据一项…

【深度学习每日小知识】卷积神经网络(CNN)

在深度学习领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;彻底改变了视觉分析领域。凭借从图像中提取复杂模式和特征的能力&#xff0c;CNN 已成为图像分类、目标检测和面部识别等任务不可或缺的一部分。本文全面概述了 CNN&#xff0c;探讨了其架构、训练过程、应用…

《CSS 简易速速上手小册》第5章:CSS 动画与过渡(2024 最新版)

文章目录 5.1 CSS 过渡基础&#xff1a;网页的微妙舞步5.1.1 基础知识5.1.2 重点案例&#xff1a;按钮悬停效果5.1.3 拓展案例 1&#xff1a;渐变显示导航菜单5.1.4 拓展案例 2&#xff1a;动态调整元素大小 5.2 关键帧动画&#xff1a;编排你的网页芭蕾5.2.1 基础知识5.2.2 重…

宠物空气净化器哪个牌子好?养猫家庭如何挑选宠物空气净化器?

养猫的朋友都知道&#xff0c;猫咪掉毛是一个令人头痛的问题。猫毛和皮屑会漂浮在空气中&#xff0c;不仅遍布全屋的各个角落&#xff0c;而且清理起来也非常麻烦&#xff0c;特别是那些难以清除的猫毛。更糟糕的是&#xff0c;这些猫毛还可能引发人们的过敏反应&#xff0c;如…

Netty源码系列 之 HashedWheelTimer源码

Netty优化方案 之前总结NioEventLoop以及其他内容时&#xff0c;已经总结了Netty许多优化的设计方案。 1.Selector的优化 (1) 为epoll空转问题提供了解决思路&#xff0c;虽然并没有从根本上解决epoll空转问题&#xff0c;但是使用一个计数器的方式可以减少空转所带来的性能…

[word] word如何打印背景和图片? #微信#其他#经验分享

word如何打印背景和图片&#xff1f; 日常办公中会经常要打印文件的&#xff0c;其实在文档的打印中也是有很多技巧的&#xff0c;可以按照自己的需求设定&#xff0c;下面给大家分享word如何打印背景和图片&#xff0c;一起来看看吧&#xff01; 1、打印背景和图片 在默认的…

【数据结构与算法】【小白也能学的数据结构与算法】迭代算法专题

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

面向数据报编程-UDP协议

目录 前言&#xff1a; 1.UDP协议API 1.1UDP编程原理 1.2DatagramSocket类 &#xff08;1&#xff09;DatagramSocket构造方法 &#xff08;2&#xff09;DatagramSocket普通方法 1.3DatagramPacket类 &#xff08;1&#xff09;DatagramPacket构造方法 &#xff08;2…

电商小程序03登录页面开发

目录 1 创建应用2 创建页面3 首页功能搭建4 登录页搭建5 设置叠加效果总结 小程序开发在经过需求分析和数据源设计之后&#xff0c;就可以进入到页面开发的阶段了。首先我们需要开发登录的功能。 登录功能要求用户输入用户名和密码&#xff0c;勾选同意用户协议和隐私协议&…

SAP-PS-02-004利润中心移除分配公司代码

问题描述 在用KE51创建利润中心时&#xff0c;如果不采用“参考创建”的方式&#xff0c;SAP默认将所有公司代码分配给此利润中心。 上图中&#xff0c;L100003利润中心分配了1000、1001、1002公司&#xff0c;但是实际需求是&#xff1a;L100003只需要分配1000公司。 解决方法…

elasticsearch增删改查

一、数据类型 1、字符串类型 &#xff08;1&#xff09;text &#xff08;2&#xff09;keyword 2、数值类型 &#xff08;1&#xff09;long、integer、short、byte、float、double 3、日期类型 &#xff08;1&#xff09;date 4、布尔类型 &#xff08;1&#xff0…

ChatGPT高效提问—prompt常见用法(续篇九)

ChatGPT高效提问—prompt常见用法(续篇九) ​ 如何准确地向大型语言模型提出问题,使其更好地理解我们的意图,从而得到期望的答案呢?编写有效的prompt的技巧,精心设计的prompt,获得期望的的答案。 1.1 增加条件 ​ 在各种prompt技巧中,增加条件是最常用的。在prompt中…

基于JavaWeb的网上订餐项目

点击以下链接获取源码&#xff1a; https://download.csdn.net/download/qq_64505944/88825723?spm1001.2014.3001.5503 Java项目-16 浏览商品&#xff0c;会员登录&#xff0c;添加购物车&#xff0c;进行配送等功能 文件代码功能介绍 1.Src下的java文件存放的我们后端的…

基于PHP网上图书销售商城系统qo85w

软件体系结构方案&#xff1a;由于本系统需要在不同设备上都能运行&#xff0c;而且电脑配置要求也要越低越好&#xff0c;为了实现这一要求&#xff0c;经过考虑B/S结构成为最佳之选。使用B/S结构的系统可以几乎在任何电脑上运行&#xff0c;只要浏览器可以正常工作就可以正常…

C++ //练习 5.12 修改统计元音字母的程序,使其也能统计空格、制表符和换行符的数量。

C Primer&#xff08;第5版&#xff09; 练习 5.12 练习 5.12 修改统计元音字母的程序&#xff0c;使其也能统计空格、制表符和换行符的数量。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /******************************…

【JavaScript 】finally() 方法和Filter() 方法

JavaScript 中的finally() 方法 finally是 JavaScript 构造中使用的方法try-catch。try它在and阻塞之后执行catch&#xff0c;无论 Promise 是已履行还是已拒绝。该函数的主要作用是执行必要的清理任务并向用户传达消息。一个常见的用例可能是通知用户“您的请求已被处理”&am…

使用client-only 解决组件不兼容SSR问题

目录 前言 一、解决方案 1.基于Nuxt 框架的SSR应用 2.基于vue2框架的应用 3.基于vue3框架的应用 二、总结 往期回顾 前言 最近在我的单页面SSR应用上开发JSON编辑器功能&#xff0c;在引入组件后直接客户端跳转OK&#xff0c;但是在直接加载服务端渲染的时候一直报这…

【机器学习】单变量线性回归

文章目录 线性回归模型&#xff08;linear regression model&#xff09;损失/代价函数&#xff08;cost function&#xff09;——均方误差&#xff08;mean squared error&#xff09;梯度下降算法&#xff08;gradient descent algorithm&#xff09;参数&#xff08;parame…