【重学 MySQL】四十五、数据库的创建、修改与删除

【重学 MySQL】四十五、数据库的创建、修改与删除

  • 一条数据存储的过程
    • 数据输入
    • 数据验证
    • 数据处理
    • 数据存储
    • 数据持久化
    • 反馈与日志
    • 注意事项
  • 标识符命名规则
    • 基本规则
    • 长度限制
    • 保留字与特殊字符
    • 命名建议
    • 示例
  • MySQL 中的数据类型
  • 创建数据库
    • 创建数据库时指定字符集和排序规则
  • 查看数据库
  • 修改数据库
    • 修改数据库的字符集和排序规则
  • 删除数据库
  • 注意事项
  • 总结

在这里插入图片描述
在 MySQL 中,数据库(也称为 schema)是用于存储和组织数据的一种逻辑结构。数据库的创建、修改和删除是数据库管理的基本操作。

一条数据存储的过程

在数据库系统中,一条数据存储的过程通常涉及多个步骤,从数据的输入到其在数据库中的持久化存储。

数据输入

首先,用户或应用程序需要将数据输入到系统中。这可以通过多种方式实现,例如:

  • 用户界面(UI):用户通过图形界面(如网页表单、桌面应用程序窗口等)输入数据。
  • 应用程序接口(API):外部应用程序通过调用API将数据发送到数据库系统。
  • 批量导入:使用文件(如CSV、Excel等)批量导入数据。

数据验证

在数据被存储之前,通常需要进行验证以确保其准确性和完整性。这包括:

  • 数据类型检查:确保数据符合预期的格式和类型(如字符串、数字、日期等)。
  • 约束检查:验证数据是否满足数据库表定义的约束条件(如主键唯一性、外键关联、非空约束等)。
  • 业务逻辑验证:根据应用程序的业务逻辑检查数据的有效性(如年龄必须在0到120岁之间)。

数据处理

如果数据通过了验证,接下来可能需要进行一些处理,例如:

  • 数据转换:将数据转换为适合存储的格式(如日期格式转换、数据编码转换等)。
  • 数据清洗:去除或纠正数据中的错误、重复或不一致。
  • 数据标准化:将数据转换为统一的标准格式。

数据存储

处理后的数据将被存储到数据库中。这通常涉及以下步骤:

  • 数据库连接:建立与数据库的连接(如使用数据库驱动程序或ORM框架)。
  • SQL语句生成:根据要存储的数据生成相应的SQL语句(如INSERT、UPDATE等)。
  • 执行SQL语句:将SQL语句发送到数据库服务器执行。
  • 事务管理:确保数据存储操作的原子性、一致性、隔离性和持久性(ACID特性)。

数据持久化

一旦数据被成功存储到数据库中,它将被持久化,即即使数据库系统崩溃或重启,数据也不会丢失(假设使用了适当的备份和恢复策略)。

反馈与日志

最后,系统通常会向用户或应用程序提供反馈,表明数据存储操作的成功或失败。此外,还会记录相关的日志信息,以便进行审计、调试和故障排除。

注意事项

  • 安全性:在数据存储过程中,必须确保数据的安全性,包括防止未经授权的访问、篡改和泄露。
  • 性能:为了提高数据存储的效率,可以采取一些优化措施,如索引的使用、批量插入等。
  • 一致性:确保数据存储后与应用程序的其他部分保持一致,避免数据不一致导致的错误或冲突。

综上所述,数据存储是一个复杂而关键的过程,涉及多个步骤和考虑因素。通过仔细规划和实施这些步骤,可以确保数据的准确性、完整性和安全性。

标识符命名规则

MySQL中的标识符用于标识数据库、表、列等对象的名称。

基本规则

  1. 字符组成:标识符可以由字母(a-z、A-Z)、数字(0-9)、下划线(_)和美元符号($)组成。
  2. 首字符:标识符的第一个字符必须是字母或下划线,不能是数字。
  3. 大小写敏感性:MySQL对标识符的大小写敏感性取决于具体的存储引擎和操作系统。但在大多数情况下,MySQL在Windows系统上对标识符不区分大小写,而在Linux系统上则区分大小写。为了避免混淆,建议统一使用小写字母

长度限制

  • 数据库名、表名不得超过30个字符
  • 变量名不得超过29个字符

保留字与特殊字符

  1. 保留字:MySQL保留了一些关键字作为内部命令或函数的名称。当使用这些保留字作为标识符时,需要使用反引号(`)将其括起来,以避免冲突。
  2. 特殊字符:除了字母、数字、下划线和美元符号外,其他特殊字符通常不允许出现在标识符中。如果需要使用特殊字符,可以考虑使用反引号将其括起来(但请注意,这并不是一种推荐的做法,因为它可能会降低代码的可读性)。

命名建议

  1. 简洁明了:标识符应该简洁明了,能够清晰地表达出对象的含义。避免使用过长或含糊不清的名称。
  2. 避免保留字:尽量避免使用MySQL的保留字作为标识符,以减少潜在的冲突和混淆。
  3. 一致性:在命名时保持一致性,例如使用相同的命名风格(如驼峰命名法、下划线分隔法等)来命名数据库、表和列等对象。

示例

以下是一些符合MySQL标识符命名规则的示例:

  • 正确的表名:userorder_itemscustomer_details
  • 正确的列名:idnameemailbirth_date
  • 使用反引号括起来的保留字作为标识符:SELECT(注意:这里只是为了演示,实际上不建议这样做)

请注意,虽然MySQL允许在必要时使用反引号来避免与保留字的冲突,但过度使用反引号可能会降低代码的可读性和可维护性。因此,在命名时应尽量避免使用保留字,并遵循MySQL的标识符命名规则。

MySQL 中的数据类型

在MySQL中,数据类型用于指定表中列可以存储数据的种类。MySQL支持多种数据类型,包括数值类型、日期和时间类型以及字符串(文本)。

数据类型描述示例
数值类型
TINYINT非常小的整数127, -128(有符号);0~255, 0~-1(无符号)
SMALLINT小的整数32,767, -32,768(有符号);0~65,535, 0~-1(无符号)
MEDIUMINT中等大小的整数8,388,607, -8,388,608(有符号);0~16,777,215, 0~-1(无符号)
INT(或INTEGER)标准整数2,147,483,647, -2,147,483,648(有符号);0~4,294,967,295, 0~-1(无符号)
BIGINT大的整数9,223,372,036,854,775,807, -9,223,372,036,854,775,808(有符号);0~18,446,744,073,709,551,615, 0~-1(无符号)
FLOAT单精度浮点数3.14159
DOUBLE双精度浮点数3.141592653589793
DECIMAL定点数,用于存储精确的小数123.456
日期和时间类型
DATE日期值‘2023-10-01’
TIME时间值‘12:34:56’
DATETIME日期和时间值‘2023-10-01 12:34:56’
TIMESTAMP时间戳,通常用于记录行的创建或更新时间CURRENT_TIMESTAMP
YEAR年份值2023
字符串(文本)类型
CHAR定长字符串‘hello’
VARCHAR可变长字符串‘hello’
TINYTEXT非常小的文本字符串‘This is a tiny text.’
TEXT小文本字符串‘This is a text.’
MEDIUMTEXT中等大小的文本字符串‘This is a medium text.’
LONGTEXT大的文本字符串‘This is a very long text.’
ENUM枚举类型,允许你指定一个值的集合ENUM(‘small’, ‘medium’, ‘large’)
SET集合类型,允许你指定一个字符串对象的集合SET(‘apple’, ‘banana’, ‘cherry’)
BINARY二进制字符串b’010101’
VARBINARY可变长的二进制字符串b’010101’
TINYBLOB非常小的BLOBBLOB数据
BLOB小BLOBBLOB数据
MEDIUMBLOB中等大小的BLOBBLOB数据
LONGBLOB大的BLOBBLOB数据
JSON用于存储JSON格式的数据‘{“name”: “John”, “age”: 30}’

请注意,上述表格中的示例数据仅用于说明数据类型,实际存储的数据将取决于列的定义和插入的数据值。此外,MySQL还允许在定义数据类型时指定额外的属性,如字符集、排序规则、是否允许为空以及默认值等。

创建数据库

要创建一个新的数据库,可以使用 CREATE DATABASE 语句。基本语法如下:

CREATE DATABASE [IF NOT EXISTS] database_name;

示例

CREATE DATABASE IF NOT EXISTS my_database;

创建数据库时指定字符集和排序规则

你也可以在创建数据库时指定字符集和排序规则。例如:

CREATE DATABASE my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

查看数据库

要查看当前服务器上的所有数据库,可以使用 SHOW DATABASES 语句:

SHOW DATABASES;

修改数据库

MySQL 不提供直接修改数据库名称的语句。但是,你可以通过以下步骤间接地修改数据库名称:

  1. 创建一个新的数据库。
  2. 将旧数据库中的所有表和数据复制到新数据库中。
  3. 删除旧数据库(可选)。

修改数据库的字符集和排序规则

你可以使用 ALTER DATABASE 语句来修改数据库的字符集和排序规则:

ALTER DATABASE database_name
CHARACTER SET new_character_set
COLLATE new_collation;

示例

ALTER DATABASE my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

删除数据库

要删除一个数据库,可以使用 DROP DATABASE 语句。删除数据库将永久删除该数据库中的所有表和数据。基本语法如下:

DROP DATABASE [IF EXISTS] database_name;

示例

DROP DATABASE IF EXISTS my_database;

注意事项

  1. 权限:创建、修改和删除数据库需要相应的权限。通常,这些操作只能由具有管理员权限的用户(如 root 用户)执行。
  2. 数据备份:在删除数据库之前,确保已经备份了重要数据。删除数据库是不可逆的操作,数据将无法恢复。
  3. 数据库名称:数据库名称在 MySQL 服务器上必须是唯一的,并且符合命名规则(例如,不能使用保留字)。

总结

  • 使用 CREATE DATABASE 语句创建数据库。
  • 使用 SHOW DATABASES 语句查看所有数据库。
  • 使用 ALTER DATABASE 语句修改数据库的字符集和排序规则(但无法直接修改数据库名称)。
  • 使用 DROP DATABASE 语句删除数据库。

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

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

相关文章

Ubuntu安装Hadoop3.4

1、创建Hadoop用户 sudo adduser hadoop 将Hadoop加进sudo用户组,赋予更高权限: sudo usermod -G sudo hadoop 3、安装JDK(略) 查看JDK安装路径:which java 和 ls -al 3、配置SSH免密登录 在Hadoop分布式集群环境中,各个机器之间的通信通常需要使用SSH的方式进行连…

探索Python网络世界的利器:Requests-HTML库

文章目录 探索Python网络世界的利器:Requests-HTML库背景:为何选择Requests-HTML?什么是Requests-HTML?如何安装Requests-HTML?5个简单库函数的使用方法3个场景下库的使用示例常见Bug及解决方案总结 探索Python网络世界…

【多线程】多线程(8):单例模式:阻塞队列

【阻塞队列】 阻塞队列是在普通的“先进先出”队列的基础上,做出了扩充,可以组成「生产者消费者模型」 1.线程安全性 标准库是原有的队列Queue和其子类,默认都是“线程不安全的”,而阻塞队列是“线程安全的” 2.具有阻塞特性 …

基于STM32的智能风扇控制系统设计

引言 本项目将基于STM32微控制器设计一个智能风扇控制系统,通过温度传感器实时检测环境温度,并根据预设的温度范围自动调节风扇的转速。该系统展示了STM32的PWM输出、传感器接口以及自动控制应用的实现。 环境准备 1. 硬件设备 STM32F103C8T6 开发板…

Java | Leetcode Java题解之第457题环形数组是否存在循环

题目&#xff1a; 题解&#xff1a; class Solution {public boolean circularArrayLoop(int[] nums) {int n nums.length;for (int i 0; i < n; i) {if (nums[i] 0) {continue;}int slow i, fast next(nums, i);// 判断非零且方向相同while (nums[slow] * nums[fast]…

51单片机的宠物自动投喂系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温湿度传感器DS1302时钟模块蓝牙步进电机按键、蜂鸣器等模块构成。适用于猫猫/狗狗宠物自动喂食器等相似项目。 可实现基本功能: 1、LCD1602实时显示北京时间和温湿度 2、温湿度传感器DHT11采集环境温湿度 3、时…

MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置

MySQL 实验1&#xff1a;Windows 环境下 MySQL5.5 安装与配置 目录 MySQL 实验1&#xff1a;Windows 环境下 MySQL5.5 安装与配置一、MySQL 软件的下载二、安装 MySQL三、配置 MySQL1、配置环境变量2、安装并启动 MySQL 服务3、设置 MySQL 字符集4、为 root 用户设置登录密码 一…

【Docker】配置文件

问题 学习Docker期间会涉及到docker的很多配置文件&#xff0c;可能会涉及到的会有&#xff1a; /usr/lib/systemd/system/docker.service 【docker用于被systemd管理的配置文件】 /etc/systemd/system/docker.service.d【覆盖配置文件的存放处】 /etc/systemd/system/mul…

828华为云征文|部署音乐流媒体服务器 mStream

828华为云征文&#xff5c;部署音乐流媒体服务器 mStream 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 mStream3.1 mStream 介绍3.2 mStream 部署3.3 mStream 使用 四、…

【MySQL】Ubuntu环境下MySQL的安装与卸载

目录 1.MYSQL的安装 2.MYSQL的卸载 1.MYSQL的安装 首先我们要看看我们环境里面有没有已经安装好的MySQL 我们发现是默认是没有的。 我们还可以通过下面这个命令来确认有没有mysql的安装包 首先我们得知道我们当前的系统版本是什么 lsb_release -a 我们在找apt源的时候&a…

20241004给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Android12时永不休眠的步骤

20241004给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Android12时永不休眠的步骤 2024/10/4 19:22 1、 Z:\rk3588s4_3588a12\device\rockchip\common\device.mk ifeq ($(strip $(BOARD_HAVE_BLUETOOTH_RTK)), true) include hardware/realtek/rtkbt/rtkbt.mk endif ifeq ($(str…

【文件增量备份系统】MySQL百万量级数据量分页查询性能优化

&#x1f3af; 导读&#xff1a;本文针对大数据量下的分页查询性能问题进行了深入探讨与优化&#xff0c;最初查询耗时长达12秒&#xff0c;通过避免全表计数及利用缓存保存总数的方式显著提升了浅分页查询速度。面对深分页时依然存在的延迟&#xff0c;采用先查询倒数第N条记录…

【机器学习】探索GRU:深度学习中门控循环单元的魅力

目录 &#x1f354; GRU介绍 &#x1f354; GRU的内部结构图 2.1 GRU结构分析 2.2 GRU工作原理 2.4 Bi-GRU介绍 2.3 使用Pytorch构建GRU模型 2.5 GRU优缺点 &#x1f354; 小结 学习目标 &#x1f340; 了解GRU内部结构及计算公式. &#x1f340; 掌握Pytorch中GRU工具…

【开源免费】基于SpringBoot+Vue.JS洗衣店订单管理系统(JAVA毕业设计)

本文项目编号 T 068 &#xff0c;文末自助获取源码 \color{red}{T068&#xff0c;文末自助获取源码} T068&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 顾…

【Python】Uvicorn:Python 异步 ASGI 服务器详解

Uvicorn 是一个为 Python 设计的 ASGI&#xff08;异步服务器网关接口&#xff09;Web 服务器。它填补了 Python 在异步框架中缺乏一个最小化低层次服务器/应用接口的空白。Uvicorn 支持 HTTP/1.1 和 WebSockets&#xff0c;是构建现代异步Web应用的强大工具。 ⭕️宇宙起点 &a…

界星空科技漆包线行业称重系统

万界星空科技为漆包线行业提供的称重系统是其MES制造执行系统解决方案中的一个重要组成部分。以下是对该系统的详细介绍&#xff1a; 一、系统概述 万界星空科技漆包线行业称重系统&#xff0c;是集成在MES系统中的一个功能模块&#xff0c;专门用于漆包线生产过程中的重量检…

数据结构-LRU缓存(C语言实现)

遇到困难&#xff0c;不必慌张&#xff0c;正是成长的时候&#xff0c;耐心一点&#xff01; 目录 前言一、题目介绍二、实现过程2.1 实现原理2.2 实现思路2.2.1 双向链表2.2.2 散列表 2.3 代码实现2.3.1 结构定义2.3.2 双向链表操作实现2.3.3 实现散列表的操作2.3.4 内存释放代…

【玩转 JS 函数式编程_006】2.2 小试牛刀:用函数式编程(FP)实现事件只触发一次

文章目录 2.2 该问题的函数式解 A functional solution to our problem1. 高阶函数解 A higher-order solution2. 高阶函数解的手动测试 Testing the solution manually3. 高阶函数解的自动测试 Testing the solution automatically4. 更好的解决方案 Producing an even better…

idea创建springboot模块

1.点击file->新建->model server url&#xff1a;如果倒数第二个java选项没有11&#xff0c;就把这里改为阿里云的 name&#xff1a;模块名字 location&#xff1a;文件存放的位置 其他的根据图片自行填写 2. 3.验证 如果没有iml文件(不影响&#xff0c;可以不弄)&#…