MySQL数据库精研之旅第二期:库操作的深度探索

news2025/3/24 21:45:19

专栏:MySQL数据库成长记

个人主页:手握风云

目录

一、查看数据库

二、创建数据库

2.1. 语法

2.2. 示例

三、字符集编码和校验(排序)规则

3.1. 查看数据库支持的字符集编码

3.2. 查看数据库支持的排序规则

3.3. 不同的字串集与排序规则对数据库的影响

3.4. 查看系统默认字符集和排序规则

四、查看创建语句

4.1. 语法

五、修改数据库

5.1. 语法

六、删除数据库

6.1. 语法

6.2. 注意事项


一、查看数据库

//查看当前已有的数据库
show databases;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.00 sec)

        这里需要注意,databases是复数形式,并且mysql命令行对大小写不敏感。MySQL中每条SQL语句都必须以分号结尾,否则数据库软件就会认为这不是一条完整的语句。如果我们没有写完就按回车,就会另起一行。

mysql> show databases
    ->;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.00 sec)

        已有库里面的“sakila”“world”这些属于测试库,我们可以进行修改或者删除的,“information_schema”“mysql”“performance_schema”“sys”这些都属于系统库,记录的是MySQL自身信息和一些配置项,其中也包含我们的用户名和登录密码。如果删除了,就会导致MySQL无法正常启动,我们就需要再重新安装MySQL。其中set表示结果集,0.00sec表示运行消耗时间为10毫秒以内。

二、创建数据库

2.1. 语法

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] 数据库名称 [create_option]

create_option: [DEFAULT] {
    CHARACTER SET [=] charset_name
    | COLLATE [=] collation_name
    | ENCRYPTION [=] {'Y' | 'N'}
}

        以上大写部分为关键字;大括号里的内容必须存在;中括号里的内容可有可无;|表示任选其一;IF NOT EXISTS表示如果不存在则创建数据库;CHARACTER SET是指定数据库采⽤的字符集编码;COLLATE是指定数据库字符集的校验规则;ENCRYPTION表示数据库是否加密。

2.2. 示例

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.08 sec)

mysql> create database test3_21
    -> ;
Query OK, 1 row affected (0.03 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| test3_21           |
| world              |
+--------------------+
7 rows in set (0.00 sec)

        如果我们再去创建一个同名称的数据库,就会发出警告,并会告诉我们警告信息该数据库已经存在。

mysql> create database test3_21;
ERROR 1007 (HY000): Can't create database 'test3_21'; database exists

        当SQL语句在以上脚本当中运行时发生了错误,那么SQL语句的执行就会停住。那我们就可以加上一个校验结果,来阻止错误的发生。

mysql> create database if not exists test3_21;
Query OK, 1 row affected, 1 warning (0.00 sec)

        此时它就会提示我们存在一个警告,我们也可以使用SQL语句让它显示出来。

mysql> show warnings;
+-------+------+---------------------------------------------------+
| Level | Code | Message                                           |
+-------+------+---------------------------------------------------+
| Note  | 1007 | Can't create database 'test3_21'; database exists |
+-------+------+---------------------------------------------------+
1 row in set (0.00 sec)

        如果说我们在写完一条SQL语句时,发现前面有错误,那我们就可以ctrl+C进行换行重新写。

mysql> shown databases^C
mysql>

三、字符集编码和校验(排序)规则

3.1. 查看数据库支持的字符集编码

show charset;

        对字符集的编码,相当于两个人用不同的语言进行交流,一个人用汉语,另一个人用英语,他们就相当于对相同的内容进行编码。如果用A字符集编码存储数据,用B字符集编码去解析,那么就会出现一堆乱码。

+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| armscii8 | ARMSCII-8 Armenian              | armscii8_general_ci |      1 |
| ascii    | US ASCII                        | ascii_general_ci    |      1 |
| gb18030  | China National Standard GB18030 | gb18030_chinese_ci  |      4 |
| gb2312   | GB2312 Simplified Chinese       | gb2312_chinese_ci   |      2 |
| gbk      | GBK Simplified Chinese          | gbk_chinese_ci      |      2 |

        我们最熟悉的ascii对英语字母进行编码,最大长度为1字节。如果说我们要对中文进行编码,那么gb2312、gbk等进行编码,这两个最大长度为2个字节,相当于可以编写2^16个字符。而其他国家还有其他的语言,比如阿拉伯语、法语等。为了支持全世界的编码,就得对字符长度进行扩大,也就是MySQL8.0支持的默认字符集编码utf8mb4,最长可以用4个字节表示一个字符。

| utf8mb4  | UTF-8 Unicode                   | utf8mb4_0900_ai_ci  |      4 |

3.2. 查看数据库支持的排序规则

show collation;

        MySQL8.0默认的排序规则:

| utf8mb4_0900_ai_ci          | utf8mb4  | 255 | Yes     | Yes      |       0 | NO PAD        |

3.3. 不同的字串集与排序规则对数据库的影响

  • ai是Accent-insensitive的缩写,表示口声不敏感
  • ci是Case-insensitive的缩写表示大小写不敏感
  • as是Accent-sensitive的缩写,表示口声敏感
  • cs是Case-sensitive的缩写,表示大小写敏感
  • bin表示二进制

3.4. 查看系统默认字符集和排序规则

        默认字符集:

mysql> show variables like 'character%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | gbk                                                     |
| character_set_connection | gbk                                                     |
| character_set_database   | utf8mb4                                                 |
| character_set_filesystem | binary                                                  |
| character_set_results    | gbk                                                     |
| character_set_server     | utf8mb4                                                 |
| character_set_system     | utf8mb3                                                 |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.04 sec)

        默认排序规则:

mysql> show variables like '%collation%';
+-------------------------------+--------------------+
| Variable_name                 | Value              |
+-------------------------------+--------------------+
| collation_connection          | gbk_chinese_ci     |
| collation_database            | utf8mb4_0900_ai_ci |
| collation_server              | utf8mb4_0900_ai_ci |
| default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci |
+-------------------------------+--------------------+
4 rows in set, 1 warning (0.00 sec)

四、查看创建语句

4.1. 语法

mysql> show create database 数据库名称;
mysql> show create database test3_21;
+----------+------------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database
                        |
+----------+------------------------------------------------------------------------------------------------------------------------------------+
| test3_21 | CREATE DATABASE `test3_21` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

        在“Create Database”对应的这一列里面,会出现与注释相同的符号“/**/”,但这个其实是指当前mysql版本大于4.01和 8.0.16时,分别执行对应的语句。

五、修改数据库

5.1. 语法

ALTER {DATABASE | SCHEMA} [db_name]
 alter_option ...
alter_option: {
 [DEFAULT] CHARACTER SET [=] charset_name
 | [DEFAULT] COLLATE [=] collation_name
 | [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}
 | READ ONLY [=] {DEFAULT | 0 | 1}
}

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

mysql> alter database test_db character set gbk;
Query OK, 1 row affected (0.01 sec)

mysql> show create database test_db;
+----------+----------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                    |
+----------+----------------------------------------------------------------------------------------------------+
| test_db  | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

        但实际上,不建议对数据库进行修改。因为修改之后的编码不同,前面的数据还需要重新整理,效率非常低。大多数情况下还是将原来数据库的资料导出再导入到新创建的数据库里面。

六、删除数据库

6.1. 语法

DROP {DATABASE | SCHEMA} [IF EXISTS] 数据库名称;
mysql> drop database if exists test_db;
Query OK, 0 rows affected (0.04 sec)

        关于删除数据库,有些时候可能会出现一些误删数据库的操作,但也不必担心。因为数据库会定期对数据进行全量备份和增量备份,或者是通过日志进行恢复,或者是对磁盘进行物理恢复。

6.2. 注意事项

  • 删除数据库是⼀个危险操作,不要随意删除数据库
  • 删除数据库之后,数据库对应的⽬录及⽬录中的所有文件也会被删除
  • 删除数据库之后,使⽤show databases;语句查看不到对应的数据库

        在此路径下,C:\ProgramData\MySQL\MySQL Server 8.0\Data,是MySQL的数据目录,里面包含了当前数据库服务管理的所有数据。如果我们把一个Excel文件看成是一个数据库,里面的每一行就可以看作是每一行数据。如果我们想删除一个数据库,那么对应的文件也会被删除。

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

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

相关文章

git_version_control_proper_practice

git_version_control_proper_practice version control,版本控制的方法之一就是打tag 因为多人协作的项目团队,commit很多,所以需要给重要的commit打tag,方便checkout,检出这个tag 参考行业的实践方式。如图git、linux…

计算机组成原理和计算机网络常见单位分类及换算

计算机组成原理(主要用于存储、内存、缓存等) 计算机网络(主要用于传输速率) 直观对比

【第二十八周】:Temporal Segment Networks:用于视频动作识别的时间分段网络

TSN 摘要Abstract文章信息引言方法时间分段采样分段聚合输入模态聚合函数多尺度时序窗口集成(M-TWI)训练 代码实现实验结果总结 摘要 本篇博客介绍了时间分段网络(Temporal Segment Network, TSN),这是一种针对视频动…

扩展域并查集

什么叫扩展域并查集 1 和 2是敌人,那么就把1好12链接起来:表示1和2是敌人 2和11链接起来也是这个道理 然后2 和3使敌人同理。 最后12连接了1 和 3,表名1 和 3 是 2 的敌人,1和3 就是朋友 1.P1892 [BalticOI 2003] 团伙 - 洛谷 #in…

【C#语言】C#同步与异步编程深度解析:让程序学会“一心多用“

文章目录 ⭐前言⭐一、同步编程:单线程的线性世界🌟1、寻找合适的对象✨1) 🌟7、设计应支持变化 ⭐二、异步编程:多任务的协奏曲⭐三、async/await工作原理揭秘⭐四、最佳实践与性能陷阱⭐五、异步编程适用场景⭐六、性能对比实测…

动态规划入门详解

动态规划(Dynamic Programming,简称DP)是一种算法思想,它将问题分解为更小的子问题,然后将子问题的解存起来,避免重复计算。 所以动态规划中每一个状态都是由上一个状态推导出来的,这一点就区别…

SOFABoot-09-模块隔离

前言 大家好,我是老马。 sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金服开源的 s…

基于基于eFish-SBC-RK3576工控板的智慧城市边缘网关

此方案充分挖掘eFish-SBC-RK3576的硬件潜力,可快速复制到智慧园区、交通枢纽等场景。 方案亮点 ‌接口高密度‌:单板集成5GWiFi多路工业接口,减少扩展复杂度。‌AIoT融合‌:边缘端完成传感器数据聚合与AI推理,降低云端…

CSS基础知识一览

持续维护 选择器 display 常用属性 浮动 弹性布局

【免费】2000-2019年各省地方财政房产税数据

2000-2019年各省地方财政房产税数据 1、时间:2000-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政房产税 4、范围:31省 5、指标说明:房产税是对个人和单位拥有的房产征收的一种…

车载以太网网络测试-21【传输层-DOIP协议-4】

目录 1 摘要2 DoIP entity status request/response(0x4001、0x4002)2.1 使用场景2.2 报文结构2.2.1 0x4001:DoIP entity status request2.2.2 0x4002:DoIP entity status response 3 Diagnostic power mode information request/…

Spring AI Alibaba ChatModel使用

一、对话模型(Chat Model)简介 1、对话模型(Chat Model) 对话模型(Chat Model)接收一系列消息(Message)作为输入,与模型 LLM 服务进行交互,并接收返回的聊天…

基于FPGA频率、幅度、相位可调的任意函数发生器(DDS)实现

基于FPGA实现频率、幅度、相位可调的DDS 1 摘要 直接数字合成器( DDS ) 是一种通过生成数字形式的时变信号并进行数模转换来产生模拟波形(通常为正弦波)的方法,它通过数字方式直接合成信号,而不是通过模拟信号生成技术。DDS主要被应用于信号生成、通信系统中的本振、函…

k8s高可用集群安装

一、安装负载均衡器 k8s负载均衡器 官方指南 1、准备三台机器 节点名称IPmaster-1192.168.1.11master-2192.168.1.12master-3192.168.1.13 2、在这三台机器分别安装haproxy和keepalived作为负载均衡器 # 安装haproxy sudo dnf install haproxy -y# 安装Keepalived sudo yum …

3DMAX曲线生成器插件CurveGenerator使用方法

1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具,用户可以通过简单的UI界面输入参数,快速生成多条样条线。每条样条线的高度值随机生成,且可以自定义以下参数: 顶点数量:每条…

六十天前端强化训练之第二十六天之Vue Router 动态路由参数大师级详解

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、知识讲解 1. Vue Router 核心概念 2. 动态路由参数原理 3. 参数传递方案对比 二、核心代码示例 1. 完整路由配置 2. 参数接收组件 3. 导航操作示例 三、实现效果示…

Model Context Protocol:下一代AI系统集成范式革命

在2023年全球AI工程化报告中,开发者面临的核心痛点排名前三的分别是:模型与业务系统集成复杂度(58%)、上下文管理碎片化(42%)、工具调用标准化缺失(37%)。传统API集成模式在对接大语言模型时暴露明显短板:RESTful接口无法承载动态上下文,GraphQL缺乏工具编排能力,gR…

Java多线程与高并发专题——Future 是什么?

引入 在上一篇Callable 和 Runnable 的不同?的最后,我们有提到和 Callable 配合的有一个 Future 类,通过 Future 可以了解任务执行情况,或者取消任务的执行,还可获取任务执行的结果,这些功能都是 Runnable…

DeepSeek本地搭建

1. 软件下载安装 Miniconda Miniconda下载地址 选择对应的版本下载,此处下载如下版本 Python 3.10 conda 25.1.1 安装完成后,配置环境变量,打开cmd命令窗口验证 Python Python的版本为 3.10 PyTorch PyTorch下载地址 后面通过命令下…

维普AIGC降重方法有哪些?

在学术写作和论文创作中,重复率过高是许多人面临的一大难题。随着科技的发展,维普 AIGC 为我们提供了一系列有效的降重方法。那么,维普AIGC降重方法有哪些呢?接下来就为大家详细介绍。 语义理解与改写 维普 AIGC 具备强大的语义理…