数据库从零开始:MySQL 中的 DDL 库操作详解【Linux版】

数据库从零开始:MySQL 中的 DDL 库操作详解【Linux版】

前言

        在上一篇文章中,我们深入探讨了 MySQL 的基础知识,为大家奠定了坚实的理论基础。今天,我们将目光聚焦于 MySQL 最基础且至关重要的操作之一——数据库库级别的数据定义语言(DDL)操作,这是每一个数据库开发者和管理者必须精通的技能。

        库级 DDL 操作是构建和管理数据库系统的基础,它涉及数据库对象的创建、修改和删除。通过本文,我们将详细讲解如何有效地进行数据库的管理,包括:

  1. 创建数据库的基本语法和注意事项
  2. 选择和切换数据库的正确方法
  3. 修改数据库字符集和校对规则
  4. 安全有效地删除数据库

        接下来,让我们一步步揭开 MySQL 库操作的神秘面纱,帮助读者全面掌握这些核心技能。

1.创建数据库

        我们先从数据库的创建开始讲起,相信看过我上篇文章的读者朋友见识过我常见数据库,上篇仅仅是为了让各位快速了解数据库,今天才是正事对它的讲解,下面我先带领各位看看它的语法。

1.1.语法

CREATE DATABASE [IF NOT EXISTS] db_name   #[]代表可写可不写    [create_specification [,create_specification] ...] #create_specification: #[DEFAULT] CHARACTER SET charset_name #[DEFAULT] COLLATE collation_name   这个是后面的字符集,等会在说

        可能很多读者看到这个语法后都会觉得脑子痛痛的,小编当时学习的时候也是觉着很难受,所以我决定先不细讲这个语法,我们先从创建数据库简单的形式开始。

1.2.创建一个最简单的数据库

create database boke_1;  #最简单的一集,记着mysql末尾是需要分号的,类似写C++。

        这条命令是创建一个叫做boke_1的数据库。并且可以创建成功,不过如果我们这样写的话其实是不太规范的,因为这里有一个陷阱——如果text_1在之前就创建过的话,服务器会无情的给你一个错误,如果是在写一个自动化部署的话,脚本会因此中断,这是比较致命的,所以我们需要创建数据库的时候,通过第一个[]的内容就可以部署第一道防线。

1.3.第一道防线:你的安全网:IF NOT EXISTS

        想象一下,你在编写一个可以反复运行的初始化脚本。你肯定不希望每次运行都因为数据库已存在而失败。这时候,我们的第一个英雄登场了:IF NOT EXISTS。所以我们可以完善一下之前的代码。

CREATE DATABASE IF NOT EXISTS boke_1;

        这句话的作用是:如果boke_1数据库已经存在了,那么就不会执行创建操作了,避免因为重复创建数据库而引发的错误。如果数据库不存在的话,那么mysql会创建该数据库。这样确保了脚本在多次执行的时候不会因为数据库已经存在而被中断了。

1.4.第二道防线:明确你的语言环境——设置字符集以及校对准则

        虽然现在我们已经可以安全的创建出一个数据库了,但是如果你对数据存储的语言和排序规则有要求,比如你要存储中文、支持多语言,或者希望在比较字符串时不区分大小写,那就不能忽略另一个关键参数——字符集(Character Set)和校对规则(Collation)

1.4.1.为什么要设置字符集

        字符集决定了数据库如何存储字符,比如使用utf8就可以支持几乎所有语言的字符(包括emoji表情😄),而latin1则仅仅适合英文或者西欧的语言。

        校对准则则会影响字符的比较方式,比如是否区分大小写、如何排序。例如:

  • utf8mb4_general_ci:不区分大小写(ci = case-insensitive)
  • utf8mb4_bin:区分大小写(bin = binary)
1.4.2.加入字符集和校对准则的写法

        现在我们来完善前面的数据库创建语句。

CREATE DATABASE IF NOT EXISTS boke_1 DEFAULT CHARACTER SET utf8 COLLATE utf8mb4_general_ci;

        这条语句做了以下几件事:

  1. 如果 boke_1 不存在则创建它;
  2. 使用 utf8mb4 字符集存储数据;
  3. 使用不区分大小写的方式来比较和排序字符串。

        这样写,既安全又规范,是生产环境中比较推荐的做法,不过我之后写博客的时候,一般后面的字符集和校验准则是不会写的,我选择使用系统默认的字符集和校对准则,其实就是上面我写的,我早在配置mysql的时候就已经调好默认的字符集恶化校对准则了。【不会配置的可以看我上一篇文章】。

2.字符串和校验准则

        虽然我在上面就已经讲述了字符串和校验准则是什么了,但是我仅仅就是简单的介绍一下,下面我带领着各位来看看mysql默认的字符串和校验准则都有什么。

2.1.查看系统默认字符集以及校验准则

        输入下面的代码可以查看系统默认的字符集。

show variables like 'character_set_database';

        可以看到系统当前的字符集的设置,可以看出是utf8。

        输入下面的代码可以查看系统默认的校验准则。

show variables like 'collation_database';

        可以看到系统默认的校验准则。

2.2.查看数据库中支持的字符集

        可能很多读者疑惑数据库到底支持多少种字符集,输入下面的代码就可看到支持的字符集,其实还是比较多的。

show charset;

        支持的字符集还是很多的,不过我还是推荐各位使用默认的utf8即可,因为它比较全能,还是比较好用的。

2.3.查看数据库支持的字符集校验准则

        看完了数据库可以支持的字符集,我们当然也不能忘了字符集校验准则,同样的,一行代码我们也可以了解。

show collation;

        上面是我截取的一点点,其实数据库支持的字符校验准则非常多,不过我还是那句话,用默认的就好,除非遇到一些特殊的情况,我们再加上就好了。

3.操纵数据库

        接下来我们继续进行数据库相关的基本操作。当我们创建了多个数据库后,有时可能需要查看当前系统中已有多少个数据库。此时,我们将使用数据库操作中的第一条指令——查看数据库

3.1.查看数据库

show databases;

上面的指令就是查看我们当前的数据库,就比如下图。

3.2.显示创建语句

        可能有时候我们想要知道这个表创造的细节,那么我们可以输入下面的语句进行创建语句细节的查看。

show create database 数据库名;

3.3.修改数据库

        可能有的时候我们想要去修改数据库的字符集或者校验规则,此时我们输入下面的指令就可以修改。

ALTER DATABASE 数据库名 CHARACTER SET 字符集名 COLLATE 校验规则名;

        例如,如果我们想将数据库 mydb 的字符集修改为 utf8mb4,校验规则修改为 utf8mb4_general_ci,可以执行以下命令。

ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

        需要注意的是,修改字符集和校验规则可能会影响数据库中已有的数据,尤其是在涉及排序和比较的操作时。因此,建议在操作前备份数据库,并确认修改后的字符集和校验规则是否适用于当前数据需求。

3.4.删除数据库

        有时,我们曾经一个创建好的数据库不同了,想要把它删除(但是一般来说,我们是不需要删除的,因为有风险),不过可能很多读者还是想要了解这个指令,所以我还是讲了。

drop database [if exists] 数据库的名字;    

        []里面的字符串的功能和创建数据库的一样,它是为了确保我们不删除一个不存在的数据库,如果没有它并且我们删除一个不存在的数据库,系统会报错,有了它就不会报错了,所以我们编写自动化脚本的时候风险就降低了。

3.5.查看数据库的连接情况

        有的时候,可能会有多个用户访问我们的mysql,当我们输入下面的指令就可以知道当前有哪些用户连接到了我们的服务器,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

show processlist;

4.小结

        在本文中,我们深入探讨了 MySQL 中数据库库级别的基本操作,包括数据库的创建、字符集与校对规则的配置、以及数据库的管理与操作。通过一系列实际操作的示例,我们了解了如何:

  1. 使用简单语法创建数据库并通过 IF NOT EXISTS 防止重复创建错误;
  2. 配置数据库的字符集与校对规则,以确保数据库能够支持多语言和特定的字符比较需求;
  3. 使用一些基本的查询和修改语句,来查看数据库信息、修改数据库的字符集与校对规则、以及删除数据库;
  4. 在数据库管理中避免潜在的错误,确保操作的安全性与稳定性。

        掌握这些基础操作不仅有助于提升日常数据库开发与维护的效率,也为后续更高级的数据库优化与管理打下了坚实的基础。在实际工作中,我们常常需要根据具体需求灵活运用这些操作,尤其是在构建自动化脚本和管理多个数据库时,更要确保操作的准确性和安全性。希望本文的分享能为您的 MySQL 数据库操作提供帮助和指导。一起学习的时光总是短暂的,各位大佬们,我们下一篇文章见啦!

Read more

[AI] openwebui内网部署网页加载缓慢?一个设置绕过openai连接问题!

[AI] openwebui内网部署网页加载缓慢?一个设置绕过openai连接问题!

在部署和使用开源 Web UI 项目如 openwebui 时,很多人会选择将其安装在内网环境中,既可以保证数据安全,又能避免公网依赖。然而,一些用户在完成部署后会遇到一个令人费解的问题:网页打开速度奇慢,动不动就卡住十几秒才能打开。 如果你在后台日志中看到大量连接 openai 的超时信息,那恭喜你,踩中了一个“默认配置陷阱”。 本文将以“最简单有效”的方式解决这个问题——无需改代码、不用会 Python、零配置文件操作,只需一个图形化操作设置,即可永久解决页面打开慢的问题。 1. 问题现象:网页慢如蜗牛,控制台超时警告 你或许已经完成了以下操作: * 在内网服务器部署了 openwebui; * 成功启动服务并通过浏览器访问 Web UI 页面; * 却发现页面加载非常缓慢。 当你查看后台服务日志时,常常能看到如下信息: [ERROR] Request to https://api.openai.com/... timeout.

By Ne0inhk

零基础入门MC.JS WEBMC1.8:10分钟创建你的第一个方块世界

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 输入框内输入如下内容: 生成一个极简的MC.JS WEBMC1.8入门教程项目。包含一个基础的3D场景,地面由绿色方块组成,玩家可以使用WASD移动,鼠标点击放置红色方块。代码要极度简化,每个关键部分都有详细注释说明。提供一个分步教程文档,解释如何修改代码来改变方块颜色、大小和移动速度等基本参数。界面要友好,有明确的操作指引。 1. 点击'项目生成'按钮,等待项目生成完整后预览效果 最近在学习3D游戏开发,发现用MC.JS WEBMC1.8创建简单的方块世界特别适合新手入门。今天就把我的学习过程记录下来,分享给同样想尝试的小伙伴们。 1. 环境准备 不需要安装任何软件,直接打开浏览器就能开始。MC.JS WEBMC1.8是基于Web的简化版Minecraft开发框架,特别适合快速搭建3D场景原型。

By Ne0inhk
HarmonyOS NEXT开发进阶(十七):WebView 拉起 H5 页面

HarmonyOS NEXT开发进阶(十七):WebView 拉起 H5 页面

文章目录 * 一、问题说明 * 1.1 H5 应用加载失败或功能异常 * 1.2 H5 麦克风等权限申请无响应 * 1.3 多权限配置与交互冲突 * 二、原因分析 * 2.1 WebView 核心配置与权限缺失 * 2.2 权限申请与响应逻辑断裂 * 2.3 WebView 实例与生命周期管理不当 * 三、解决思路 * 3.1 核心配置与权限一体化处理 * 3.2 权限申请与 WebView 响应联动 * 3.3 调试与实例管理规范化 * 四、解决方案 * 4.1 工具函数:权限辅助(复用基础能力) * 4.2 WebView

By Ne0inhk
Flutter 三方库 wasm_ffi 深入鸿蒙端侧硬核 WebAssembly 虚拟机沙盒穿透适配全景:通过异步极速 FFI 中继管道打通底层高算力异构服务-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 wasm_ffi 深入鸿蒙端侧硬核 WebAssembly 虚拟机沙盒穿透适配全景:通过异步极速 FFI 中继管道打通底层高算力异构服务-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 wasm_ffi 深入鸿蒙端侧硬核 WebAssembly 虚拟机沙盒穿透适配全景:通过异步极速 FFI 中继管道打通底层高算力异构服务并全面实现无损语言壁垒交互 前言 在 OpenHarmony 应用向高性能计算领域扩展的过程中,如何优雅地接入已有的 C/C++ 算法库(如加密引擎、重型图像处理、数学模拟)而又不失跨平台的便捷性?传统的 NAPI 虽然稳健,但在 Flutter 生态中,直接利用 WebAssembly (WASM) 配合 FFI(External Function Interface)的语义可以在一定程度上实现代码的高度复用。wasm_ffi 库为 Flutter 开发者提供了一套在 Dart 环境下调用 WASM

By Ne0inhk