文章目录

  • MYSQL:库的操作
    • 1. 本文简述
    • 2. 查看数据库
      • 2.1 语法
    • 3. 创建数据库
      • 3.1 语法
      • 3.2 示例
        • 3.2.1 创建一个简单的数据库
        • 3.2.2 使用 `IF NOT EXISTS` 防止重复创建
        • 3.2.3 再次运行,观察现象
        • 3.2.4 查看这个警告到底是什么
        • 3.2.5 创建数据库允许使用关键字
    • 4. 字符集与排序规则
      • 4.1 查看支持的字符集
      • 4.2 查看支持的排序规则
      • 4.3 字符集与排序规则的影响
      • 4.4 查看系统默认配置
      • 4.5 创建时指定字符集和排序规则
    • 5. 查看数据库的“出生证明”
      • 5.1 语法
      • 5.2 示例
    • 6. 修改数据库
      • 6.1 语法
      • 6.2 示例
    • 7. 删除数据库
      • 7.1 语法
      • 7.2 示例
      • 7.3 注意事项

MYSQL:库的操作

在学习任何数据库时,最基础也是最重要的一步,就是学会如何管理“库”(Database)。MySQL中关于库的增、删、改、查等一系列核心操作。

1. 本文简述

  • 熟练地创建、查看、修改和删除数据库。
  • 理解字符集(Character Set)和排序规则(Collation)这两个重要概念。

2. 查看数据库

在我们开始创建自己的数据库之前,不妨先看看当前MySQL中已经有哪些数据库了。这就像是来到一个新的工作台,先熟悉一下上面都有些什么工具。

2.1 语法

我们可以用下面这个非常直观的命令来查看:

-- 注意,这里的 DATABASES 是复数形式
show databases;
  • 这个命令对大小写不敏感,所以 show databases;SHOW DATABASES; 的效果是一样的。

3. 创建数据库

熟悉了环境,接下来就是重头戏——创建我们自己的数据库。

3.1 语法

创建数据库的基本语法是这样的:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option] ...-- create_option 是创建时的一些可选项
create_option: [DEFAULT] {CHARACTER SET [=] charset_name| COLLATE [=] collation_name| ENCRYPTION [=] {'Y' | 'N'}
}

我们来拆解一下这个语法:

  • CREATE DATABASE 是核心指令。DATABASESCHEMA 在这里是同义词,用哪个都行。
  • [IF NOT EXISTS] 是一个非常有用的可选项。它表示“如果这个数据库不存在,那么就创建它”。这可以避免因为数据库已存在而导致的执行错误。
  • db_name 就是我们要给数据库起的名字。
  • CHARACTER SET:用来指定数据库默认的字符集编码,比如我们常用的 utf8mb4
  • COLLATE:用来指定数据库的排序规则,它决定了数据库如何对字符串进行比较和排序。
  • ENCRYPTION:这是MySQL 8.0.16版本引入的新选项,用于设定数据库是否默认加密。

3.2 示例

理论说完了,我们来实际上手操作一下。

3.2.1 创建一个简单的数据库

比如,我们来创建一个名为 test001 的数据库。

mysql> create database test001;

在这里插入图片描述

看到 Query OK,就说明我们的第一个数据库已经成功创建!

3.2.2 使用 IF NOT EXISTS 防止重复创建

如果我们不确定一个数据库是否存在,最好带上 IF NOT EXISTS

mysql> create database if not exists testdb;

在这里插入图片描述

3.2.3 再次运行,观察现象

如果我们再运行一次上面的命令,会发生什么呢?

mysql> create database if not exists testdb;
Query OK, 1 row affected, 1 warning (0.01 sec)  -- 注意,这次出现了一个警告(warning)

没有报错,但多了一个 warning。这正是 IF NOT EXISTS 的作用:它发现 testdb 已经存在,所以没有执行创建操作,而是给出了一个提示。

3.2.4 查看这个警告到底是什么

我们可以用 show warnings; 命令来查看具体信息:

mysql> show warnings;
1 row in set (0.00 sec)
-- 提示信息很明确:无法创建 'testdb',因为它已经存在了。

在这里插入图片描述

这个过程很好地展示了 IF NOT EXISTS 如何让我们的操作更加“健壮”。

顺便一提,当一个数据库被成功创建后,MySQL会在其数据目录下生成一个和数据库同名的文件夹,用来存放这个库里所有的数据和表。

3.2.5 创建数据库允许使用关键字
CREATE DATABASE `database`;

MySQL中允许开发者使用关键字命名,使用反引号把关键字引起来,database

使用其他关键字同理:from to password user

4. 字符集与排序规则

在创建数据库时,我们提到了两个重要选项:CHARACTER SETCOLLATE。这两个概念对于处理各种语言的文字(尤其是中文)至关重要,我们必须搞明白。

4.1 查看支持的字符集

MySQL支持哪些字符集?我们可以用 show charset; 命令查看。

show charset;

在这里插入图片描述

  • 在 MySQL 8.0 版本中,默认的字符集是 utf8mb4,它几乎可以表示世界上所有的字符,非常强大。而在稍早的 MySQL 5.7 版本中,默认的还是 latin1,它对中文的支持就不那么友好了。

4.2 查看支持的排序规则

与字符集配套的是排序规则,它定义了字符之间如何比较大小。我们可以用 show collation; 查看所有支持的规则。

show collation;

在这里插入图片描述

  • 同样,MySQL 8.0 默认的排序规则是 utf8mb4_0900_ai_ci,而 5.7 版本默认是 utf8mb4_general_ci

4.3 字符集与排序规则的影响

这些规则的名字看起来很长,但其实是很有规律的。我们以 utf8mb4_0900_ai_ci 为例来解读一下:

  • utf8mb4: 指的是字符集。它是对Unicode标准的一种实现,最多使用4个字节来表示一个字符,因此能完美支持包括Emoji在内的各种文字。
  • 0900: 指的是它所基于的Unicode排序算法(UCA)的版本,这里是 9.0.0。
  • ai: Accent-insensitive 的缩写,表示“不区分声调”。比如 aá 会被认为是一样的。
  • ci: Case-insensitive 的缩写,表示“不区分大小写”。比如 Aa 会被认为是一样的。

与之对应的还有:

  • as: Accent-sensitive,区分声调。
  • cs: Case-sensitive,区分大小写。
  • bin: Binary,二进制排序。直接根据字符的二进制编码来比较,最严格,效率也最高。

理解了这些,我们就能根据需求选择最合适的排序规则了。

4.4 查看系统默认配置

那么,当前整个MySQL服务的默认配置是什么呢?我们可以通过查询系统变量来看到。

查看系统默认字符集:

mysql> show variables like '%character%';
-- 这个命令会列出所有和 'character' 相关的系统变量

在这里插入图片描述

查看系统默认排序规则:

mysql> show variables like '%collation%';
-- 这个命令会列出所有和 'collation' 相关的系统变

在这里插入图片描述

4.5 创建时指定字符集和排序规则

现在我们知道了这些概念,就可以在创建数据库时明确指定它们了。

-- 创建一个名为 java01 的库,如果它不存在
-- 明确指定使用 utf8mb4 字符集
-- 和 utf8mb4_0900_ai_ci 排序规则
create database if not exists java01 character set utf8mb4 collate utf8mb4_0900_ai_ci;

5. 查看数据库的“出生证明”

当我们想回顾一个数据库当初是如何被创建的,比如它的默认字符集是什么,就可以查看它的创建语句。

5.1 语法

show create database db_name;

5.2 示例

我们来看看刚才创建的 java01 库。

mysql> show create database java01;

在这里插入图片描述

这里有几个有趣的细节:

  • 数据库名 java01 被反引号 ` 包围了。这是一个好习惯,可以防止我们的库名或表名与MySQL的关键字冲突。
  • /*!40100 ... *//*!80016 ... */ 这种看起来像注释的语法,其实是MySQL的特定版本执行指令。它表示:只有当MySQL的版本大于等于4.01.00(或8.0.16)时,才执行里面的语句。这是一种保证向后兼容性的巧妙设计。

6. 修改数据库

如果数据库创建之后,我们想修改它的一些属性,比如改一下默认的字符集,也是可以的。

6.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}
}

对数据库的修改,最常见的就是修改它的默认字符集和排序规则。

6.2 示例

我们来把之前创建的 test001 数据库的字符集改成 gbk

mysql> alter database test001 character set gbk;
Query OK, 1 row affected (0.01 sec)-- 修改完之后,我们再来查看一下它的创建语句,验证一下
mysql> show create database test001;

在这里插入图片描述

可以看到,默认字符集已经成功变成了 gbk

7. 删除数据库

最后,我们来看看如何删除一个数据库。

7.1 语法

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;

7.2 示例

mysql> drop database testdb;

在这里插入图片描述

7.3 注意事项

这是一个非常危险的操作,一定要三思而后行!

  • 删除数据库会永久移除库里所有的数据和表,通常是不可恢复的。
  • 在生产环境中,执行这个命令前一定要再三确认,并且做好备份。
  • 删除之后,物理存储上对应的文件夹也会被一并删除。

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

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

相关文章

Xilinx FPGA XCKU115‑2FLVA1517I AMD KintexUltraScale

XCKU115‑2FLVA1517I 隶属于 Xilinx (AMD)Kintex UltraScale 系列,基于领先的 20 nm FinFET 制程打造。该器件采用 1517‑ball FCBGA(FLVA1517)封装,速度等级 ‑2,可实现高达 725 MHz 的核心逻…

Linux Ubuntu安装教程|附安装文件➕安装教程

[软件名称]: Linux Ubuntu18.0 [软件大小]: 1.8GB [安装环境]: VMware [夸克网盘接] 链接:https://pan.quark.cn/s/971f685256ef (建议用手机保存到网盘后,再用电脑下载)更多免费软件见https://docs.qq.com/sheet/DRkdWVFFCWm9UeG…

深入解析Hadoop YARN:三层调度模型与资源管理机制

Hadoop YARN概述与产生背景从MapReduce到YARN的演进之路在Hadoop早期版本中,MapReduce框架采用JobTracker/TaskTracker架构,这种设计逐渐暴露出严重局限性。JobTracker需要同时处理资源管理和作业控制两大核心功能,随着集群规模扩大&#xff…

Pycaita二次开发基础代码解析:边线提取、路径追踪与曲线固定

本文将深入剖析CATIA二次开发中三个核心类方法:边线提取特征创建、元素结构路径查找和草图曲线固定技术。通过逐行解读代码实现,揭示其在工业设计中的专业应用价值和技术原理。一、边线提取技术:几何特征的精确捕获与复用1.1 方法功能全景ext…

Linux 任务调度在进程管理中的关系和运行机制

📖 推荐阅读:《Yocto项目实战教程:高效定制嵌入式Linux系统》 🎥 更多学习视频请关注 B 站:嵌入式Jerry Linux 任务调度在进程管理中的关系和运行机制 Linux 内核中的“任务调度”是进程管理系统的核心部分,相互关联而…

JAVA后端开发—— JWT(JSON Web Token)实践

1. 什么是HTTP请求头 (Request Headers)?当你的浏览器或手机App向服务器发起一个HTTP请求时,这个请求并不仅仅包含你要访问的URL(比如 /logout)和可能的数据(请求体),它还附带了一堆“元数据&am…

【SVM smote】MAP - Charting Student Math Misunderstandings

针对数据不平衡问题,用调整类别权重的方式来处理数据不平衡问题,同时使用支持向量机(SVM)模型进行训练。 我们通过使用 SMOTE(Synthetic Minority Over-sampling Technique)进行过采样,增加少数…

repmgr+pgbouncer实现对业务透明的高可用切换

本方案说明 PostgreSQL repmgr:实现主从自动故障检测与切换(Failover)。PgBouncer:作为连接池,屏蔽后端数据库变动,提供透明连接。动态配置更新:通过repmgr组件的promote_command阶段触发脚本…

查找服务器上存在线程泄露的进程

以下是一个改进的命令,可以列出所有线程数大于200的进程及其PID和线程数: find /proc -maxdepth 1 -type d -regex /proc/[0-9] -exec sh -c for pid_dir dopid$(basename "$pid_dir")if [ -f "$pid_dir/status" ]; thenthreads$(aw…

Facebook 开源多季节性时间序列数据预测工具:Prophet 饱和预测 Saturating Forecasts

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。 Prophet 是一种基于加法模型的时间序列数据预测程序,在该模型中,非线性趋势与年、周、日季节性以及节假日效应相匹配。…

从单线程到云原生:Redis 二十年演进全景与内在机理深剖

——从 1.0 到 7.2,一窥数据结构、网络模型、持久化、复制、高可用与生态协同的底层脉络(一)序章:为什么是 Redis 1999 年,Salvatore Sanfilippo 在开发一个实时访客分析系统时,发现传统磁盘型数据库无法在…

得了甲亢军队文职体检能过吗

根据军队文职体检现行标准,甲亢患者能否通过体检需分情况判定,核心取决于病情控制状态、治疗结果及稳定时长。结合《军队选拔军官和文职人员体检通用标准》及补充规定,具体分析如下:⚕️ 一、可直接通过体检的情况临床治愈满1年且…

【编程语言】C、C++、C#深度对比:三种语言的演进历程与应用场景

一、语言概述与历史背景 (一)C语言:系统编程的基石诞生背景 1972年由Dennis Ritchie在贝尔实验室开发为了重写UNIX操作系统而创造从B语言演化而来,增加了数据类型设计目标:简洁、高效、可移植设计哲学 “相信程序员”&…

《计算机网络》实验报告五 DNS协议分析与测量

目 录 1、实验目的 2、实验环境 3、实验内容 3.1 查看和配置本机的DNS系统 3.2 DNS信息测量 3.3 DNS协议分析 4、实验结果与分析 4.1 查看和配置本机的DNS系统 4.2 DNS信息测量 4.3 DNS协议分析 5、实验小结 5.1 问题与解决办法: 5.2 心得体会&#x…

Python工厂方法模式详解:从理论到实战

一、工厂方法模式核心概念 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,属于经典23种设计模式之一。其核心思想是:定义一个创建对象的接口,但将具体对象的实例化过程延迟到子类中实现。这种模式通过引入…

python爬虫获取PDF

【前提:菜鸟学习的记录过程,如果有不足之处,还请各位大佬大神们指教(感谢)】 1.方法一:网站找到目标数据【单篇PDF】 https://bidding.sinopec.com/tpfront/xxgg/004005/ 按F12,----检查------…

IFN影视官网入口 - 4K影视在线看网站|网页|打不开|下载

IFN影视是一个专注于影视内容的网站,提供电影、电视剧、综艺等各类影视资源的在线观看服务。该网站以用户需求为导向,致力于为用户提供高清、流畅的观影体验,并不断更新内容以满足不同用户的观看习惯和偏好。IFN影视的特色在于其内容丰富、分…

《计算机网络》实验报告四 TCP协议分析

目 录 1、实验目的 2、实验环境 3、实验内容 3.1 利用wget下载新疆大学主页 3.2 使用wireshark分析TCP报文结构 3.3 使用wireshark分析建立连接的三次握手 3.4 使用wireshark分析释放连接的四次挥手 4、实验结果与分析 4.1 利用wget下载新疆大学主页 4.2 使用wiresh…

知识 IP 的突围:从 “靠感觉” 到 “系统 + AI” 的变现跃迁

越来越多的知识付费从业者陷入 “努力无成果” 的困局:做了内容、上了课程,却没人看、没人买。核心问题不在于能力不足,而在于仍在用 “靠感觉” 的原始方式打造 IP。在流量内卷、节奏加快的当下,“内容情怀” 已撑不起一门生意&a…

4.Java创建对象有几种方式?

1.使用 new 关键字(最常用)通过调用类的构造函数直接实例化对象Person person new Person(); // 调用无参构造 Person person new Person("Alice", 25); // 调用有参构造2.反射机制(动态创建)利用Java反射 API 在运行…