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



专栏: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文件看成是一个数据库,里面的每一行就可以看作是每一行数据。如果我们想删除一个数据库,那么对应的文件也会被删除。


相关文章:
MySQL数据库精研之旅第二期:库操作的深度探索
专栏:MySQL数据库成长记 个人主页:手握风云 目录 一、查看数据库 二、创建数据库 2.1. 语法 2.2. 示例 三、字符集编码和校验(排序)规则 3.1. 查看数据库支持的字符集编码 3.2. 查看数据库支持的排序规则 3.3. 不同的字串集与排序规则对数据库的…...
git_version_control_proper_practice
git_version_control_proper_practice version control,版本控制的方法之一就是打tag 因为多人协作的项目团队,commit很多,所以需要给重要的commit打tag,方便checkout,检出这个tag 参考行业的实践方式。如图git、linux…...
从单任务到多任务:进程与线程如何实现并发?
文章目录 1. 什么是进程定义进程的构成进程的状态进程与线程的关系进程的创建与销毁进程调度进程间通信(IPC)总结 2. 什么是线程?定义线程与进程的关系线程的特点线程的优点线程的类型线程的创建与销毁线程间通信总结 3. 进程与线程有什么区别…...
计算机组成原理和计算机网络常见单位分类及换算
计算机组成原理(主要用于存储、内存、缓存等) 计算机网络(主要用于传输速率) 直观对比...
【第二十八周】:Temporal Segment Networks:用于视频动作识别的时间分段网络
TSN 摘要Abstract文章信息引言方法时间分段采样分段聚合输入模态聚合函数多尺度时序窗口集成(M-TWI)训练 代码实现实验结果总结 摘要 本篇博客介绍了时间分段网络(Temporal Segment Network, TSN),这是一种针对视频动…...
为WordPress自定义一个留言板
要在WordPress中创建一个留言反馈表单,并实现后台管理功能,您可以按照以下步骤进行操作: 1. 创建留言反馈表单 首先,您需要使用一个表单插件来创建表单。推荐使用 Contact Form 7 或 WPForms。以下是使用 Contact Form 7 的示例…...
扩展域并查集
什么叫扩展域并查集 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 常用属性 浮动 弹性布局...
《Keras 3 : AI神经网络开发人员指南》
《Keras 3 : AI神经网络开发人员指南》 开发人员指南 我们的开发人员指南深入探讨了特定主题,例如层子类化、微调或模型保存。 它们是成为 Keras 专家的最佳方式之一。 我们的大多数指南都是以 Jupyter 笔记本的形式编写的,可以在 Google Colab 中一键…...
【免费】2000-2019年各省地方财政房产税数据
2000-2019年各省地方财政房产税数据 1、时间:2000-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政房产税 4、范围:31省 5、指标说明:房产税是对个人和单位拥有的房产征收的一种…...
WPF 布局舍入(WPF 边框模糊 或 像素错位 的问题)
1. 什么是 WPF 布局舍入? 在 WPF 开发过程中,可能会遇到界面模糊、边框错位、文本渲染不清晰等问题。这些现象通常是由于 WPF 采用 设备无关像素(DIP, Device Independent Pixels),在不同 DPI 设置下,UI 元…...
车载以太网网络测试-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/…...
机器学习——KNN数据集划分
一、主要函数 sklearn.datasets.my_train_test_split() 该函数为Scikit-learn 中用于将数据集划分为训练集和测试集的函数,适用于机器学习模型的训练和验证。以下是详细解释: 1、函数签名 train_test_split(*arrays, # 输入的数据…...
Pytest基础使用
概述 Pytest是Python里的一个强大的测试框架,灵活易用,可以进行功能,自动化测试使用,可以与Requests,Selenium等进行结合使用,同时可以生成Html的报告。 一、Pytest的基本使用 在未指定Pytest的配置文件时,会对以下文件进行执行: test_*.py,如:test_1.py*_test.py…...
Grid 布局实现三栏布局
使用 CSS Grid 布局实现三栏布局(左右固定 100px,中间自适应)的核心原理是通过网格模板精确控制列宽分配。以下是具体实现方法及优化技巧: 一、基础实现 父容器设置 为外层容器添加 display: grid 使其成为网格容器,并通过 grid-template-columns 定义列宽 css .contain…...
一条sql语句在mysql中的执行流程(Mysql基础架构)
mysql基础架构 MySQL 主要分为 Server 层和 存储引擎层: Server 层:主要包括 连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一…...
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 …...
WPF Reactive 数据绑定
文章目录 Combox 绑定List-通过枚举绑定方法一:方法二:Button 绑定TextBlock绑定NumericUpDown绑定Expander绑定checkbox绑定NumericUpDownCombox 绑定List-通过枚举绑定 方法一: ViewControl using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; usin…...
WSL 环境桥接与雷达通信配置笔记
作者: DWDROME 维护时间: 2025-03-22 参考文章:Windows子系统(WSL)通过桥接网络实现被外部局域网主机直接访问 WSL 环境桥接与雷达通信配置笔记 环境说明 Windows 11 专业版(启用 Hyper-V)WSL2 Ubuntu 20.04物理网线(…...
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…...
