MySQL 数据库之库操作

文章目录

  • 1. 什么是数据库
  • 2. 基础概念
    • 2.1 连接数据库
    • 2.2 服务器,数据库,表关系
    • 2.3 SQL分类
  • 3. 库的操作
    • 3.1 创建,选择,查看数据库
    • 3.2 字符集和默认校验规则
  • 3.3 操纵数据库
      • 3.3.1 数据库查看
      • 3.3.2 数据库删除
      • 3.3.3 数据库修改
  • 4. 其它
    • 4.1 备份
    • 4.2 还原
    • 4.3 备份还原注意事项
    • 4.5 查看连接情况

1. 什么是数据库

使用which mysqlwhich mysqld命令

image-20241029181525921

  1. mysql是数据库服务的客户端
    • mysql 是MySQL数据库的命令行客户端工具,用户可以通过它连接到MySQL服务器并与之交互。它允许用户执行SQL语句来查询、更新和管理数据库。mysql 客户端是用户与MySQL数据库进行通信的接口。
  2. mysqld是数据库服务的服务器端
    • mysqld 是MySQL数据库服务器的守护进程(daemon),它是MySQL服务器的核心,负责处理客户端的连接请求、执行SQL语句、管理数据库文件等。mysqld 运行在后台,监听来自客户端的连接,并处理这些连接上的所有数据库操作。
  3. MySQL数据库是基于C(mysql)和S(mysqld)模式的一种网络服务
    • MySQL遵循客户端/服务器(Client/Server,简称C/S)架构模式。在这种模式下,mysql 客户端和 mysqld 服务器端通过网络进行通信。客户端(如 mysql 命令行工具或其他数据库管理工具)向服务器(mysqld)发送请求,服务器处理这些请求并将结果返回给客户端。这种模式使得MySQL可以支持多用户同时访问和操作数据库,并且可以在不同的机器上运行客户端和服务器,通过网络进行数据交互。

  1. MySQL是一套提供了数据存取的服务的网络程序:
    - MySQL是一个关系型数据库管理系统(RDBMS),它提供了一套完整的数据存取服务。作为一个网络程序,MySQL允许客户端通过网络连接到服务器,执行SQL语句来查询、更新和管理存储在数据库中的数据。

  2. 数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据,也就是将来在磁盘存储的一套数据库方案

    • 数据库是长期存储在磁盘或内存中的、有组织的数据集合。它通常由数据库管理系统(如MySQL、PostgreSQL、Oracle等)来管理。数据库中的数据按照一定的数据模型(如关系模型、文档模型等)组织,以便于存储、检索和管理。
  3. 数据库服务一般指的是类似mysqld这样的程序

    • 这些服务程序负责处理来自客户端的请求,执行SQL语句,管理数据的存储和检索,以及维护数据库的完整性和安全性。数据库服务通常作为守护进程在后台运行,以确保数据库的持续可用性和性能。

一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据内容管理的能力(站在用户的角度上)。
将数据库理解为:是对数据存储的一套解决方案,客户端给服务端字段或者要求,服务端返回结果。

宏观上看,这一堆合起来是数据库
image-20241030000535085

程序员操作的是mysql

2. 基础概念

2.1 连接数据库

mysql -h -P -u -p
// 例如
mysql -h 127.0.0.1 -P 3306 -u root -p 123456
  • -h:后面跟着的是要连接的主机的IP地址。如果不填写,那么默认连接的是本机(localhost)。
  • -P:后面跟着的是端口号。如果不填写,那么默认使用的是3306端口,这是MySQL的默认端口。
  • -u:后面跟着的是用户名。
  • -p:后面跟着的是密码。注意,-p 后面不需要加空格,直接跟上密码,或者在 -p 后面留有空格,然后紧接着输入密码(这样密码就不会显示在命令行历史中,增加安全性)。

2.2 服务器,数据库,表关系

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

image-20241031133930070

实际上,一个数据库是一个目录,一个表是一个文件
/etc/my.cnf写了默认数据存储位置
image-20241031134319723

2.3 SQL分类

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

3. 库的操作

3.1 创建,选择,查看数据库

创建数据库
如果你需要在创建数据库时指定特定的字符集和校对规则,可以使用以下命令:

CREATE DATABASE [IF NOT EXISTS] 数据库名字 [CHARACTER SET 编码集 COLLATE 校对规则];
  • [] 是可选项

  • 数据库编码集(Character Set)

    • 编码集定义了数据库中可以存储哪些字符。不同的编码集支持不同语言的字符,例如,ASCII编码集只支持英文字符,而UTF-8编码集支持多种语言的字符,包括中文、日文、韩文等。
    • 编码集决定了字符数据的存储方式和存储大小。例如,UTF-8编码的单个字符可以占用1到4个字节,而ASCII编码的字符只占用1个字节。
  • 数据库校验集(Collation)

    • 校验集定义了字符数据的比较规则,包括大小写敏感性、大小写不敏感性、重音符号的处理等。
    • 校验集是编码集的一个子集,它不仅包括编码集的所有字符,还包括了字符比较的规则。
    • 例如,utf8_general_ci是一个大小写不敏感的校验集,而utf8_bin是一个大小写敏感的校验集,它们都基于UTF-8编码集。
    • 校验集的选择会影响字符串比较和排序的结果。在多语言环境中,选择合适的校验集非常重要,以确保数据的正确性和一致性。

总的来说

  • 编码集(Character Set):决定了数据库如何存储字符数据,即数据库中可以存储哪些字符。
  • 校验集(Collation):决定了数据库如何比较和排序字符数据,即如何根据特定的规则读取和处理这些字符。

选择数据库
创建数据库后,你可能想要选择这个数据库以便在其上执行其他操作。可以使用USE语句:

USE mydatabase;

查看数据库列表: 如果你想查看所有数据库,可以使用以下命令:

SHOW DATABASES;

image-20241104211114601

可以看到一个数据库就是一个目录

3.2 字符集和默认校验规则

查看系统默认字符集以及校验规则
这里的字符集和默认校验规则就是2.1提到的编码集和校验集

show variables like 'character_set_database';
show variables like 'collation_database';

image-20241105164851876

查看数据库支持的字符集 和 支持的字符集校验规则

show charset;
show collation;

3.3 操纵数据库

3.3.1 数据库查看

前面3.1介绍了SHOW DATABASES;查看当前有多少个数据库,USE mydatabase;可以使用该数据库
如果想知道当前正在使用哪个数据库,可以使用

select database();

image-20241105172423614

想要显示创建语句,可以使用

show create database 数据库名;

image-20241105193000659

  • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
  • /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

3.3.2 数据库删除

DROP DATABASE [IF EXISTS] db_name;

执行该语句后的效果:

  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
  • mysqld内部看不到对应的数据库

一般不要轻易删除数据库,非要删除的话,做好备份

image-20241105172757747

3.3.3 数据库修改

ALTER DATABASE database_name CHARACTER SET charset_name COLLATE collation_name;

其中database_name是你要修改的数据库名,charset_name是新的字符集名称,collation_name是新的校验集名称。

image-20241105173943155

4. 其它

4.1 备份

mysqldump -u username -p -B 密码 database_name > backup_file.sql
  • username 是你的MySQL用户名。
  • database_name 是你想要备份的数据库名。
  • backup_file.sql 是备份文件的名称,可以指定路径。

image-20241105201855272

image-20241105201941174

可以看到,该文件里面是历史上写的sql语句

4.2 还原

mysql > source path
  • path是4.1生成的文件的路径

image-20241105202222642

image-20241105202321465

4.3 备份还原注意事项

  • 如果备份的不是整个数据库,而是其中的一张表

    mysqldump -u root -p 数据库名 表名1 表名2 > backup_file.sql
    
  • 同时备份多个数据库

    mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
    
  • 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原

4.5 查看连接情况

show processlist

image-20241105202516959

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

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

相关文章

Windows安装多个NodeJS版本

下载nvm管理工具,下载完成解压安装 https://github.com/coreybutler/nvm-windows/releases 选择nvm安装位置 选择nvm安装node版本的安装位置 如果提示你已经安装的有nodejs,提示你是否通过nvm管理nodejs,选择是,继续安装即可…

使用NVM自由切换nodejs版本

一、NVM介绍 在日常开发中,我们可能需要同时进行多个不同NodeJS版本的项目开发,每个项目所依赖的nodejs版本可能不一致,我们如果只安装一个版本的nodejs,就可能出现node版本冲突问题,导致项目无法启动。这种情况下&am…

parseInt 是一个内置的 JavaScript 函数,用于将字符串转换为整数。

parseInt(options.checkNumber, 10) 中的 10 表示将字符串转换为十进制整数。 解释 parseInt 函数: parseInt 是一个内置的 JavaScript 函数,用于将字符串转换为整数。它有两个参数: 第一个参数是要转换的字符串。第二个参数是转换时使用的基…

Qt中的Model与View 4:QStandardItemModel与QTableView

目录 QStandardItemModel API QTableView 导航 视觉外观 坐标系统 API 样例:解析一个表格txt文件 QStandardItemModel QStandardItemModel 可用作标准 Qt 数据类型的存储库。它是模型/视图类之一,是 Qt 模型/视图框架的一部分。它提供了一种基于…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十九集:制作过场Cutscene系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作过场Cutscene系统 1.制作基本的视频过场和动画过场2.制作决定过场系统的播放顺序Sequence以及切换场景以后的逻辑处理二、制作跳过过场Cutscene的MenuS…

【设计模式系列】桥接模式(十三)

一、什么是桥接模式 桥接模式(Bridge Pattern)是一种结构型设计模式,其核心目的是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式主要用于处理那些在设计时无法确定实现细节的场合,或者需要在多个实现之间…

基于Multisim光控夜灯LED电路(含仿真和报告)

【全套资料.zip】光控夜灯LED电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 光控夜灯LED电路 1.采用纯数字电路,非单片机。 2.通过检测周围光线,光线暗自…

html练习2

实现下列图片的效果 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>* {margin: 0;padding: 0;}#menu {background-color: #0c0048;width: 100%;height: 50px;margin: auto;…

【毫米波雷达(八)】车载毫米波前雷达遮挡检测功能

车载毫米波前雷达遮挡检测功能 一、概念二、功能指标1、遮挡检测功能2、功能流程3、实车验证 一、概念 随着汽车行业智能化发展&#xff0c;车载毫米波雷达在汽车市场应用越来越广泛。在驾驶过程中&#xff0c;当雷达受到泥土、纸巾、冰雪覆盖遮挡后&#xff0c;雷达检测性能受…

小新学习k8s第六天之pod详解

一、资源限制 Pod是k8s中的最小的资源管理组件&#xff0c;pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。k8s中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的&#xff0c;例如&#xff0c;用于管理Pod运行的StatefulSet和Deployment等…

java面试2.0

一.Zookeeper 1.定义 ZooKeeper 是一个开源的分布式协调服务&#xff0c;它的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来&#xff0c;构成一个高效可靠的原语集&#xff0c;并以一系列简单易用的接口提供给用户使用。 ZooKeeper 为我们提供了高可用、高性能…

游戏测试|超越QA的常规:我们如何自动化回归测试

QA测试工作并不单调乏味&#xff0c;它是一项创造性的工作&#xff0c;蕴含着丰富的机会。公平地说&#xff0c;它也有枯燥乏味的一面--回归&#xff08;regression&#xff09;。因此&#xff0c;我们决定将回归测试自动化&#xff0c;具体方法如下。 ​ 在IT行业&#xff0c…

群分解(Swarm Decomposition,SWD)

代码原理 群体分解&#xff08;SWD&#xff09;是一种用于信号处理和数据分析的新兴方法。它通过将复杂的信号分解为多个群体成分&#xff08;Swarm Components&#xff09;&#xff0c;每个成分代表信号中的特定特征或模式。SWD的主要目标是提取信号中的不同特征模式&#xf…

flink实战-- flink任务的火焰图如何使用

火焰图 Flame Graphs 是一种有效的可视化工具,可以帮助我们排查如下问题: 目前哪些方法正在消耗 CPU 资源?一个方法的消耗与其他方法相比如何?哪一系列的堆栈调用导致了特定方法的执行?y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的…

CSS基础知识六(浮动的高度塌陷问题及解决方案)

目录 1.浮动高度塌陷概念 2.下面是几种解决高度塌陷的几种方案&#xff1a; 解决方案一&#xff1a; 解决方案二&#xff1a; 解决方案三&#xff1a; 1.浮动高度塌陷概念 在CSS中&#xff0c;高度塌陷问题指的是父元素没有正确地根据其内部的浮动元素或绝对定位元素来计…

拒绝事后背锅:测试项目中的风险管理一定要知道

在博主的公司中&#xff0c;测试经理除了要管理产品线的质量保障和日常部门事务工作外&#xff0c;另一项比较重要的就是测试项目全流程的管理。 今天不聊整体的测试项目流程如何开展&#xff0c;而是想聊一聊在同行中比较高频出现的一个字眼&#xff1a;风险管理。 什么是风…

基础算法——排序算法(冒泡排序,选择排序,堆排序,插入排序,希尔排序,归并排序,快速排序,计数排序,桶排序,基数排序,Java排序)

1.概述 比较排序算法 算法最好最坏平均空间稳定思想注意事项冒泡O(n)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)Y比较最好情况需要额外判断选择O( n 2 n^2 n2)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)N比较交换次数一般少于冒泡堆O( n l o g n nlogn nlogn)O( n l o g n nlogn nlogn)O( n l…

利用pythonstudio写的PDF、图片批量水印生成器,可同时为不同读者生成多组水印

现在很多场合需要将PDF或图片加水印&#xff0c;本程序利用pythonstudio编写。 第一步 界面 其中&#xff1a; LstMask:列表框 PopupMenu:PmnMark LstFiles:列表框 PopupMenu:PmnFiles OdFiles:文件选择器 Filter:PDF文件(.PDF)|.PDF|图像文件(.JPG)|.JPG|图像文件(.png…

如何区分实例化网格中的每个实例

1&#xff09;如何区分实例化网格中的每个实例 2&#xff09;项目在模拟器上切换程序后有概率画面冻结 3&#xff09;Unity工程导入团结引擎&#xff0c;GUID会变化&#xff0c;导致引用关系丢失 4&#xff09;Mask在Android平台下渲染异常 这是第407篇UWA技术知识分享的推送&a…

前端前置——ajax

目标&#xff1a;使用axios库&#xff0c;获取省份列表数据&#xff0c;展示到页面上 axios库地址&#xff1a;https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js 省份数据地址&#xff1a;http://hmajax.itheima.net/api/province axios的使用 axios({ url:目标资源地…