MySQL —— 数据库基础

news2024/11/14 18:36:50

目录

一、数据库的基本概念

1. 什么是数据库

2. 主流的数据库

二、基本使用

1. 连接服务器

2. 服务器管理

3. 服务器、数据库、表关系

4. 使用案例

5. 数据库的存储逻辑

三、MySQL架构

四、SQL分类

五、存储引擎

1. 存储引擎

2. 查看存储引擎

3. 存储引擎对比

六、修改MySQL密码


一、数据库的基本概念

1. 什么是数据库

        数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用-------- 百度百科。

存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:
  • 文件的安全性问题:数据误操作后无法进行回滚。
  • 文件不利于数据查询和管理:没有将存储的数据以某种数据结构组织起来。
  • 文件不利于存储海量数据:数据量越大用户操控数据的成本越高。
  • 文件在程序中控制不方便:数据的控制需要用户自己来完成。
        为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。 数据库的水平是衡量一个程序员水平的重要指标

MySQL客户端 vs MySQL服务器

        首先,当你在特定的目录下安装好MySQL之后,会有mysql和mysqld,他们分别是客户端和服务器,从上图可以看出服务的体积是要大一些的。

2. 主流的数据库

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

二、基本使用

        接下来的MySQL的基本使用,只需要知道如何在命令行登录MySQL服务器即可,一些SQL语句在本篇博客中不会深入讲解,混个脸熟即可。

1. 连接服务器

在命令行中连接MySQL服务器如下:

  • -h: 表示你要连接的MySQL服务器所在的主机,127.0.0.1表示本地主机。
  • -P: (大写的P)表示你要连接的MySQL服务器所对应的端口号,一般默认是3306。
  • -u: 表示用哪一个用户连接MySQL服务器,root表示超级用户。
  • -p: 表示该用户对应的密码,密码可以直接跟在-p后面,也可以回车后输入

        一般如果你是在学习阶段,用的是本地主机进行连接的话,也可以像下面这种方式进行登录:

当你正确输入密码并回车之后,就会出现如下的提示,表明你已经连接到MySQL啦

        此时你就可以输入各种SQL语句让服务器执行了,当要退出mysql时直接输入 quit exit 或 \q

2. 服务器管理

停止MySQL服务:执行systemctl stop mysqld 命令 或 service mysqld stop 命令。

启动MySQL服务:执行systemctl start mysqld 命令 或 service mysqld start 命令。

重启MySQL服务:执行systemctl restart mysqld 命令 或 service mysqld restart 命令。

3. 服务器、数据库、表关系

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器、数据库和表的关系如下:

  • 图中的Client对应的就是mysql命令,MySQL对应的就是mysqld服务。
  • DB(database)表示的是mysqld管理的多个数据库,而每一个DB下会包含多张表。

4. 使用案例

数据存储路径

        通过MySQL创建的数据库和各种表结构,最终会以文件的形式存储下来,通过查看MySQL的配置文件中的datadir可以得知数据文件的存储路径。

        比如我的MySQL配置文件的路径为/usr/local/myaql/data/data,也就是你在后续创建的数据库以及各种表都是在这个路径下,当然你可以进行修改。

        我们可以看看这个目录下都有哪些东西 ,可以看到该目录下有很多MySQL相关的数据文件。

创建数据库:create database hello;

        可以看到,在MySQL中执行SQL语句,创建了一个数据库,其实就相当于创建了一个目录,在这个目录下,只有一个名为的db.opt的文件,该文件中指明了当前数据库的默认字符编码和字符校验规则。(需要注意的是,你在查看MySQL所创建的数据库是,最好是切换到超级用户)

删除数据库:drop database hello;

 删除数据库,本质就是删除了这个目录

使用数据库:use hello;

 显示数据库,就相当于我们在linux下执行ll命令,使用数据库相当于在linux下执行cd命令

创建数据库表

我们用create语句创建一个student表: 

通过show语句可以查看创建的student表结构。比如:

        由于student表采用的存储引擎是InnoDB,因此在MySQL的数据存储路径下的helloworld目录下,就会多出两个文件,分别是student.frm和student.ibd。如下:

 其中student.frm是表结构文件,student.ibd是表数据和索引的文件。

小贴士:InnoDB存储引擎对应的是两个,MyISAM存储引擎对应的是三个 

表中插入数据 

通过desc语句可以查看对应的表结构: 

通过insert语句可以向表中插入数据

查询表中的数据

通过select语句可以查看表中的数据: 

5. 数据库的存储逻辑

表中的数据是以二维表格的形式进行呈现的,包括行和列。如下: 

 其中每一行我们称之为是一条记录,而每一列都代表一个属性(属性列)。

三、MySQL架构

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

由图,可以看出MySQL最上层是连接组件。下面服务器是由连接池、管理工具和服务、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。

  • 连接池:由于每次建立建立需要消耗很多时间,连接池的作用就是将这些连接缓存下来,下次可以直接用已经建立好的连接,提升服务器性能。
  • 管理工具和服务:系统管理和控制工具,例如备份恢复、Mysql复制、集群等
  • SQL接口:接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface
  • 解析器: SQL命令传递到解析器的时候会被解析器验证和解析。
  • 优化器:查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。
  • 缓存器: 查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
  • 可插拔存储引擎:在MySQL中对应着多种存储引擎,上层用户想要使用哪一个存储引擎直接指定就可以,这就像C++中的多态,存储引擎继承了上层服务,加以重新实现,父类的指针或引用指向那个存储引擎就使用哪个存储引擎的方法。

四、SQL分类

SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 

  • DDL【data definition language】 数据定义语言,用来维护存储数据的结构

代表指令: create, drop, alter

  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
  • DML中又单独分了一个DQL,数据查询语言

代表指令: select

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

五、存储引擎

1. 存储引擎

        存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

2. 查看存储引擎

show engines;

 其中MySQL底层默认使用的存储引擎是InnoDB,该存储引擎支持事务、行级锁、外键等。

3. 存储引擎对比

六、修改MySQL密码

使用set password命令

set password for 你的用户名@localhost = password('你的密码');

 

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

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

相关文章

Elasticsearch 这篇还不够吗

系列文章目录 文章目录系列文章目录一、概述1. ES 的基本概念2. ES 和关系型数据库的对比二、环境准备1. linux 下单机安装三、入门操作1. 创建索引2. 写入文档3. 根据id搜索文档4. 根据一般字段搜索文档5. 根据文本字段搜索文档四、ES 客户端实战1. Spring Data Elasticsearch…

学习shell与shell编程 vi与vim

Linux配置文件都是以ASCII的纯文本形式存在。 为什么学习vi 1)UnixLike系统都会内置vi文本编辑器,其他的文本编辑器则不一定存在 2)许多软件的编辑接口都会主动调用vi 3)vi具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性 4)程序简单&#…

webgl纹理贴图机制

文章目录前言纹理图片大小规范纹理坐标系统贴图流程JavaScript部分齐次坐标—uv坐标数据准备加载外部纹理图像纹理配置加载着色器部分顶点着色器片元着色器完整示例使用多张纹理着色器接受两个纹理单元封装纹理配置赋值函数完整示例总结前言 在计算机图形学中,为了…

HTML+CSS+JS制作炫酷【烟花特效】

文章目录制作炫酷烟花特效一、普通烟花(分散形)HTML代码CSS代码JS代码二、圆形烟花HTML代码CSS代码JS代码三、爱心形烟花HTML代码CSS代码JS代码四、源码获取在线下载制作炫酷烟花特效 💡本篇内容使用htmlcssjs制作鼠标点击出现烟花效果,分别介绍了分散型…

python-测试代码

1. 测试函数get_name.pydef combination(first, last):将姓名组合在一起name first lastreturn name.title()hello_world.pyfrom get_name import combinationprint("Enter q to quit!") while True:first input(Please input your first name: )if first q:b…

理光Aficio MP C2500扫描到文件夹设置方法

首先在需要接收扫描文件的电脑上设置共享文件夹。 注: (1)文件夹的名字最好简单一点,比如:scan、123等等; (2)文件夹的共享权限最好能设置为最大(WindowsXP、Windows200…

Future、CompletableFuture概述

1.同步和异步 (1)同步:需要等待结果返回,才能继续运行 (2)异步:不需要等待结果返回,就能继续运行 (3)异步设计:多线程可以让方法执行变为异步(比…

第四章必备前端基础知识-第二节3:CSS盒模型和浮动

文章目录一:盒模型(1)border(2)padding(3)margin二:flex布局一:盒模型 盒模型:在HTML中,每个标签(或元素)相当于是一个盒…

Mybatis和Jpa

这里写目录标题1.Mybatis1.1 JDBC的缺点1.2 Mybatis的整体架构1.3 入门案例1.3.1 问题:无法连接到数据库服务器1.4 动态代理实现Mapper1.5 mybatis-config.xml配置1.5.1 properties属性读取外部资源1.5.2 settings设置1.5.3 typeAliases1.5.4 typeHandlers(类型处理…

【Substance Designer】基础操作和节点学习记录

写在前面 这个记录稍微有点杂,大概是庄懂的技术美术入门课(美术向)-直播录屏-第20课和一些基础操作的记录合集吧! 补充 学习发现,基础的节点是需要学习和记录的,但是真正用起来还是要多用多练!所以这种简单的记录节点…

YOLOv5/v7 引入 RepVGG 重参数化模块

本篇博文代码出自YOLOv5-lite ,YOLOv5-lite的作者在CSDN的账号是 pogg_ ,大家可以关注一下,这也是一位在开源项目上做了很多工作的博主。 RepVGG的原理和融合推导过程可以看我的这篇博文:RepVGG:让VGG风格的ConvNets再…

机制设计原理与应用(三)Screening

文章目录3 Screening3.1 为单个不可分割的项目定价3.1.1 对θ\thetaθ的假设3.1.2 问题描述3.1.3 特性3.2 为无限可分的项目定价3.2.1 对θ\thetaθ的假设3.2.3 特性3.2.4 收益最大化3.2.5 最优解决方案3 Screening Screening theory:机制设计理论可以被看作是其多…

Cadence PCB仿真使用Allegro PCB SI生成振铃ringing仿真报告及报告导读图文教程

🏡《Cadence 开发合集目录》   🏡《Cadence PCB 仿真宝典目录》 目录 1,概述2,生成报告3,报告导读4,总结1,概述 本文简单介绍使用Allegro PCB SI生成网络的振铃性能评估的报告的方法,及振铃ringing报告要点导读。 2,生成报告 第1步,选择需要生成报告的网络,然后…

第二章 ArcGIS数据和地理数据库

文章目录第一节 ArcGIS和4D数据基本知识1 4D数据介绍1.1 DLG1.2 DEM1.3 DOM1.4 DRG1.5 4D表现2 ArcGIS的数据和4D数据对应3 栅格数据3.1 查看帮助3.2 空间分辨率3.3 分辨率与比例尺换算3.4 栅格数据介绍——cellsize3.5 栅格数据波段3.6 栅格格式4 栅格数据改变分辨率5 转换栅格…

【 uniapp - 黑马优购 | 登录与支付(2)】如何实现三秒后跳转和微信支付

个人名片: 🐼作者简介:一名大二在校生,讨厌编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:见文末 🕊️系列专栏:🖼…

Ubuntu20.04+MAVROS+PX4+Gazebo安装教程

Ubuntu20.04MAVROSPX4Gazebo安装PX4步骤安装MAVROS安装QGCPX4仿真安装PX4步骤 从github上clone源码 git clone https://github.com/PX4/PX4-Autopilot.git --recursive进入PX4-Autopilot文件夹,继续下载未下载完的组件 cd PX4-Autopilot/ git submodule update -…

flowable使用 act_hi_xxx

HistoryService 流程历史信息 act_hi_procinst : 历史流程信息&#xff0c;&#xff0c;如果流程执行完了&#xff0c;end_time_ 和 duration不为null // 没有执行完的List<HistoricProcessInstance> list historyService.createHistoricProcessInstanceQuery().unfi…

uniapp封装并全局挂载request请求

前言 日常开发中,前端项目中需要调用服务端api完成页面渲染,uniapp提供的请求api:uni.request相对繁琐;另外服务端提供的不同api仅子路径不同,api域名以及根路径都是相同的,一旦接口api变更,需要更改地方就会很多.鉴于以上可以将uni.request进行封装,简化开发. 目前uniapp项…

MySQL(四):B+树索引、聚簇索引、二级索引、联合索引

目录一、B树索引1.1 在没有索引时进行查找记录1.2 索引方案1.3 InnoDB中的索引方案二、聚簇索引三、二级索引四、联合索引五、InnoDB中B树索引的注意事项5.1 根页面的位置不会改变5.2 内节点中目录项记录的唯一性5.3 一个页面至少容纳两条记录一、B树索引 数据库中的用来存储数…

MySQL进阶篇之索引1

02、索引 2.1、索引概述 1、介绍 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构&#xff08;有序&#xff09;。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#…