MySQL 数据库之库操作

ops/2024/11/12 19:33:58/

文章目录

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 备份还原注意事项

4.5 查看连接情况

show processlist

image-20241105202516959


http://www.ppmy.cn/ops/132518.html

相关文章

设计模式小结一观察者(Observer)模式

先上结论: 这是一个开发者经常用到但你可能没有意识到的设计模式,当前Android客户端开发经常用到的几大流行框架:LiveData、RxJava、EventBus等的核心都是采用此种设计模式思想。讲到这里,还不赶紧研究下这几个开源框架的源码,不然面试问的深入一点你就露馅了! 开干! …

vue大疆建图航拍功能实现

介绍 无人机在规划一块区域的时候,我们需要手动的给予一些参数来影响无人机飞行,对于一块地表,无人机每隔N秒在空中间隔的拍照地表的一块区域,在整个任务执行结束后,拍到的所有区域照片能够完整的表达出一块地表&…

Greiner 经典力学(多体系统和哈密顿力学)第十一章 学习笔记(Rotation About a Fixed Axis)

第十一章 学习笔记(Rotation About a Fixed Axis) 这一章主要引入了力偶的概念。一对作用在刚体上方向相反,大小相同的力称为力偶。**力偶 ** 对刚体上任意一点的力矩都是相同的。 D l F \mathbf D \mathbf l \times \mathbf F DlF 其中…

Flutter鸿蒙next 中使用 MobX 进行状态管理

引言 在 Flutter 中,状态管理是开发过程中至关重要的一部分。Flutter 提供了多种方式来管理应用的状态,如 Provider、Riverpod、BLoC 等。除了这些,MobX 也是一个流行的状态管理库。MobX 是一个响应式编程库,基于观察者模式&…

ctfshow(316,317,318)--XSS漏洞--反射性XSS

反射型XSS相关知识 Web316 进入界面: 审计 显示是关于反射性XSS的题目。 思路 首先想到利用XSS平台解题,看其他师傅的wp提示flag是在cookie中。 当前页面的cookie是flagyou%20are%20not%20admin%20no%20flag。 但是这里我使用XSS平台,…

Python自动化运维:配置管理工具到自动化部署与版本控制

Python自动化运维:配置管理工具到自动化部署与版本控制 目录 🌐 自动化配置管理工具的使用:Chef、Puppet、SaltStack🤖 通过Python与配置管理工具集成⚙️ 使用Ansible与Python实现自动化配置与管理🔄 自动化部署的版…

Web3对社交媒体的影响:重新定义用户互动方式

随着互联网的发展和人们对隐私、安全、所有权的需求不断提高,Web3 的概念逐渐深入人心。Web3 的出现标志着一个去中心化、用户主导的网络时代的到来,这也将对社交媒体产生深远的影响。Web3 不仅推动社交媒体从中心化模式向用户主导的去中心化模式转变&am…

pg_dump -Fc 导出的自定义格式数据库文件 相关操作

实例 将 test.dmp 文件转换为普通SQL内容, 并打印到屏幕 pg_restore -U postgres -Fc -f - test.dump将 test.dmp 文件转换为普通SQL内容, 并输出到 test.sql 文件中 pg_restore -U postgres -Fc -f test.sql -v test.dump备份得到自定义格式的数据库文件(dmp) pg_dump -U…