【MySQL】数据库基础(库的操作)

news2024/12/26 9:21:31

目录

一、MySQL安装、连接、修改密码操作

二、库的操作

2.1 创建数据库

2.2 字符集和校验规则

2.3 操控数据库

2.4 修改数据库

2.5 删除数据库

2.6 数据库的备份和恢复

2.7 查看连接情况


前情提要:

我的服务器操作系统是Ubuntu20.04,安装的是MySQL8.0版本。

一、MySQL安装、连接、修改密码操作

参考了这篇博客:【究极详细版】Ubuntu安装配置MySQL_ubuntu配置mysql-CSDN博客

二、库的操作

MySQL编写SQL语句时默认是不区分大小写的。(表名、列名、别名等标识符是否区分大小写取决于服务器操作系统的文件系统以及MySQL的配置设置,Linux系统是区分大小写的)

2.1 创建数据库

语法:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]

create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

说明:

  • 大写的表示关键字
  • [ ] 是可选项,使用可选项时不用加上方括号
  • create_specification:是在创建数据库时可以指定的额外选项或规范,用于定义数据库的字符集、校对规则等属性。
  • CHARACTER SET: 指定数据库采用的字符集
  • COLLATE: 指定数据库字符集的校验规则(编码集)

例如:

CREATE DATABASE mytest
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

说明:创建一个名为mytest的数据库,并指定字符集为utf8mb4(这是MySQL 5.5.3及以上版本推荐使用的字符集,因为它支持存储任何Unicode字符,包括表情符号)以及默认的校对规则utf8mb4_unicode_ci。这些选项确保了新创建的数据库使用utf8mb4字符集和相应的utf8mb4_unicode_ci校对规则。

补充:

  1. 在MySQL中创建库,本质是在Linux下建立目录,一个目录对应一个库。
  2. 但不是仅仅创建一个库,还会包含存储数据库的相关文件。
  3. 所以要删除数据库或者添加数据库时,不要对底层的目录进行修改,而是在MySQL中使用SQL语句完成。

2.2 字符集和校验规则

字符集:字符集定义了数据库中可以存储的字符集以及每个字符的编码方式。

数据库编码集:是字符集的具体实现,用于确保数据以正确的格式存储在数据库中。

以下是一些常见的字符集:

  • latin1:西欧语言,ISO 8859-1字符集。
  • utf8:Unicode字符集,最多支持每个字符3字节。
  • utf8mb4:扩展的Unicode字符集,最多支持每个字符4字节,可以存储任何Unicode字符,包括emoji。

校验规则:定义了字符集中字符的比较规则,包括字符的排序顺序和比较时的区分度(例如是否区分大小写、重音等)。(字符集通常与校验规则搭配使用。因为同一个字符集可以有不同的校验规则。)

查看系统默认字符集以及校验规则:

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

查看数据库支持的字符集:

show charset;

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

show collation;

校验规则对数据库的影响:

1. 不区分大小写:

  • 当校验规则不区分大小写时,例如utf8_general_ci,查询和排序时不会区分字母的大小写。
  • 即使表中存在大小写不同的同义词,查询也会将它们视为相同的值。
  • 例如,查询SELECT * FROM users WHERE username = 'John'会匹配到john、JOHN和John等所有大小写形式。

2. 区分大小写:

  • 当校验规则区分大小写时,例如utf8_bin,查询和排序时会严格区分字母的大小写。
  • 表中的同义词必须完全匹配查询条件的大小写格式。
  • 例如,查询SELECT * FROM users WHERE username = 'John'只会匹配到John,而不会匹配到john或JOHN。

3. 进行查询:

  • 校验规则会影响查询的性能,因为不区分大小写的校验规则在比较时可能会进行额外的转换,从而影响查询速度。
  • 区分大小写的校验规则在比较时更快,因为它们直接比较字符的二进制表示。

4. 结果排序:

  • 校验规则决定了排序的顺序,包括字母、数字和特殊字符的顺序。
  • 例如,utf8_unicode_ci校验规则会根据Unicode标准来排序字符,这可能与常规的ASCII排序不同。
  • 区分大小写的校验规则在排序时会根据大小写规则来排列字符,而不会将大小写视为相同。

2.3 操控数据库

查看数据库

show databases;

显示创建语句

show create database 数据库名;

说明:

  • MySQL 建议我们关键字使用大写,但是不是必须的。
  • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
  • /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话 
  • \G 是一个转义序列,用于指定输出格式。使用\G时,MySQL会将查询结果以垂直格式输出,而不是默认的水平格式。这种格式使得查询结果更容易阅读,尤其是在结果比较长时。而且会去掉一些不必要的字符。

2.4 修改数据库

语法:

ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]

alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

说明:

  • 对数据库的修改主要指的是修改数据库的字符集,校验规则

例如: 将 mytest 数据库字符集改成 gbk :alter database mytest charset=gbk;

2.5 删除数据库

DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果:

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

注意:不要随意删除数据库,这是因为MySQL的删除操作是物理删除,一旦删除,数据将无法恢复。因此比较建议删除前考虑创建一个数据库的备份,以防止错误删除。

2.6 数据库的备份和恢复

备份(在bash中执行):

语法:

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

示例:将mytest库备份到文件(退出连接)

mysqldump -P3306 -u root -p123456 -B mytest > /MySQL/mytest.sql

这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

  • 上面的命令都是退出MySQL,在Linux命令行中输入的。
  • 路径中的MySQL是自定义创建的文件夹,用来保存备份文件。
  • mysqldump:这是一个MySQL客户端工具,用于将数据库的结构和数据导出为SQL语句。
  • -P3306:指定MySQL服务器的端口号。MySQL的默认端口号是3306,但有时服务器管理员会更改它。
  • -u root:指定MySQL服务器的用户名。root是MySQL的超级用户,拥有最高权限。
  • -p 密码:指定MySQL服务器的密码。密码需要用单引号括起来,如果密码中包含空格或特殊字符,需要用单引号括起来。
  • -B mytest:指定要备份的数据库名。mytest是您想要备份的数据库的名称。
  • > /MySQL/mytest.sql:将导出的SQL语句输出到文件。/MySQL/mytest.sql是你指定保存备份文件的路径和文件名。

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

mysqldump -u root -p 数据库名 表名1 表名2 > 数据库所要存储的文件路径
同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库备份存储的文件路径

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

还原(在MySQL中执行):

source 备份库所在的完整路径;

2.7 查看连接情况

语法:

show processlist;

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你 的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

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

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

相关文章

eNSP 华为远程访问路由器

华为远程访问路由器 前提&#xff1a;主机能与路由器通信就行&#xff0c;如果不同网段就配路由协议&#xff0c;这里直接模拟直连通信 Cloud&#xff1a; R&#xff1a; <Huawei>sys [Huawei]sys R [R]int g0/0/0 [R-GigabitEthernet0/0/0] [R-GigabitEthernet0/0/0]i…

Vue50 todolist自定义事件版本

代码 MyFooter.vue <template><div class"todo-footer" v-show"total"><label><!-- <input type"checkbox" :checked"isAll" change"checkAll"/> --><input type"checkbox" v…

【html】颜色随机产生器(补充包)

上一篇文章我们讲了如何制作一个通过滑动产色纯色背景的网页&#xff0c;今天&#xff0c;我们对那个网页进行一个补充&#xff0c;&#xff08;&#xff09; 因为很多人在设计网页的时候没有颜色的灵感这个时候我们我们就可以考虑通过随机产生一种颜色并且能够实时看到效果的…

Delphi5实现密码、姓名生成器

文章目录 目的效果图密码生成器类类定义成员函数 点击“密码生成”事件名字生成器类类的成员功能概述注意点 点击“姓名生成”事件点击“清空”事件“导出txt”事件“备注”输入框画图软件完整代码 目的 写这个程序的目的是生成一个密码和用于快递的名字&#xff08;生成密码和…

keepalived详细讲解

keepalived&#xff1a; Keepalived是一个基于VRRP&#xff08;‌Virtual Router Redundancy Protocol&#xff0c;‌虚拟路由冗余协议&#xff09;‌协议实现的LVS&#xff08;‌Linux Virtual Server&#xff09;‌服务高可用方案。‌它的主要作用是进行虚拟路由的故障切换&…

算法打卡 Day24(二叉树)-二叉搜索树的最近公共祖先 + 二叉搜索树中的插入操作 + 删除二叉搜索树中的节点

文章目录 Leetcode 235-二叉搜索树的最近公共祖先题目描述解题思路 Leetcode 701-二叉搜索树中的插入操作题目描述解题思路 Leetcode 450-删除二叉搜索树中的节点题目描述解题思路 Leetcode 235-二叉搜索树的最近公共祖先 题目描述 https://leetcode.cn/problems/lowest-comm…

江协科技STM32学习笔记(第10章 SPI通信)

第10章 SPI通信 10.1 SPI通信协议 10.1.1 SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff09;是由Motorola公司开发的一种通用数据总线&#xff1b; 串行外设接口&#xff1b; I2C无论是软件还是软件电路&#xff0c;设计的都还是比较复杂的&#xff0c;硬件…

xss靶场详解

目录 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 8.第八题 1.第一题 在源码script标签里边&#xff0c;innerhtml是用于访问或修改 HTML 元素内的 HTML 内容的&#xff0c;这里是访问spaghet这个元素的&#xff0c;并通过括号里面的东西搜索当前…

【问题解决3】【已解决】Cannot determine path to‘tools.jar‘libraryfor17

前几天在IDEA运行JAVA项目时&#xff0c;出现这个报错。 这是因为是这个笔记本上安装的IDEA版本是“IntelliJ IDEA 2020.3.1”&#xff0c;与JDK17版本不兼容&#xff0c;这种情况下要想使得IDEA版本与JDK版本兼容&#xff0c;就需要升级IDEA版本或者使用JDK较低版本&#xff…

专题---自底向上的计算机网络(计算机网络相关概述)

目录 计算机网络相关概述 物理层 数据链路层 网络层 运输层 应用层 网络安全 1.计算机网络相关概述&#xff08;具体细节http://t.csdnimg.cn/NITAW&#xff09; 什么是计算机网络&#xff1f; 计算机网络是将一个分散的&#xff0c;具有独立功能的计算机系统&#x…

FusionSphere虚拟机网络不通

虚拟机侧 1、通过控制台Console或者VNC登录虚拟机。 获取VNC的token链接&#xff0c;因为token有超时失效&#xff0c;该链接获取后长时间不用要重新获取。 # nova get-vnc-console vmid novnc 2、登录VNC控制台之后&#xff0c;检查网卡和IP地址是否up, ARP学习是否正常…

Postman 问题汇总

1 postman Error: SSL Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE 根因 SSL校验失败&#xff0c;可以在postman设置中关闭ssl校验&#xff0c;自测对ssl无要求。 解决方法 在postman设置中关闭ssl校验&#xff1a;

树莓派智能语音助手之聊天机器人-RASA

我的树莓派目前已经会“说”&#xff08;《树莓派智能语音助手之TTS - pyttsx3 espeak》&#xff09;&#xff0c;也能“听”&#xff08;《树莓派智能语音助手之ASR2 – sherpa-ncnn》&#xff09;了。接下来&#xff0c;就要让它能够和我们对话起来&#xff0c;即会“聊天”…

python 获取pdf文件中的超链接

pip install pymupdf pip install fitzimport fitz # PyMuPDFdef get_pdf_links(pdf_path):# 打开PDF文件document fitz.open(pdf_path)links []for page_num in range(len(document)):page document[page_num]# 获取当前页面的链接for link in page.get_links():links.app…

Mac升级系统文件都丢了怎么办?Mac更新后资料找不到了怎么恢复

Mac电脑由于其卓越的性能&#xff0c;受到了众多电脑用户的青睐。为了让用户获得更好的使用体验&#xff0c;Mac系统会定期推出新版本&#xff0c;来弥补前一个版本的不足。然而有用户反馈&#xff0c;Mac升级后&#xff0c;电脑里的部分资料消失了。mac升级会丢失文件吗?mac升…

iOS ColleCtionView 如何让cell 不重复创建并且只在展示的时候才创建

前言 使用 collectionView 一屏只展示一个 cell &#xff0c;一次只加载当前 cell&#xff0c;还要能够缓存已加载过的 cell &#xff0c;使 cell 不重复加载&#xff0c;听着好像就是将 collectionView 的复用机制禁用掉。用collectionView 实现这个需求&#xff0c;就出现了…

【GD32】从零开始学GD32单片机 | PMU电源管理单元+深度睡眠和待机例程(GD32F470ZGT6)

1. 简介 PMU电源管理单元通俗讲就是用来管理MCU的电源域的&#xff0c;它主要有两个功能——电压监测和低功耗管理。在GD32中一共有3个电源域——VDD/VDDA域、1.2V域和备份域。 VDD/VDDA域主要供PMU控制器、ADC、DAC等外设使用&#xff1b;1.2V域就是大部分外设都会使用的电源域…

ai大模型之争-生成音乐-豆包

豆包网页版&#xff1a;豆包 可以生成自定义音乐了 1&#xff0c;打开网页&#xff0c;登录 2&#xff0c;选择音乐生成 3&#xff0c;进行音乐配置 3.1&#xff0c;可以选择&#xff1a; 1&#xff0c;自己写歌词或者ai创造歌词&#xff1b; 2&#xff0c;可以选输入歌词…

xss漏洞复现

目录 第一关 第二关 第三关 第四关 第五关 第一关 要求&#xff1a; Pop an alert(1337) on sandbox.pwnfunction.com. No user interaction. 代码&#xff1a; <!-- Challenge --> <h2 id"spaghet"></h2> <script> spaghet.inn…

【数据结构与算法 | 图篇】Floyd-Warshall算法(多源最短路径算法)

1. 前言 Floyd-Warshall算法是一种在有向图或无向图中寻找所有顶点对之间的最短路径的动态规划算法。该算法可以处理带权重的边&#xff0c;并且能够正确处理负权重的边&#xff08;但不包括负权重循环&#xff09;&#xff0c;不过它不能处理包含负权重循环的情况&#xff0c…