【MySQL】数据库开篇

SueWakeup

                                                        个人主页:SueWakeup

                                                        系列专栏:学习技术栈

                                                        个性签名:保留赤子之心也许是种幸运吧

本文封面由 凯楠📸友情提供

目录

本系列传送门

1. 什么是数据库?

2. 为什么使用数据库

3. 数据库的分类

4. NoSQL 与关系型数据库的比较

5. 主流的 NoSQL产品

5.1 键值对(K-V)存储

5.2 列族存储

5.3 文档型存储

5.4 图形数据库

6. 数据库结构

 7. SQL 语句分类

8. SQL语句的执行流程

9.  MyISAM 和 InnoDB 的区别

10. 数据库设计三大范式 

11.  MySQL的表约束

非空约束

唯一性约束

主键约束

外键约束

检查约束

注:手机端浏览本文章可能会出现 “目录”无法有效展示的情况,请谅解,点击侧栏目录进行跳转  


本系列传送门

1. 数据库排名

2.【MySQL】数据库开篇

3.【MySQL】索引篇

4.【MySQL】事务篇

5.【MySQL】锁篇


1. 什么是数据库?

数据库指长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”。


2. 为什么使用数据库

  • 结构化:数据在数据库中的存储依靠二维表结构逻辑存储数据,可以参考数据原有的依赖关系和结构关系去存储数据
  • 共享性:多个用户可以共同分享计算机数据库中的数据资源,从而实现数据的高效共享性
  • 独立性:存储在数据库的数据和应用程序之间相互独立、互不影响。
  • 安全性:数据库在安全性的控制有很多措施,比如访问数据库时对用户的口令,用户的权限进行限制,以及对数据的存储进行限制

3. 数据库的分类

数据库分类数据模型举例
关系型(RDBMS)

表格

Oracle、MySQL、SQL Server等

非关系型(NoSQL)

键值对(K-V)、文档(Document)、列族(Column Family)、图形

MongoDB、Redis、Elasticsearch(引擎)、Cassandra等

对象型

以对象作为基本单位

支持面向对象的数据建模和操作

db4o、Versant等

XML

XML文档

eXist、BaseX等

图形

图形结构数据

适用于网络关系、社交网络等场景

Neo4j、FlockDB等

内存

存储在内存中

SAP HANA、MemSQL等

时间序列

存储时间序列

InfluxDB、Prometheus等


4. NoSQL 与关系型数据库的比较

NoSQL关系型数据库
优点
  1. 简单易部署,低成本
  2. 查询速度快(数据存储于缓存中)
  3. 存储数据多样
  4. 扩展性好
  1. 技术又成熟又早,提供丰富的技术支持和生态系统
  2. 标准化查询语句,对数据的操作和管理更方便灵活
  3. 支持事务管理,确保数据的一致性、完整性和持久性
  4. 存储基础数据,对数据的管理直观简单
缺点
  1. 相较于关系型数据库发展时间短,维护工具和资料有限
  2. 不遵循 SQL 标准,提升了学习和使用成本
  3. 不提供关系型数据库对事务的处理
  1. 相较于 NoSQL 成本高
  2. 存储在磁盘中,速度不及 NoSQL
  3. 仅能存储基础数据
  4. 类似 join 的多表查询机制限制了扩展性

5. 主流的 NoSQL产品

5.1 键值对(K-V)存储

  • 相关产品:Redis、Voldemort、Berkeley DB
  • 典型应用:内容缓存,主要用于处理大量数据的高访问负载。
  • 数据模型:一系列键值对
  • 优势:快速查询
  • 劣势:存储的数据缺少结构化

5.2 列族存储

  • 相关产品:Cassandra,HBase,Riak
  • 典型应用:分布式的文件系统
  • 数据模型:以列族式存储,将同一列数据存在一起
  • 优势:查找速度快,可扩展性强,更容易进行分布式扩展
  • 劣势:功能相对局限

5.3 文档型存储

  • 相关产品:MongoDB、Elasticsearch、CouchDB
  • 典型应用:Web应用(与 K-V 类似,V是结构化的)
  • 数据模型:一系列键值对
  • 优势:数据结构要求不严格
  • 劣势:缺乏统一的查询语法

5.4 图形数据库

  • 相关产品:Neo4j、InfoGrid、Infinite Graph
  • 典型应用:社交网络数据模型:图结构
  • 优势:利用图结构相关算法
  • 劣势:需要对整个图做计算才能得出结构,不容易做分布式的集群方案

6. 数据库结构

  • 数据库(Database):以文件的形式存放在磁盘上,即对应于一个或多个物理文件
  • 数据表(Table):由一组数据记录组成,数据库中的数据以表为单位进行组织
  • 字段(Field):也称域。表中的每一类称为一个字段。每个字段都有相应的描述信息。
  • 记录(Record):表中的每一行称为一个记录,由若干字段组成。
  • 索引(Index):一种特殊类型的表,其中含有关键字段的值和指向表实际记录位置的指针,可以提高访问数据库的效率。
  • SQL语句:结构化查询语句命令,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。

 7. SQL 语句分类

名词

解释

命令

DDL

(数据定义语言)

定义和管理数据对象,

如数据库,数据表等

CREATE、DROP、ALTER

DML

(数据操作语言)

用于操作数据库对象中所包含的数据

INSERT、UPDATE、DELETE

DQL

(数据查询语言)

用于查询数据库数据

SELECT

DCL

(数据控制语言)

用来管理数据库的语言,包括管理权限及数据更改

GRANT、COMMIT、ROLLBACK


8. SQL语句的执行流程

  1. 词法分析:将SQL语句按照语法规则分割成一个个单词(tokens)。例如,SELECT、FROM、WHERE、AND、OR等都是一个单词。
  2. 语法分析:对单词进行语法解析,判断SQL语句是否符合语法规则。如果不符合,则会抛出语法错误。
  3. 语义分析:对SQL语句进行语义分析,如表名、列名、数据类型等,确保它们都是正确的。如果有错误,会抛出语义错误。
  4. 查询优化:对SQL语句进行优化,如选择最优的执行计划、使用索引等来提高查询效率。
  5. 执行SQL:根据优化后的执行计划,执行SQL语句。执行过程中,会进行锁定、缓存、排序、分组等操作。
  6. 返回结构:执行完成后,将结果返回给客户端。如果是查询语句,则会返回查询结果;如果是更新语句,则会返回受影响的行数。

9.  MyISAM 和 InnoDB 的区别

  • MySQL 5.5 版本之前,MyISAM 引擎是 MySQL 的默认存储引擎,但是,MyISAM 不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复
  • MySQL 5.5 版本之后,MySQL 引入了 InnoDB(事务型数据库引擎),MySQL 5.5 版本后默认的存储引擎为 InnoDB;

MyISAM

InnoDB

外键

不允许创建外键

支持外键

事务

不支持事务

事务型数据库引擎,可以使用 Commit 和 Rollback 语句

并发

只支持表级锁(table-level locking)

支持行级锁(row-level locking)和表级锁,默认为行级锁;

备份(缓存)

只缓存索引,不缓存真实数据

支持在线热备份(缓存索引和真实数据)

崩溃恢复

MyISAM 崩溃后发生损坏的概率比 InnoDB 高很多,而且恢复的速度也更慢。


10. 数据库设计三大范式 

数据库设计范式是数据库在设计过程中,需要遵守的设计准则,避免数据冗余;

特殊情况不一定要三个范式都满足,数据库设计看重需求与性能,需求>性能>表结构

  • 第一范式(1NF):每个字段都是最小字段,具有原子性,不可再分; 确保每列保持原子性
  • 第二范式(2NF):每张表必须存在主键,并且其它字段也必须与主键直接依赖,不能仅仅与主键的某一部分依赖(联合主键) 确保表中的每列都和主键相关
  • 第三范式(3NF):每个字段不能与主键间接依赖,每张表只保存一种数据,表和表之间使用外键关系关联; 确保每列都和主键列直接相关,而不是间接相关

11.  MySQL的表约束

约束实际上就是表中数据的限制条件,目的是为了保证表中的记录完整和有效

约束种类:

非空约束

用not null约束的字段不能为null值,必须给定具体的数据

添加:

alter table 表名 modify test_student char(10) not null;

删除:

alter table 表名 modify 列名 类型

唯一性约束

unique约束的字段,具有唯一性,不可重复,但可以为null

添加:

alter table 表名 add unique(表字段名,字段,字段,字段);

删除:

alter table 表名 drop index 唯一约束名;

主键约束

表中的一个或多个字段,它的值用于唯一的表示表中的某一条记录

添加:

alter table 表名 add primary key(表的字段名,字段,字段);

删除:

alter table 表名 drop primary key;

外键约束

某个字段添加外键约束之后,该字段称为外键字段,外键字段中每个数据都是外键值

添加:

alter 表名 add constraint N1 foreign key(表字段名)references 父表(父表字段名);

删除:

alter table 表名 drop foreign key 外键名;

检查约束

(目前MySQL不支持,Oracle支持)


 

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

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

相关文章

android android.permission.MANAGE_EXTERNAL_STORAGE使用

android11 及以上版本&#xff0c;如果release版本要读取外部存储公共目录&#xff0c;即sdcard公共目录&#xff0c;需要在androidManifest.xml下申明 <uses-permission android:name"android.permission.MANAGE_EXTERNAL_STORAGE" /> 如果要发版到海外&…

【UE Niagara】光束发射模块学习

效果 步骤 1. 新建一个Niagara发射器&#xff0c;使用Empty模板&#xff0c;这里命名为“NE_Beam” 打开“NE_Beam”&#xff0c;添加条带渲染器 添加“Spawn Burst Instantaneous”模块&#xff0c;设置生成数量为100 添加一个“Beam Emitter Setup”模块 再添加一个“Spawn …

Linux C应用编程:MQTT物联网

1 MQTT通信协议 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传 输&#xff09;是一种基于客户端-服务端架构的消息传输协议&#xff0c;如今&#xff0c;MQTT 成为了最受欢迎的物联网协议&#xff0c;已广泛应用于车联网、智能家居、即时聊…

sqoop:错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster(已解决)

1 报错信息 错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster 说明&#xff1a; 操作将数据库中的数据导入到HDFS中 执行sqoop import --connect jdbc:mysql://aaa01:3306/mysql --username root --password root --table test 时报了以下错误 2 报…

遥控小车电子方案

遥控小车的功能开发主要包括以下几个方面&#xff1a; 1.基本功能开发&#xff1a; 前进、后退、左转、右转&#xff1a;通过遥控器上的控制按钮&#xff0c;实现小车的前进、后退、左转和右转。加速、减速&#xff1a;通过遥控器上的油门控制按钮&#xff0c;实现小车的加速…

【深度学习】Fine-Grained Face Swapping via Regional GAN Inversion高保真换脸范式

文章目录 代码介绍实践效果 帮助、问询 代码 https://github.com/e4s2022/e4s 介绍 Fine-Grained Face Swapping via Regional GAN Inversion 提出一种新的高保真换脸范式&#xff0c;能够保留期望的微妙几何和纹理细节。从微观面部编辑的角度重新思考换脸任务&#xff0c;基…

Matlab 实时读取串口并绘图

Matlab 实时读取串口并绘图 Vofa Vofa 是一个很好的跨平台上位机软件&#xff0c;但是它无法保存数据&#xff0c;而且作者也并没有要继续更新的意思&#xff0c;保存数据功能应该是遥遥无期了。因此本文使用 Matlab 实时读取串口数据&#xff0c;并使用 plot 函数绘制。 vo…

洛谷P1305 新二叉树

Java 代码 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();char arr[][] new char[n][3];for (int i 0; i < n; i) {String strsc.next();char arr1[]str.toCharArray()…

Linux学习-网络UDP

网络 数据传输,数据共享 网络协议模型 OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式&#xff08;数据报、流式&#…

hexo接入github Discussions评论系统

评论存储仓 可以是你的博客项目的(github)仓库&#xff0c;也可以单独新建一个评论存储仓库。 我的博客项目在gitee上&#xff0c;就以新建存储仓为例&#xff1a; 使用Discussions评论系统必须开通Discussions模块&#xff01; 安装giscus插件 https://github.com/apps/…

如何在香橙派AIpro开发板升级CANN软件包

香橙派AIpro开发板是香橙派联合昇腾精心打造的高性能AI开发板&#xff0c;开发者可以基于昇腾CANN软件栈能力&#xff0c;快速构建AI应用和业务&#xff0c;实现图像、视频等多种数据分析与推理计算。在之前的文章中&#xff0c;我们已经了解了如何搭建开发环境&#xff0c;并基…

通过调用Vcenter-Api获取Vcenter中服务器信息

通过调用Vcenter-Api获取Vcenter中服务器信息 文章目录 通过调用Vcenter-Api获取Vcenter中服务器信息1. 获取Vmware API帮助文档2. 获取访问凭证3. 获取服务器清单4. 获取服务器更多信息5. 获取虚机更多信息6. 获取磁盘信息7. 获取操作系统相关 1. 获取Vmware API帮助文档 htt…

SHAP安装问题

一、安装 pip install shap -i https://pypi.tuna.tsinghua.edu.cn/simple 二、遇到问题 1、提示报错如下&#xff1a; ModuleNotFoundError: No module named numba.core 安装numba&#xff1a; pip install numba -i https://pypi.tuna.tsinghua.edu.cn/simple 提示已经…

FPGA核心板在声呐系统中的应用

前言 声纳系统使用声脉冲来探测、识别和跟踪水下物体。一个完整的声纳系统是由一个控制和显示部件、一个发射器电路、一个接收器电路和同时能作为发射装置&#xff08;扬声器&#xff09;和探测装置&#xff08;高灵敏度麦克风&#xff09;的传感器组成。 声纳系统图 技术挑战…

python爬虫----BeautifulSoup(第二十天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

Linux/October

October Enumeration Nmap 扫描发现对外开放了22和80端口&#xff0c;使用nmap详细扫描这两个端口 ┌──(kali㉿kali)-[~/vegetable/HTB/October] └─$ nmap -sC -sV -p 22,80 -oA nmap 10.10.10.16 Starting Nmap 7.…

基于Springboot的笔记记录分享网站(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的笔记记录分享网站&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

华为OD技术面试-有序数组第K最小值

背景 2024-03-15华为od 二面&#xff0c;记录结题过程 有序矩阵中第 K 小的元素 - 力扣&#xff08;LeetCode&#xff09; https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/submissions/512483717/ 题目 给你一个 n x n 矩阵 matrix &#xff0c;其…

基于spring boot的班级综合测评管理系统

基于spring boot的班级综合测评管理系统设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开…

总分410+专业130+国防科技大学831信号与系统考研经验国防科大电子信息与通信工程,真题,大纲,参考书。

好几个学弟催着&#xff0c;总结一下我自己的复习经历&#xff0c;希望大家复习少走弯路&#xff0c;投入的复习正比换回分数。我专业课831信号与系统130&#xff08;感觉比估分要低&#xff0c;后面找Jenny老师讨论了自己拿不准的地方也没有错误&#xff0c;心里最近也这经常回…