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

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.mrgr.cn/news/66472.html

相关文章:

  • 文献组会汇报:Cys响应机理以及核探针设计(一)
  • vue3动态监听div高度案例
  • 电脑开机显示无信号然后黑屏怎么办?
  • Redis-基本了解
  • docker镜像仓库实战
  • java面试2.0
  • 【LuatOS】修改LuatOS源码为PC模拟器添加高精度时间戳库timeplus
  • nginx(四):如何在 Nginx 中配置以保留真实 IP 地址
  • kafka 安装和使用
  • 经典的安全模型整理
  • 鸿蒙开发——线程内通信
  • Vue:事件
  • CentOS操作系统安装过程简介
  • C++ 并发专题 - 无锁数据结构(队列)
  • 2025年知识管理新方案:十款前沿知识库搭建工具详解
  • Spring事务详解
  • 基数排序算法
  • Linux系统编程——线程概述、线程控制和线程私有数据
  • 如何高效集成每刻与金蝶云星空的报销单数据
  • 代码随想录一刷——454.四数相加II
  • Jest进阶知识:测试快照 - 确保组件渲染输出正确
  • 2024年专业的10款数据恢复工具你都用过哪些?
  • 鸿蒙应用开发:下载功能
  • 【020】基于51单片机病房呼叫系统
  • 105. UE5 GAS RPG 搭建主菜单
  • Qt 环境实现视频和音频播放