数据库从零开始: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如何帮你一键解决黄色代码复制粘贴问题

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 输入框内输入如下内容: 创建一个工具,能够自动识别网页或文档中的黄色高亮代码片段,并将其转换为可直接复制的干净代码格式。支持多种编程语言,包括JavaScript、Python、HTML/CSS等。工具应提供一键复制功能,并能自动去除黄色背景和其他无关格式。 1. 点击'项目生成'按钮,等待项目生成完整后预览效果 最近在开发过程中,我经常遇到一个让人头疼的问题:从各种技术文档或网页上复制代码时,那些被标记为黄色高亮的代码片段总是带着烦人的背景色和格式。这不仅影响代码的可读性,粘贴到编辑器后还需要手动清理,非常浪费时间。于是我开始寻找解决方案,发现利用AI技术可以很好地解决这个问题。 1. 问题背景与痛点分析 在日常开发中,我们经常需要参考各种在线文档、技术博客或Stack Overflow上的代码示例。这些代码通常会被网站用黄色背景高亮显示,方便阅读。但当我们直接复制粘贴时,往往会连带这些格式一起复制过来。这不仅让代码看起来不专业,有时还会导致语法高亮失效甚至引

By Ne0inhk
基于飞算JavaAI的在线教育平台设计与实现

基于飞算JavaAI的在线教育平台设计与实现

一、引言 作为一名计算机专业的大三学生,我深刻感受到在线教育在学习中的重要性——无论是课后补学专业课、备考证书,还是兴趣学习编程教程,线上平台早已成为我们学习的重要载体。但在使用过程中,我发现很多主流在线教育平台存在“功能冗余”“操作复杂”的问题:比如想找一门编程课,却要在一堆广告和无关功能中翻找;提交作业后,老师批改反馈不及时,成绩查询也很麻烦。 恰逢课程设计作业要求完成一个“小型实用系统”,我便萌生了开发一款轻量化、贴合学生与老师真实需求的在线教育平台的想法。但作为编程基础不算顶尖的学生,我常因“不知道如何将想法转化为具体功能”“表结构设计混乱”“重复编写基础代码”而效率低下。直到老师推荐了飞算JavaAI——这款不仅能生成代码,还能引导学生梳理需求、细化设计的工具,让我重新找到了开发信心。接下来,我将以学生视角,记录用飞算JavaAI实现在线教育平台的完整过程。 二、环境准备 参考学长分享的电商系统开发流程,结合学生常用的Windows环境,我用3步就完成了环境搭建,全程没遇到复杂问题: 1. 下载并安装IntelliJ IDEA 作为学生,我选择IDEA社区版(

By Ne0inhk
人工智能:自然语言处理在客户服务领域的应用与实战

人工智能:自然语言处理在客户服务领域的应用与实战

人工智能:自然语言处理在客户服务领域的应用与实战 学习目标 💡 理解自然语言处理(NLP)在客户服务领域的应用场景和重要性 💡 掌握客户服务领域NLP应用的核心技术(如聊天机器人、意图识别、情感分析) 💡 学会使用前沿模型(如BERT、GPT-3)进行客户服务文本分析 💡 理解客户服务领域的特殊挑战(如实时性要求、多语言处理、用户体验) 💡 通过实战项目,开发一个客户服务聊天机器人应用 重点内容 * 客户服务领域NLP应用的主要场景 * 核心技术(聊天机器人、意图识别、情感分析) * 前沿模型(BERT、GPT-3)在客户服务领域的使用 * 客户服务领域的特殊挑战 * 实战项目:客户服务聊天机器人应用开发 一、客户服务领域NLP应用的主要场景 1.1 聊天机器人 1.1.1 聊天机器人的基本概念 聊天机器人是通过自然语言与用户进行交互的程序。在客户服务领域,聊天机器人的主要应用场景包括: * 客户服务:回答客户的问题(如“如何退货”、“商品价格”

By Ne0inhk
人工智能、机器学习和深度学习,其实不是一回事

人工智能、机器学习和深度学习,其实不是一回事

一、人工智能、机器学习与深度学习的真正区别 在当今科技领域,我们经常听到人工智能、机器学习和深度学习这三个词。它们虽然相关,但含义不同。 1.1 人工智能 人工智能是计算机科学的一个分支,旨在研究如何合成与分析能够像人一样行动的计算主体。简单来说,AI 的目标是利用计算机来模拟甚至替代人类大脑的功能。 一个理想的 AI 系统通常具备以下特征:像人一样思考、像人一样行动、理性地思考与行动。 1.2 机器学习 机器学习是实现人工智能的一种途径。它的核心定义是:赋予计算机在没有被显式编程的情况下进行学习的能力。 与传统的基于规则的编程不同,机器学习不依赖程序员手写每一条逻辑指令,而是通过算法让机器从大量数据中寻找规律,从而对新的数据产生预测或判断。 1.3 深度学习 深度学习是机器学习的一种特殊方法,也称为深度神经网络。它受人类大脑结构的启发,通过设计多层的神经元网络结构,来模拟万事万物的特征表示。 1.4 三者之间的层级关系 厘清这三者的关系对于初学者至关重要。人工智能 AI是最宏大的概念,包含了所有让机器变聪明的技术。机器学习 ML是 AI

By Ne0inhk