当前位置: 首页 > news >正文

MySQL 01 02 章——数据库概述与MySQL安装篇

一、数据库概述

(1)为什么要使用数据库

  1. 数据库可以实现持久化,什么是持久化:数据持久化意味着将内存中的数据保存到硬盘上加以“固化”
  2. 持久化的主要作用是:将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中

(2)数据库与数据库管理系统

1.2.1数据库的相关概念

  1. DB,数据库(Database):即存储数据的仓库,其本质是一个文件系统。它保存了一系列有组织的数据
  2. DBMS,数据库管理系统(Database Management System):是一种用于操纵和管理数据的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据
  3. SQL,结构化查询语言(Structured Query Language):专门用来与数据库通信的语言

1.2.2数据库与数据库管理系统的关系

  1. 数据库管理系统(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为了保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据

1.2.3常见的数据库管理系统排名(DBMS)

  1. 目前互联网上常见的数据库管理软件有:Oracle、MySQL、MS SQL Server、DB2、PostgreSQL、Access、Sybase、Informix这几种

1.2.4常见的数据库介绍

(3)MySQL介绍

1.3.1概述

  1. MySQL是一个开放源代码的关系型数据库管理系统
  2. MySQL6.x版本之后分为社区版(免费)和商业版(收费)
  3. MySQL可以运行于多个系统上,并且支持多种语言

1.3.2MySQL发展史重大事件

1.3.3关于MySQL 8.0

  1. MySQL从5.7版本直接跳跃发布了8.0版本

1.3.4Why choose MySQL?

  1. 开放源代码,使用成本低
  2. 性能卓越,服务稳定
  3. 软件体积小,使用简单,并且易于维护
  4. 历史悠久,社区用户非常活跃,遇到问题可以寻求帮助
  5. 许多互联网公司在用,经过了时间的验证

1.3.5Oracle vs MySQL

  1. Oracle更适合大型跨国企业的使用。因为他们对费用不敏感,但是对性能要求以及安全性有更高的要求
  2. MySQL由于其体积小、速度快、总体拥有成本低,可处理上千万条记录的大型数据库,尤其是开放源码这一特点,使得很多互联网公司、中小型网站选择了MySQL作为网站数据库

(4)RDBMS与非RDBMS

从排名中我们能看出来,关系型数据库绝对是DBMS的主流,其中使用最多的DBMS分别是Oracle、MySQL和SQL Server。这些都是关系型数据库(RDBMS)

1.4.1关系型数据库(RDBMS)

  1. 关系型数据库模型是把复杂的数据结构归结为简单的二维表格形式
  2. 关系型数据库以行(row)和列(column)的形式存储数据。这一系列的行和列被称为表(table),一组表组成了一个库(database)
  3. 表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系型数据库,就是建立在关系模型基础上的数据库
  4. SQL就是关系型数据库的查询语言
  5. 优势:
    1. 可以用SQL语句方便地在一个表以及多个表之间做非常复杂的数据查询
    2. 使得对于安全性能很高的数据访问要求得以实现

1.4.2非关系型数据库(非RDBMS)

  1. 非关系型数据库,可以看成传统关系型数据库的功能阉割版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高。同时,通过减少不常用的功能,进一步提高性能
  2. 有哪些非关系型数据库:键值型数据库(Redis)、文档型数据库(MongoDB)、搜索引擎数据库(Elasticsearch)、列式数据库、图形数据库

1.4.3小结

(5)关系型数据库设计规则

  1. 关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的
  2. 将数据放到表中,表再放到库中
  3. 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己,表名具有唯一性
  4. 表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和Python中“类”的设计

1.5.1表、记录、字段

  1. E-R(entity-relationship,实体-联系)模型中有三个主要概念是:实体集、属性、联系集
  2. 一个实体集(class)对应于数据库中的一个表(table),一个实体(instance)则对应于数据库表中的一行(row),也称为一条记录(record)。一个属性(attribute)对应于数据库表中的一列(column),也称为一个字段(field)
  3. ORM思想(Object Relational Mapping):
    1. 数据库中的一个表→Java或Python中的一个类
    2. 表中的一条数据→类中的一个对象(实体)
    3. 表中的一个列→类中的一个属性(field)

1.5.2表的关联关系

  1. 表与表之间的数据记录有关系。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示
  2. 表的关联关系有四种:一对一关联、一对多关联、多对多关联、自我引用
  3. 一对一关联:
    1. 在实际的开发中应用不多,因为一对一可以创建成一张表
    2. 举例:设计学生表:学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急联系人、......(1)拆为两个表:两个表的记录是一一对应关系(2)基础信息表(常用信息):学号、姓名、手机号码、班级、系别(3)档案信息表(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、......
  4. 一对多关联:
    1. 常见实例场景:客户表和订单表、分类表和商品表、部门表和员工表
    2. 举例:(1)员工表:员工编号、姓名、...、所属部门(2)部门表:部门编号、名称、简介
  5. 多对多关联:
    1. 要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中
    2. 举例1:学生——课程(1)学生信息表:一行代表一个学生的信息(学号、姓名、手机号码、班级、系别)(2)课程信息表:一行代表一个课程的信息(课程编号、授课老师、简介)(3)选课信息表:一个学生可以选多门课,一门课可以被多个学生选择
    3. 举例2:产品——订单(1)产品表:产品表中的每条记录表示一个产品(2)订单表:订单表中的每条记录表示一个订单(3)订单明细表:每个产品可以与订单表中的多条记录对应,即出现在多个订单中。一个订单可以与产品表中的多条记录对应,即包含多个产品
  6. 自我引用

二、MySQL环境搭建

(1)MySQL的卸载

  1. 步骤一:停止MySQL服务。在卸载之前,先停止MySQL的服务。按键盘上的“Ctrl+Alt+Delete”组合键,打开“任务管理器”对话框,可以在“服务”列表找到MySQL的服务,如果处于“正在运行”状态,可以右键单击它,选择“停止”选项来停止MySQL的服务
  2. 步骤二:软件的卸载(使用控制面板的软件卸载,去卸载MySQL DBMS软件的安装位置D:\MySQL\MySQL Server 8.0)
  3. 步骤三:手动删除数据库文件C:\ProgramData\MySQL\MySQL Server 8.0\Data
  4. 步骤四:清理注册表(win+R,输入regedit)
  5. 步骤五:删除环境变量配置,并重启电脑

(2)MySQL的下载、安装、配置

2.2.1MySQL的四大版本

  1. MySQL Community Server 社区版本:开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户

  2. MySQL Enterprise Edition 企业版本:需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户

  3. MySQL Cluster 集群版:开源免费。用于架设集群服务器,可以将几个MySQL Server封装成一个Server。需要在社区版或企业版的基础上使用

  4. MySQL Cluster CGE 高级集群版:需付费

2.2.2软件的下载

  1. 下载地址:http://www.mysql.com
  2. 点击DOWNLOADS,下滑,点击MySQL Community (GPL) Downloads
  3. 点击MySQL Community Server
  4. 选择想要下载的版本,点击Go to Download Page超链接
  5. 下载它

2.2.3MySQL8.0版本的安装

  1. 双击下载好的msi(msi下载和配置是一起完成的,如果下载的是zip,还要再进行配置)
  2. 选择Custom,点击next
  3. 选择自己要安装的服务器版本
  4. 选择安装位置,点击Advanced Options超链接
  5. 一直点next,然后点击Execute

2.2.4配置MySQL8.0

  1. 在该界面点击next,再点击next
  2. 加密规则可以不用修改
  3. 设置root用户的密码(比如:123456),设置完点击next
  4. Start the MySQL Server at System Startup表示开机自启,然后一直点next
  5. 点击Execute
  6. 可以看到软件已经安装完成

2.2.5配置MySQL8.0环境变量

  1. 如果不配置MySQL环境变量,就不能在命令行直接输入MySQL登陆命令
  2. 步骤一:右击此电脑,点击属性
  3. 步骤二:在系统窗口中选择高级系统设置
  4. 步骤三:点击环境变量
  5. 步骤四:编辑Path变量
  6. 步骤五:将MySQL应用程序的bin目录添加到变量值中

2.2.6MySQL5.7版本的安装、配置

  1. 步骤几乎和8.0版本一致。因为已经下载过8.0版本,此时还想下载5.7版本,我们点击Add。端口号改为13306
  2. 一个电脑中可以下载安装多个MySQL,只要保证进程端口号不同即可
  3. 如果下载了多个MySQL,环境变量只要配一个。如果我们配的是8.0版本,那么
  4. 如果想连接8.0版本
  5. 如果想连接5.7版本

(3)MySQL的登录

2.3.1服务的启动与停止

MySQL安装完毕之后,需要启动服务器进程,不然客户端无法连接数据库

在前面的配置过程中,已经将MySQL安装为Windows服务,并且勾选当Windows启动、停止时,MySQL也自动启动、停止

  1. 方式一:使用图形界面工具(1)右击此电脑,选择“管理”(2)服务和应用程序→服务
  2. 方式二:使用命令行工具(以管理员身份运行)。必须先启动服务,才能登录成功

2.3.2自带客户端的登录与退出

  1. 登陆方式1:MySQL自带客户端
  2. 登陆方式2:windows命令行
  3. -u后面可以有空格,-p后面不能有空格
  4. windows命令行登录mysql还可以这么写(推荐使用该方式):
  5. 不加-P端口号时,默认登陆的是环境变量配置的MySQL版本

2.3.3退出登录和查看版本信息

  1. 退出登录:quit或exit
  2. 查看版本信息(两种方式:先登录再查看,直接查看): 

(4)MySQL演示使用

2.4.1MySQL的使用演示

  1. 显示数据库
  2. 创建数据库
  3. 创建表,必须在库之下
  4. 查看表中的数据
  5. 向表中插入数据
  6. 在5.7版本中添加中文会报错,但是在8.0版本中添加中文不会报错(因为8.0版本的字符集是utf8)

2.4.2MySQL的编码设置

  1. 查看编码命令:
  2. 修改mysql的数据目录下的my.ini配置文件,修改完以后要重启服务才会生效
  3. 可以看到修改成功,此时在5.7版本下,也可以添加中文数据

(5)MySQL图形化管理工具

2.5.1MySQL Workbench

  1. 下载地址:http://dev.mysql.com/downloads/workbench/
  2. 连接MySQL
  3. 以登录5.7版本为例

2.5.2Navicat

  1. 下载地址:http://www.navicat.com/

2.5.3SQLyog

2.5.4dbeaver

  1. 下载地址:https://dbeaver.io/download/

(6)MySQL目录结构与源码

2.6.1主要目录结构

  1. MySQL的主要目录结构:
    MySQL的目录结构说明
    bin目录所有MySQL的可执行文件。如:mysql.exe
    MySQLInstanceConfig.exe数据库的配置向导,在安装时出现的内容
    data目录系统数据库所在的目录
    my.ini文件MySQL的主要配置文件
    C:\ProgramData\MySQL\MySQL Server 8.0\Data\用户创建的数据库所在的目录

2.6.2MySQL源代码获取

该笔记根据尚硅谷的MySQL课程整理

相关文章:

MySQL 01 02 章——数据库概述与MySQL安装篇

一、数据库概述 (1)为什么要使用数据库 数据库可以实现持久化,什么是持久化:数据持久化意味着将内存中的数据保存到硬盘上加以“固化”持久化的主要作用是:将内存中的数据存储在关系型数据库中,当然也可以…...

运行framework7

安装 framework7 下载地址https://gitcode.com/gh_mirrors/fr/framework7-vue node 下载 https://nodejs.cn/#ionic 配置npm 的镜像源 npm config set registry https://registry.npmmirror.com 下载nvm 进行nvm管理https://www.downza.cn/soft/352547.html 我一开始使用node…...

【Web】软件系统安全赛CachedVisitor——记一次二开工具的经历

明天开始考试周,百无聊赖开了一把CTF,还顺带体验了下二开工具,让无聊的Z3很开心🙂 CachedVisitor这题 大概描述一下:从main.lua加载一段visit.script中被##LUA_START##(.-)##LUA_END##包裹的lua代码 main.lua loca…...

实现自定义集合类:深入理解C#中的IEnumerable<T>接口

文章目录 介绍主要成员示例代码约束常见的约束类型示例代码介绍 在C#中,IEnumerable<T> 是一个泛型接口,用于表示可以被枚举的集合。它定义了用于遍历集合中元素的方法和属性。IEnumerable<T> 是 IEnumerable 的泛型版本,提供了类型安全的枚举功能。 当我们实…...

Compression Techniques for LLMs

Compression Techniques for LLMs 随着大型语言模型&#xff08;LLMs&#xff09;的迅速发展&#xff0c;提高其计算效率和存储效率成为研究的重要方向。为了实现这一目标&#xff0c;诸多压缩技术应运而生。本文将深入探讨几种有效的压缩技术&#xff0c;这些技术不仅能够降低…...

Nexus Message Transaction Services(MTS)

Nexus 系列交换机遇到以下情形时&#xff0c;可以尝试查看是否是 MTS 消息卡在缓冲区过多&#xff0c;因为 MTS 负责处理模块内以及跨模块&#xff08;包括跨管理引擎&#xff09;的各服务之间的消息路由和排队。 • CPU 高 • 命令行无响应、响应慢 • 控制平面中断 • 流量问…...

2025年Stable Diffusion安装教程(超详细)

StableDiffusion的安装部署其实并不困难&#xff0c;只需简单点击几下&#xff0c;几分钟就能安装好&#xff0c;不管是windows还是苹果mac电脑&#xff0c;关于StableDiffusion的各种安装方式&#xff0c;这片文章一一来给大家讲明白。&#xff08;所有安装资料都给大家整理好…...

力扣【SQL连续问题】

180. 连续出现的数字 SELECT DISTINCT if(a.num b.num AND b.num c.num,a.num,null) AS ConsecutiveNums FROM Logs a LEFT OUTER JOIN Logs b ON a.id1 b.id LEFT OUTER JOIN Logs c ON a.id2 c.id WHERE if(a.num b.num AND b.num c.num,a.num,null) IS NOT NULL603. 连…...

深圳市-地铁线路和站点名称shp矢量数据(精品)2021年-2030最新arcmap含规划路线内容测评分析

深圳市的地铁网络是城市公共交通系统的重要组成部分&#xff0c;随着城市的发展&#xff0c;其规模和覆盖范围也在不断扩大。这份"深圳市-地铁线路和站点名称shp矢量数据&#xff08;精品&#xff09;2021年-2030最新arcmap含规划路线.zip"压缩包提供了全面而详细的信…...

企业级网络运维管理系统深度解析与实践案例

企业级网络运维管理系统深度解析与实践案例 在当今这个信息化时代,企业网络系统的稳定运行和高效管理成为了业务持续发展和创新的关键。企业级网络运维管理系统作为支撑这一目标的基石,其重要性不言而喻。本文将深入探讨企业级网络运维管理系统的构建原则、关键组件、实施步…...

音视频入门基础:MPEG2-PS专题(5)——FFmpeg源码中,解析PS流中的PES流的实现

一、引言 从《音视频入门基础&#xff1a;MPEG2-PS专题&#xff08;3&#xff09;——MPEG2-PS格式简介》中可以知道&#xff0c;PS流由一个个pack&#xff08;包装&#xff09;组成。一个pack 一个pack_header 一个或多个PES_packet。pack_header中还可能存在system header…...

【问题记录】npm create vue@latest报错

1&#xff0c;错误日志 npm error code EPERM npm error syscall mkdir npm error path D:\Program Files\nodejs\node_cache\_cacache npm error errno EPERM npm error FetchError: Invalid response body while trying to fetch https://registry.npmjs.org/create-vue: EP…...

OpenGL材质系统和贴图纹理

上一篇文章当中笔者为大家介绍了风氏光照模型&#xff0c;相信大家也发现了光照着色器当中有设置有很多控制光照强度的参数&#xff0c;而所谓的材质系统就是我们可以人为的去调节这些参数&#xff0c;让一个物体的反光效果能够更加接近我们现实生活当中的一些物体。 材质系统…...

Markdown中类图的用法

Markdown中类图的用法 前言语法详解基本流程图几何图形节点默认的节点分离节点的ID与内容节点形状圆角形节点的语法圆形节点的语法。非对称节点语法菱形节点的语法。六角形节点的语法。平行四边形节点的语法。梯形节点的语法。 连接线基本的连接线语法。无向线段连接线。点状连…...

钓鱼攻击(Phishing)详解和实现 (网络安全)

钓鱼攻击&#xff08;Phishing&#xff09;详解和实现 钓鱼攻击是一种社会工程学攻击&#xff0c;攻击者通过伪装成可信任的实体诱使受害者泄露敏感信息&#xff0c;如用户名、密码、信用卡号等。以下详细介绍钓鱼攻击的原理、种类、实现方式&#xff0c;以及防御措施。 一、钓…...

window11 wsl mysql8 错误分析:1698 - Access denied for user ‘root‘@‘kong.mshome.net‘

&#x1f6a8; 错误分析&#xff1a;1698 - Access denied for user rootkong.mshome.net 这个错误是因为 MySQL 的 root 用户 使用 auth_socket 插件进行身份验证&#xff0c;而不是使用密码。因此&#xff0c;当你尝试从 远程主机 连接时&#xff0c;MySQL 会拒绝访问。 ✅ …...

C++线程同步之条件变量

C线程同步之条件变量 文章目录 C线程同步之条件变量什么是条件变量&#xff08;Condition Variable&#xff09;&#xff1f;条件变量的主要用途常见的应用场景C11中的条件变量condition_variable的使用方法std::condition_variable的使用步骤典型的使用示例&#xff1a;生产者…...

如何实现多条件搜索

我们先来看多条件查询的样式是什么样的&#xff01; 给查询按钮添加点击事件&#xff0c;然后获取到对应输入框中的值 然后通过filter过滤&#xff0c;对获取到的数据进行筛选 &#xff0c;然后调用渲染函数将过滤搜索到的数据在页面中显示出来。 这就是进行多条件搜索出来的效…...

深入MySQL复杂查询优化技巧

在上一篇文章中&#xff0c;我们介绍了 MySQL 的关联关系理论与基础实践。本篇文章将进一步探讨 MySQL 复杂查询的优化技巧&#xff0c;帮助开发者应对大型数据集和高并发场景中的性能挑战。我们将涵盖索引设计、查询计划分析、分区技术以及事务管理的优化。 一、索引优化 索引…...

Fabric环境部署-Git和Node安装

一.安装Git&#xff08;v2.43.0&#xff09; Git 是一个开源的分布式版本管理系统&#xff08;也是全球最大的开源软件存储服务器&#xff09;&#xff0c;用于敏捷高效地处理任何或小或大的项目。搭建区块链需要使用Git&#xff0c;因为区块链的开发和部署需要使用版本控制工…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?

系列回顾&#xff1a; 在上一篇《React核心概念&#xff1a;State是什么&#xff1f;》中&#xff0c;我们学习了如何使用useState让一个组件拥有自己的内部数据&#xff08;State&#xff09;&#xff0c;并通过一个计数器案例&#xff0c;实现了组件的自我更新。这很棒&#…...

[C++错误经验]case语句跳过变量初始化

标题&#xff1a;[C错误经验]case语句跳过变量初始化 水墨不写bug 文章目录 一、错误信息复现二、错误分析三、解决方法 一、错误信息复现 write.cc:80:14: error: jump to case label80 | case 2:| ^ write.cc:76:20: note: crosses initialization…...

DL00871-基于深度学习YOLOv11的盲人障碍物目标检测含完整数据集

基于深度学习YOLOv11的盲人障碍物目标检测&#xff1a;开启盲人出行新纪元 在全球范围内&#xff0c;盲人及视觉障碍者的出行问题一直是社会关注的重点。尽管技术不断进步&#xff0c;许多城市的无障碍设施依然未能满足盲人出行的实际需求。尤其是在复杂的城市环境中&#xff…...

组合模式:构建树形结构的艺术

引言:处理复杂对象结构的挑战 在软件开发中,我们常遇到需要处理部分-整体层次结构的场景: 文件系统中的文件与文件夹GUI中的容器与组件组织结构中的部门与员工菜单系统中的子菜单与菜单项组合模式正是为解决这类问题而生的设计模式。它允许我们将对象组合成树形结构来表示&…...

鸿蒙APP测试实战:从HDC命令到专项测试

普通APP的测试与鸿蒙APP的测试有一些共同的特征&#xff0c;但是也有一些区别&#xff0c;其中共同特征是&#xff0c;它们都可以通过cmd的命令提示符工具来进行app的性能测试。 其中区别主要是&#xff0c;对于稳定性测试的命令的区别&#xff0c;性能指标获取方式的命令的区…...