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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu系统/run目录不能执行脚本问题解决

目录 前言 一、问题现象 二、原因分析 三、解决办法 总结 前言 在使用 Ubuntu 系统的过程中,我们有时会遇到在 /run 目录下无法执行脚本的情况。这篇博客将详细探讨该问题的原因,并提供有效的解决方案。。 一、问题现象 当尝试在 /run 目录下执行一个…

万用表测MOS好坏

测N MOS好坏 1,首先用万用表表笔把G D S全部短接放电。 2,万用表打到二极管档位 3,红笔接S(源极),黑笔接D(漏极),万用表会显示0.5V左右的电压(内部二极管压降…

clamav服务器杀毒(Linux服务器断网状态下如何进行clamav安装、查杀)

ClamAV服务器杀毒(服务器断网状态也可以使用该方法) 服务器因为挖矿病毒入侵导致断网,进行离线的clamav安装并查杀 安装包下载网址:https://www.clamav.net/downloads 安装.deb,如果服务器处于断网状态,可以…

Linux:基础IO---文件描述符

文章目录 1. 前言1.1 C语言文件知识回顾 2. 文件2.1 文件基础知识 3. 被打开的文件3.1 以C语言为主,先回忆一下C文件接口3.2 过渡到系统,认识文件系统调用3.3 访问文件的本质3.4 重定向&&缓冲区 序:在深入了解了进程的内容后&#xf…

LINUX基础 [二] - 进程概念

目录 前言 什么是进程 如何管理进程 描述进程 组织进程 如何查看进程 通过 ps 命令查看进程 通过 ls / proc 命令查看进程 通过系统调用 获取进程标示符 前言 在学习了【Linux系统编程】中的 ​ 操作系统 和 冯诺依曼体系结构 之后,我们已经对系统应该有…

word使用自带的公式

文章目录 Word公式中word公式快捷键:word2016公式框输入多行word 公式加入空格:word公式如何输入矩阵:公式图片转为Latex语法word 能直接输入 latex 公式么 word文本中将文字转为上标的快捷键 Tips几个好用的网站: 适用于:我的wor…

LSM-Tree(Log-Structured Merge-Tree)详解

1. 什么是 LSM-Tree? LSM-Tree(Log-Structured Merge-Tree)是一种 针对写优化的存储结构,广泛用于 NoSQL 数据库(如 LevelDB、RocksDB、HBase、Cassandra)等系统。 它的核心思想是: 写入时只追加写(Append-Only),将数据先写入内存缓冲区(MemTable)。内存数据满后…

车载以太网网络测试-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/…

CSS学习笔记

【1】CSS样式规则 【2】CSS样式表引入方式 1、行内式 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"/><meta name"vi…

医学交互作用分析步骤和目的(R语言)

医学交互作用分析的目的和用途&#xff08;R语言&#xff09; 医学交互作用分析一直是医学数据分析的组成部分&#xff0c;总结最近的一些认识。 目的&#xff1a; 在独立危险因素鉴定的研究中&#xff0c;&#xff08;独立危险因素的&#xff09;交互作用可以作为独立危险因…

『uniapp』简单文本复制文字 富文本内容复制文字(详细图文注释)

目录 text组件错误代码示例成功代码总结 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 text组件 官方文档可知app端用selectable可实现文本选中进而可复制,也就是说text标签内部的文本就可以复制了 https://uniapp.dclou…

C# SolidWorks 二次开发 -各种菜单命令增加方式

今天给大家讲一讲solidworks中各种菜单界面&#xff0c;如下图&#xff0c;大概有13处&#xff0c;也许还不完整哈。 1.CommandManager选项卡2.下拉选项卡3.菜单栏4.下级菜单5.浮动工具栏6.快捷方式工具栏7.FeatureManager工具栏区域8.MontionManager区域 ModelView?9.任务窗…

SAP Commerce(Hybris)PCM模块(一):商品批量导入导出

PCM&#xff08;Product Content Management&#xff09;是一个基于Backoffice&#xff0c;利于管理员直接页面操作的Hybris商品管理模块。 前置准备 在启动Hybris项目后&#xff0c;可以在backoffice控制台选择商品模块 但是&#xff0c;仅仅是以初始化状态启动是不够的&…

Apache Doris

Apache Doris介绍 Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库&#xff0c;以极速易用的特点被人们所熟知&#xff0c;仅需亚秒级响应时间即可返回海量数据下的查询结果&#xff0c;不仅可以支持高并发的点查询场景&#xff0c;也能支持高吞吐的复杂分析场…

go:前后端分离

1.前端代码 新建一个前端文件夹&#xff0c;在该文件夹下新建一个.html文件&#xff0c;写入自己的html代码。 前端搞定。 2.后端代码 其核心是挂载路由接受前端传来的数据核心代码如下&#xff1a; func main() { // 服务运行提示 fmt.Println("go web server is runn…

CUDA 学习(2)——CUDA 介绍

GeForce 256 是英伟达 1999 年开发的第一个 GPU&#xff0c;最初用作显示器上渲染高端图形&#xff0c;只用于像素计算。 在早期&#xff0c;OpenGL 和 DirectX 等图形 API 是与 GPU 唯一的交互方式。后来&#xff0c;人们意识到 GPU 除了用于渲染图形图像外&#xff0c;还可以…

C语言【文件操作】详解中

引言 介绍和文件操作中文件的顺序读写相关的函数 看这篇博文前&#xff0c;希望您先仔细看一下这篇博文&#xff0c;理解一下文件指针和流的概念&#xff1a;C语言【文件操作】详解上-CSDN博客文章浏览阅读606次&#xff0c;点赞26次&#xff0c;收藏4次。先整体认识一下文件是…

损失函数理解(二)——交叉熵损失

损失函数的目的是为了定量描述不同模型&#xff08;例如神经网络模型和人脑模型&#xff09;的差异。 交叉熵&#xff0c;顾名思义&#xff0c;与熵有关&#xff0c;先把模型换成熵这么一个数值&#xff0c;然后用这个数值比较不同模型之间的差异。 为什么要做这一步转换&…

学习笔记--基于Sa-Token 实现Java项目单点登录+同端互斥检测

目录 同端互斥登录 单点登录SSO 架构选型 模式二: URL重定向传播 前后端分离 整体流程 准备工作 搭建客户端 搭建认证中心SSO Server 环境配置 开放认证接口 启动类 跨域处理 同端互斥登录 同端互斥登陆 模块 同端互斥登录指&#xff1a;同一类型设备上只允许单地…

蓝桥杯 小球反弹

问题描述 有一个长方形&#xff0c;长为 343720 单位长度&#xff0c;宽为 233333 单位长度。 在其内部左上角顶点有一小球&#xff08;无视其体积&#xff09;&#xff0c;其初速度方向如图所示&#xff0c;且保持运动速率不变。分解到长宽两个方向上的速率之比为&#xff1…