【MySQL】数据库基础知识

2023-05-16

文章目录

  • 一. 什么是数据库
  • 二. 为什么要有数据库
  • 三. 数据库分类
  • 四. 数据库的基本使用
    • 1. MySQL安装
    • 2. 检查MySQL后端服务器是否启动
    • 3. 连接MySQL服务器
    • 4. 服务器,数据库,表关系
    • 5. 数据存储逻辑
  • 五. MySQL体系结构
  • 六. SQL语句分类
  • 七. 存储引擎

一. 什么是数据库

数据库(database)是一整套的数据存储容灾解决方案。是用来组织、存储和管理数据的仓库。

当今世界充斥着大量的数据。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音也都是数据。为了方便管理互联网世界中的数据,就有了数据库管理系统的概念(简称:数据库)。用户可以对数据库中的数据进行新增、查询、更新、删除等操作。

二. 为什么要有数据库

存储数据用文件就可以了,为什么还要弄个数据库?

文件保存数据有以下几个缺点:

  • 文件的安全性不高。
  • 文件不利于数据查询和管理,因为需要遍历,效率太低。
  • 文件不利于存储海量数据。

为了解决上述问题,专家们设计出了一套专门的数据管理系:数据库。

三. 数据库分类

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

四. 数据库的基本使用

1. MySQL安装

Centos7安装MySQL详细步骤

所谓安装MySQL,其实是在我们的平台上安装MySQL的客户端和服务器:
在这里插入图片描述
更确切地说,MySQL服务的本质是一个网络服务器进程,所以它也应有自己对应的端口号和其所遵守的协议:
在这里插入图片描述

2. 检查MySQL后端服务器是否启动

安装完成后输入命令:ps axj | grep mysqld来检查MySQL的后端服务器mysqld是否启动:在这里插入图片描述
另外输入命令:systemctl stop mysqld可以终止MySQL后端服务器:
在这里插入图片描述
输入命令:systemctl start mysqld开启MySQL后端服务器:
在这里插入图片描述

3. 连接MySQL服务器

命令行上输入mysql -uroot -p,接着再输入密码即可连接上MySQL服务器:
在这里插入图片描述
想要退出MySQL,只需输入quit即可:
在这里插入图片描述
PS:清屏的话可以输入system clear;或者按ctrl + l组合键。

4. 服务器,数据库,表关系

  • 首先我们需要连接MySQL服务器,然后在MySQL客户端中输入对数据的操作SQL语句,并交给服务器端完成。
  • 同时我们可以创建多个数据库,为了保存应用中实体的数据,一般会在数据库中创建多张表,以保存程序中实体的数据。

数据库服务器、数据库和表的关系如下:在这里插入图片描述

数据库与文件的关系

上图中数据库和表的关系很像学习操作系统时,老师给我们介绍的目录和普通文件之间的关系,其实一个数据库就相当于一个目录,而表相当于数据库下目录的普通文件。

my.cnf是mysql启动时加载的配置文件,其默认存储路径为:/etc/my.cnf。进入后可以看到MySQL的数据存储路径为:datadir=/var/lib/mysql,即我们所创建的数据库和表都存储在该路径下:
在这里插入图片描述

  • Note1:创建一个数据库,本质就是在数据库的数据路径/var/lib/mysql下,新建一个目录
    在这里插入图片描述
    新建的数据库里默认有一个文件db.opt,初始时它里面存有该数据库的字符集和字符集校验规则:
    在这里插入图片描述

  • Note2:创建表之前,一定要先选中并进入一个数据库,这相当于进入一个目录文件
    在这里插入图片描述

  • Note3:创建表的本质是在指定的数据库目录下,新建几个相关的普通文件
    在这里插入图片描述

5. 数据存储逻辑

在这里插入图片描述

表格结构介绍

表格由行和列组成,其中一行代表一条记录;一列代表一个属性:
在这里插入图片描述

五. MySQL体系结构

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

六. SQL语句分类

  • DDL【data definition language】: 数据定义语言,用来维护存储数据的结构
    代表指令: create、drop、alter。
  • DML【data manipulation language】 :数据操纵语言,用来维护数据本身
    代表指令: insert、delete、update。
    • DML中又单独分了一个DQL,表示数据查询语言,代表指令: select。
  • DCL【data control language】:数据控制语言,主要负责权限管理和事务
    代表指令: grant、revoke、commit,

七. 存储引擎

存储引擎负责解决数据库管理系统如何存储数据、如何为存储的数据建立索引以及如何更新、查询数据等技术的实现方法。MySQL的核心是插件式存储引擎,它能够支持多种存储引擎,我们可以在mysql客户端中输入show engines;查看MySQL所支持的所有存储引擎:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MySQL】数据库基础知识 的相关文章

  • 如何删除 MySQL 数据库?

    你可能从我的上一个问题中注意到一个问题引发了更多的问题 在 MySQL 监视器中阅读 MySQL 手册 https stackoverflow com questions 1081399 我的数据库现在无法使用 部分原因是我想破坏东西并且无
  • MySQL - 从数字列表中选择在表的 id 字段中没有对应项的数字

    我有一个数字列表 例如 2 4 5 6 7 我有一个表 foos 带有 foos ID 包括 1 2 3 4 8 9 我想获取我的号码列表 并在我的表的 ID 字段中找到那些没有对应项的号码 实现此目的的一种方法是创建一个表格栏 在 ID
  • Mysql带限制的删除语句

    我试图从表中删除行 但出现错误 DELETE FROM chat messages ORDER BY timestamp DESC LIMIT 20 50 我在 50 时收到此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • “修改列”与“更改列”

    我知道 我们不能使用重命名列MODIFY COLUMN语法 但我们可以使用CHANGE COLUMN syntax 我的问题是 主要用途是什么modify syntax 例如 ALATER TABLE tablename CHANGE co
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 使用用户定义函数 MySql 时出错

    您好 请帮我解决这个问题 提前致谢 我在数据库中定义了这些函数 CREATE FUNCTION levenshtein s1 VARCHAR 255 s2 VARCHAR 255 RETURNS INT DETERMINISTIC BEGI
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in
  • 使用什么框架来引导我的第一个生产 scala 项目?

    我正在第一次涉足 scala 的生产应用程序 该应用程序当前打包为 war 文件 我的计划是创建 scala 编译工件的 jar 文件 并将其添加到 war 文件的 lib 文件夹中 我的增强功能是通过 Jersey 公开的 mysql 支
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • 研究MySQL、SQLite源码了解RDBMS实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道实现数据库是一个很大的话题 但我想通过研究数据库系统的源代码来基本了解数据库系统的工作原理 例如
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据
  • MySQL查询,删除所有空格

    我有一个不寻常的查询 这让我现在陷入困境 表字段有 id bigint 20 name varchar 255 desc text 有许多记录具有相同的名称和 desc 但 desc 的单词之间有一些额外的空格 like 1 t1 hell
  • 由于缺少 PHP 扩展,CakePHP 3 无法连接到数据库

    我正在尝试使用 WT NMP 安装 cakePHP 3 0 0 但收到以下消息 CakePHP 无法连接到数据库 由于以下原因无法使用数据库驱动程序 Cake Database Driver Mysql 缺少 PHP 扩展或未满足的依赖项
  • 复杂的sql树行

    表结构 id message reply id 1 help me 0 434 love to 1 852 didn t work 434 0110 try this 852 2200 this wont 0 5465 done 0110
  • 使用php插入sql数据库时出错

    我有一个带有 MySQL 插入查询的程序 sql INSERT INTO people person id name username password email salt VALUES person id name username p
  • PHP 和 MySQL 的重音字符错误

    我的问题是 直接通过 PHP 编写的内容是正确重音的 但是当重音单词来自 MySQL 时 字母会像这样 我尝试使用html charset as ISO 8859 1它修复了 MySQL 字母 但破坏了其他字母 解决这一切的一种方法是设置我
  • MySQL 正在将我的时间戳值转换为 0000-00-00

    我是 PHP 新手 目前仍在学习中 我认为我的注册表有问题 username password email全部成功插入MySQL registered and last seen不要 我以为我正在使用getTimestamp 错了 但它呼应
  • MYSQL 按喜欢/不喜欢和受欢迎程度排序

    我有评论表 其中包括喜欢和不喜欢的内容 现在我在正确的顺序上遇到了问题 实际上 我的系统在顶部显示了最多点赞的评论 我正在 youtube 上寻找类似系统的东西 这意味着 100like 100dislikes 的评论的顺序高于 1 1 我

随机推荐

  • 局域网内开FTP服务器共享或传输文件

    开启FTP服务教程 xff08 以Windows10为例 xff09 步骤一 xff1a 关闭防火墙 设置 网络和Internet 以太网 点击网络和共享中心 Windows Defender防火墙 允许应用或功能通过Windows Def
  • 计算机二级C语言软件VC++2010的使用步骤

    本文仅限参加计算机二级C语言考试的同学 xff0c 一般不使用这个软件的 xff0c 看一下 xff0c 避免考试时第一次用到乱了阵脚 在计算机二级考试时 xff0c 直接找到并双击题目中要求的文件即可自动打开软件的界面 考试中打开哪个文件
  • 交叉编译概念及交叉编译工具链的安装

    1 交叉编译是什么 xff0c 为什么要交叉编译 是什么 xff1f 交叉编译 xff1a 是在一个平台上生成另一个平台上的可执行代码 我们在windows上面编写C51代码 xff0c 并编译成可执行代码 xff0c 如xx hex 是在
  • 完成一个SpringBoot项目——员工管理系统

    SpringBoot项目 员工管理系统 该系统为一个springboot项目 员工管理系统的代码 xff0c 前端使用的模板是thymeleaf xff0c 数据写在了dao层 xff0c 没有用数据库 xff0c 完全可以实现增删改查 目
  • 通信术语及综合题

    ITU xff1a International Telecommunication Union国际电信联盟 xff0c 联合国的一个重要专门机构 xff0c 也是联合国机构中历史最长的一个国际组织 简称 国际电联 电联 或 ITU IMT
  • VS2013的Visual C++ 项目如何修改目标框架和平台工具集

    https msdn microsoft com zh cn library ff770576 aspx 如何 xff1a 修改目标框架和平台工具集 Visual Studio 2013 其他版本 可以更改 Visual C 43 43 项
  • Java类继承中的静态块与构造

    span class hljs comment 创建一个父类 span span class hljs class span class hljs keyword class span span class hljs title Super
  • node(express脚手架)+html(jquery模板)

    上代码 html部分 span class token operator lt span span class token operator span span class token constant DOCTYPE span html
  • Ubuntu 使用技巧备忘

    Ubuntu 使用技巧备忘 xff08 持续更新 xff09 小白向 xff0c 备忘 xff0c Ubuntu 20 04版本 Ubuntu 使用技巧备忘 xff08 持续更新 xff09 Ubuntu 使用技巧备忘 xff08 持续更新
  • c语言阶乘的累加和

    c语言 阶乘的累加和 题目描述 求1 43 2 43 n 输入 输入一个整数n xff0c 你可以假定n不大于10 输出 输出一个整数 xff0c 即阶乘累加的结果 xff0c 单独占一行 样例输入 4 样例输出 33 代码如下 span
  • 位运算骚操作---利用位运算求组合数

    文章目录 一道利用组合求和的例题位运算如何实现组合的呢 xff1f 解题代码 一道利用组合求和的例题 这道题乍一看就是把所有的组合给列举出来 xff0c 然后求和看是否等于目标值 xff0c 输出需要注意的是优先输出靠前的下标元素 xff0
  • 普联(TP-LINK)的无线网卡在Linux下如何使用

    xff08 如果这篇文章对你有所帮助 xff0c 请为我点个赞 xff0c 要问我点赞有什么作用 xff0c 嘿嘿 xff0c 只是为了我的心情愉悦 xffe3 xffe3 xff09 之前入手了一款普联的无线网卡 xff0c 型号是TL
  • 【C语言】判断素数的函数

    文章目录 一 函数描述二 素数定义三 函数实现 一 函数描述 自定义一个函数 xff0c 传入一个整数n xff0c 判断是否为素数 若是返回1 xff0c 否则返回0 二 素数定义 素数又称质数 一个大于1的自然数 xff0c 除了1和它
  • 【C语言】判断闰年的函数

    文章目录 一 函数描述二 相关说明三 函数实现 一 函数描述 自定义一个函数 xff0c 传入一个年份n xff0c 判断是否为闰年 若是返回1 xff0c 否则返回0 二 相关说明 平年二月28 xff0c 闰年二月29 平年有365天
  • 【C语言】求n的阶乘(递归法和循环法)

    文章目录 一 循环法二 递归法 一 循环法 根据阶乘的计算方法 xff1a n xff01 61 1 2 3 n xff0c 我们在一个for循环完成 n 次乘法运算 注意因为是连乘 xff0c 最终阶乘结果可能会非常大所以我们在Fac函数
  • 【C语言】数组排序方法总结

    一 冒泡排序 相邻元素两两比较 xff0c 按照要求交换位置 xff0c n个元素一共要比较n 1趟 xff0c 每趟要两两比较未排序元素个数 1次 span class token macro property span class to
  • 【C语言】通讯录实现

    通讯录功能 添加联系人信息 xff08 名字 xff0c 性别 xff0c 年龄 xff0c 电话号码 xff0c 家庭住址 xff09 输出指定联系人信息查找指定联系人信息修改指定联系人信息打印所有联系人信息对所有联系人 xff08 通过
  • 如何把64GB或以上的SD卡格式化为FAT32的格式

    对于64GB或以上的SD卡或U盘 xff0c Windows系统自带的格式化工具只支持格式为exFAT或NTFS格式 但事实上 xff0c FAT32最大可以支持2TB的分区 通过第三方分区工具也支持把64GB或以上的SD卡或U盘格式化成F
  • 【Linux】线程基础知识

    文章目录 一 什么是线程 xff1f 1 线程概念2 重新理解进程3 线程优缺点4 线程周期5 线程调度6 线程工作原理7 线程异常8 线程资源 二 为什么要有线程 xff1f 三 如何控制线程 xff1f 1 Linux支持的POSIX线
  • 【MySQL】数据库基础知识

    文章目录 一 什么是数据库二 为什么要有数据库三 数据库分类四 数据库的基本使用1 MySQL安装2 检查MySQL后端服务器是否启动3 连接MySQL服务器4 服务器 xff0c 数据库 xff0c 表关系5 数据存储逻辑 五 MySQL