当前位置: 首页 > article >正文

【掌握 DDL】:SQL 中的数据库与表管理

掌握 DDL:SQL 中的数据库与表管理

数据定义语言(DDL) 是 SQL 的一个子集,用于定义和管理数据库结构,包括数据库和表。本文详细介绍了用于创建、查看、修改和删除数据库及表的基本 DDL 命令,附带实用示例和最佳实践。


  1. 数据库 DDL
    • 创建数据库
    • 查看数据库
    • 进入数据库
    • 删除数据库
    • 备份数据库
    • 查看数据库连接
    • 深入理解数据库创建与删除
    • 数据库字符集与校验规则
  2. 表 DDL
    • 创建表
    • 查看表详情
    • 修改表
    • 删除表

数据库 DDL

创建数据库

使用 CREATE DATABASE 命令创建数据库:

CREATE DATABASE [IF NOT EXISTS] db_name [CHARACTER SET charset] [COLLATE collation];
  • db_name:数据库名称。
  • [IF NOT EXISTS]:可选,防止数据库已存在时出错。
  • CHARACTER SET:指定字符编码(如 utf8)。
  • COLLATE:定义字符串比较的校验规则(如 utf8_general_ci)。

示例:创建一个名为 db1 的数据库,字符集为 utf8,校验规则为 utf8_general_ci

CREATE DATABASE IF NOT EXISTS db1 CHARACTER SET utf8 COLLATE utf8_general_ci;

数据库创建示例

查看数据库

查看所有数据库
SHOW DATABASES;

查看数据库

查看数据库创建语句
SHOW CREATE DATABASE db_name [\G];
  • \G:MySQL 客户端选项,以垂直格式显示结果,便于阅读复杂输出。

进入数据库

操作表之前,需进入目标数据库:

USE db_name;

删除数据库

DROP DATABASE [IF EXISTS] db_name;
  • [IF EXISTS]:可选,防止删除不存在的数据库时出错。

删除数据库

备份数据库

备份

在终端执行以下命令备份数据库:

mysqldump -P3306 -u root -p密码 -B db_name > backup_file_path
  • -P3306:指定 MySQL 端口。
  • -u root:用户名。
  • -p密码:密码(无空格)。
  • -B:备份整个数据库。
  • >:将备份内容重定向到指定文件。

示例:备份 db1/backup/db1.sql

mysqldump -P3306 -u root -p123456 -B db1 > /backup/db1.sql

注意

  • 不指定文件路径,备份内容仅显示在屏幕上。
  • 可备份特定表:mysqldump -P3306 -u root -p密码 db_name table1 table2 > backup_file_path
  • 可备份多个数据库:mysqldump -P3306 -u root -p密码 -B db_name1 db_name2 > backup_file_path

备份的本质就是保存历史的sql命令:

image-20250315174554194

恢复

在 MySQL 中执行以下命令恢复数据库:

SOURCE backup_file_path;

示例:恢复 /backup/db1.sql

SOURCE /backup/db1.sql;

查看数据库连接

SHOW PROCESSLIST;

显示当前连接到 MySQL 服务器的所有线程(会话)状态。每个客户端连接对应一个线程。如果发现异常用户连接,可能表示数据库被入侵,需立即停止 MySQL 服务(mysqld)。

连接信息

深入理解数据库创建与删除

  1. 创建数据库:在 /var/lib/mysql 目录下创建以 db_name 命名的目录。
    创建目录

  2. 删除数据库:从 /var/lib/mysql 目录删除以 db_name 命名的目录。
    删除目录

警告:不建议直接在 /var/lib/mysql 目录操作数据库目录,原因如下:

  • 数据一致性:绕过存储引擎,可能导致数据不一致。
  • 权限问题:破坏 MySQL 文件权限设置。
  • 元数据问题:MySQL 未收到删除通知,可能引发错误。
  • 备份风险:无法通过 MySQL 工具进行安全备份。
  • 事务问题:未完成的事务无法正确处理。

推荐使用 MySQL 提供的 DDL 命令操作数据库,确保操作安全。

数据库字符集与校验规则

  • 字符集(CHARACTER SET):定义数据存储的编码格式(如 utf8)。
  • 校验规则(COLLATE):定义字符串比较和排序规则(如 utf8_general_ci)。

未指定时,数据库继承 MySQL 配置文件中的默认设置。


表 DLL

创建表

CREATE TABLE table_name (column_name1 datatype [constraints] [COMMENT 'description'],column_name2 datatype [constraints] [COMMENT 'description'],...[PRIMARY KEY (column_name)]
) [CHARACTER SET charset] [COLLATE collation] [ENGINE engine] [COMMENT 'table_description'];
  • table_name:表名。
  • column_name:列名。
  • datatype:列数据类型(如 INT, VARCHAR)。
  • constraints:约束(如 NOT NULL, UNIQUE)。
  • CHARACTER SET / COLLATE:表级字符集和校验规则,未指定时继承数据库设置。
  • ENGINE:存储引擎(如 InnoDB, MyISAM)。

示例:创建 students 表:

CREATE TABLE students (student_id INT AUTO_INCREMENT COMMENT '学生唯一标识符',first_name VARCHAR(50) NOT NULL COMMENT '学生的姓',last_name VARCHAR(50) NOT NULL COMMENT '学生的名',date_of_birth DATE COMMENT '出生日期',enrollment_date DATE COMMENT '入学日期',major VARCHAR(100) COMMENT '专业名称',email VARCHAR(100) UNIQUE COMMENT '电子邮件地址,必须唯一',PRIMARY KEY (student_id)
) COMMENT='存储学生信息的表格';

创建表

查看表详情

DESC table_name;

显示表结构,包括列名、数据类型、约束等。

表结构

查看表创建语句
SHOW CREATE TABLE table_name \G;

表创建语句

修改表

使用 ALTER TABLE 命令修改表结构:

ALTER TABLE table_name[operation1],[operation2],...;
1. 添加列
ALTER TABLE students
ADD COLUMN phone_number VARCHAR(15) COMMENT '学生联系电话';

添加列

2. 修改列

使用 MODIFY COLUMN 修改列定义:

ALTER TABLE students
MODIFY COLUMN email VARCHAR(120) COMMENT '更新后的电子邮件地址';

修改列

3. 删除列
ALTER TABLE students
DROP COLUMN phone_number;

删除列

4. 修改存储引擎
ALTER TABLE students
ENGINE = MyISAM;

修改存储引擎

5. 重命名表
ALTER TABLE students
RENAME TO stu;

重命名表

注意:修改表结构时,建议先备份数据,特别是在生产环境中。

删除表

DROP TABLE [IF EXISTS] table_name [, table_name2, ...] [RESTRICT | CASCADE];
  • [IF EXISTS]:防止删除不存在的表时出错。
  • RESTRICT / CASCADE:控制外键约束行为(视存储引擎支持)。

删除表


结论

DDL 命令是数据库管理的核心工具,涵盖了数据库和表的创建、修改、查看和删除等操作。通过本文提供的语法和示例,您可以轻松掌握这些命令,并在实际项目中安全、高效地管理数据库结构。始终记得在操作前备份数据,并使用 MySQL 提供的命令而非直接操作文件系统,以确保数据一致性和安全性。

相关文章:

【掌握 DDL】:SQL 中的数据库与表管理

掌握 DDL:SQL 中的数据库与表管理 掌握 DDL:SQL 中的数据库与表管理数据库 DDL创建数据库查看数据库查看所有数据库查看数据库创建语句 进入数据库删除数据库备份数据库备份恢复 查看数据库连接深入理解数据库创建与删除数据库字符集与校验规则 表 DLL创…...

【Unity中的数学】—— 四元数

一、四元数的定义😎 四元数是一种高阶复数,是一个四维空间的概念,相对于复数的二维空间。它可以表示为 q s i x j y k z q s ix jy kz qsixjykz,其中 s s s、 x x x、 y y y、 z z z 都是实数,并且满足 i …...

Kubernetes 虚拟机安全关机操作流程

不规范关机的危害 Kubernetes集群(尤其是基于VirtualBox搭的)关机/暂停时,如果不规范操作,会导致: etcd 数据损坏 kubelet 容器状态丢失 PV 挂载紊乱(尤其用了 local PV / hostPath) 集群启…...

PDF生成模块开发经验分享

在日常的项目开发中,PDF文档的生成是一个常见的需求。无论是用于申报单、审批结果通知书还是其他业务相关的文档输出,一个高效且灵活的PDF生成功能都是不可或缺的。本文将基于我使用Java(Spring Boot)和iText库开发PDF生成模块的经…...

vscode docker 调试

目录 启动docker: vscode docker 调试 如果已经安装docker并且启动了。 启动docker: docker exec -it nlf /bin/bash vscode docker 调试 按照图中1 2 3 的顺序,进入,可以加载docker进行调试了。...

HTML01:HTML基本结构

HTML基本结构 <html> <head><meta charset"UTF-8"><title>我的第一个网页</title> </head> <body>我的第一个网页 </body> </html><body、</body等成对的标签&#xff0c;分别叫开发标签和闭合标签单独…...

URP - 屏幕图像(_CameraOpaqueTexture)

首先需要在unity中开启屏幕图像开关才可以使用该纹理 同样只有不透明对象才能被渲染到屏幕图像中 若想要该对象不被渲染到屏幕图像中&#xff0c;可以将其Shader的渲染队列改为 "Queue" "Transparent" 如何在Shader中使用_CameraOpaqueTexture&#xf…...

Inno Setup专业打包指南:从基础到高级应用

Inno Setup专业打包指南&#xff1a;从基础到高级应用 Inno Setup是一款免费开源的Windows安装程序制作工具&#xff0c;以其轻量、易用、功能强大而备受开发者青睐。它通过脚本语言定义安装行为&#xff0c;能够创建标准的Windows安装向导&#xff0c;支持文件安装、注册表操…...

如何在Ubuntu上安装NVIDIA显卡驱动?

作者&#xff1a;算力魔方创始人/英特尔创新大使刘力 一&#xff0c;前言 对于使用NVIDIA显卡的Ubuntu用户来说&#xff0c;正确安装显卡驱动是获得最佳图形性能的关键。与Windows系统不同&#xff0c;Linux系统通常不会自动安装专有显卡驱动。本文将详细介绍在Ubuntu系统上安…...

MySQL 主从配置超详细教程

文章目录 前言一、安装 MySQL二、主服务器&#xff08;Master&#xff09;配置三、从服务器&#xff08;Slave&#xff09;配置四、测试主从复制五、注意事项 前言 MySQL 主从配置是一种实用的数据库架构&#xff0c;主服务器处理写入操作&#xff0c;从服务器负责只读操作&am…...

Linux 磁盘初始化与扩容操作手册

&#x1f4e6; 1. 初始化服务器&#xff0c;新磁盘挂载为 LV ✅ 使用 ext4 格式 # 创建挂载目录 mkdir -p /datatmp# 初始化物理卷 sudo pvcreate /dev/sdb# 创建卷组 sudo vgcreate vg_data /dev/sdb# 创建逻辑卷&#xff08;使用全部空间&#xff09; sudo lvcreate -l 100…...

机器视觉的手机FPC油墨丝印应用

在现代智能手机制造过程中&#xff0c;精密的组件装配和质量控制是确保产品性能和用户体验的关键。其中&#xff0c;柔性印刷电路板&#xff08;FPC&#xff09;的油墨丝印工艺尤为关键&#xff0c;它不仅影响到电路板的美观&#xff0c;更直接关系到电路的导电性能和可靠性。而…...

Android智能体开发框架-架构文档

编写目的 1 提高智能体的开发效率&#xff0c; 2 降低系统开销&#xff0c; 3 支持跨平台扩展&#xff0c; 4 提供统一的开发范式 整体架构 接口层&#xff08;api层&#xff09;&#xff1a;提供API供开发者调用&#xff0c;支持Java/Kotlin和Native&#xff08;C&#x…...

MySQL----数据库的操作

1. 查看数据库 语法&#xff1a;show databases; 示例展示&#xff1a; 2. 创建库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] database_name[CHARACTER SET charset_name][COLLATE collation_name]; 注意&#xff1a;[] 为可选项 {} 为必选项 database_name 为数据…...

两种方法求解最长公共子序列问题并输出所有解

最长公共子序列&#xff08;Longest Common Subsequence, LCS&#xff09;是动态规划领域的经典问题&#xff0c;广泛应用于生物信息学&#xff08;如DNA序列比对&#xff09;、文本差异比对&#xff08;如Git版本控制&#xff09;等领域。本文将通过​​自顶向下递归记忆化​​…...

【Linux网络】网络协议基础

网络基础 计算机网络背景 独立模式:计算机之间相互独立 网络互联:多台计算机连接在一起,完成数据共享 局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起 广域网WAN:将远隔千里的计算机都连在一起 所谓"局域网"和"广域网"只是一个相对的概念.比…...

挑战用豆包教我学Java01天

今天是豆包教我学Java的第一天&#xff0c;废话不多说直接开始。 1.每日题目&#xff1a; 基础语法与数据类型 题目&#xff1a;编写一个 Java 程序&#xff0c;从控制台读取两个整数&#xff0c;然后计算它们的和、差、积、商&#xff0c;并输出结果。题目&#xff1a;编写…...

0903Redux改造项目_用户信息_状态管理-react-仿低代码平台项目

文章目录 1 Redux管理用户信息1.1 定义store和reducer1.2 使用useSeletor 2 自定义Hook统一加载用户信息存储Redux3 根据用户登录状态动态跳转页面结语 1 Redux管理用户信息 1.1 定义store和reducer src/store/userReducer.ts代码如下所示&#xff1a; import { createSlice…...

LeapVAD:通过认知感知和 Dual-Process 思维实现自动驾驶飞跃——论文阅读

《LeapVAD: A Leap in Autonomous Driving via Cognitive Perception and Dual-Process Thinking》2025年1月发表&#xff0c;来自浙江大学、上海AI实验室、慕尼黑工大、同济大学和中科大的论文。 尽管自动驾驶技术取得了显著进步&#xff0c;但由于推理能力有限&#xff0c;数…...

windows 部署 Kafka3.x KRaft 模式 不依赖 ZooKeeper

1.下载 https://archive.apache.org/dist/kafka/3.9.0/kafka_2.12-3.9.0.tgz2.配置使用 KRaft 模式 2.1 修改 Kafka 的配置文件 cd D:\data\bigdata\kafka_2.12-3.9.0\config\kraft 修改 server.properties # 设置 Kafka 数据日志存储目录 log.dirsD:\\data\\bigdata\\kaf…...

Xilinx FPGA | 管脚约束 / 时序约束 / 问题解析

注&#xff1a;本文为 “Xilinx FPGA | 管脚约束 / 时序约束 / 问题解析” 相关文章合辑。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 Xilinx FPGA 管脚 XDC 约束之&#xff1a;物理约束 FPGA技术实战 于 2020-02-04 17:14:53 发布 说明&#x…...

Python-JsonRPC

Python-JsonRPC 使用Python学习JsonRPC数据交互 1-核心知识点 1&#xff09;什么是JsonRPC&#xff0c;这种协议是如何工作的&#xff1f;->使用请求进行验证2&#xff09;JsonRPC可以使用Postman进行验证吗&#xff1f;->可以使用POSTMAN进行调用&#xff08;使用HTTP请…...

Redis从入门到实战——实战篇(下)

四、达人探店 1. 发布探店笔记 探店笔记类似于点评网站的评价&#xff0c;往往是图文结合。对应的表有两个&#xff1a; tb_blog&#xff1a;探店笔记表&#xff0c;包含笔记中的标题、文字、图片等tb_blog_comments&#xff1a;其他用户对探店笔记的评价 步骤①&#xff1…...

面试问题(连载。。。。)

flexbox 和 crid 的区别 1. 布局维度与核心特性 Flexbox&#xff08;弹性盒子&#xff09; 一维布局&#xff1a;专注于行或列的线性排列&#xff0c;适合单方向&#xff08;水平或垂直&#xff09;的布局需求。动态分配空间&#xff1a;通过 flex-grow、flex-shrink 和 flex…...

springboot项目tomcat中加载不了

Spring Boot项目在Tomcat中加载不了的问题可能由多种原因引起&#xff0c;包括打包方式不正确、依赖配置错误、启动类配置不当等。以下是详细的解决方案&#xff1a; 1. 修改项目打包形式 将项目打包形式从jar改为war&#xff0c;以确保项目以正确的格式被Tomcat加载。在pom.…...

venv和pyenv在mac上

是的&#xff0c;理论上你可以用 venv 选择 Python 版本&#xff0c;但有一个关键前提&#xff1a;系统中必须已安装该版本的 Python 解释器。venv 本身并不提供 Python 版本管理功能&#xff0c;它只是基于现有的 Python 环境创建虚拟隔离空间。以下分场景详细说明&#xff1a…...

OpenCv实战笔记(1)在win11搭建opencv4.11.1 + qt5.15.2 + vs2019_x64开发环境

一. 准备工作 Visual Studio 2019&#xff08;安装时勾选 C 桌面开发 和 Windows 10 SDK&#xff09; CMake 3.20&#xff08;官网下载&#xff09; Qt 5.15.2&#xff08;下载 Qt Online Installer&#xff09;安装时勾选 MSVC 2019 64-bit 组件。 opencv 4.11.1 源码下载 git…...

前端获取流式数据并输出

在一些实时对话、日志推送等场景下&#xff0c;如果使用传统一次性加载数据的方式&#xff0c;可能会出现等待时间较长的不友好交互&#xff0c;这个时候我们需要使用流式布局分段获取数据&#xff0c;渐进式加载&#xff0c;减少等待焦虑。 原生js上&#xff0c;我们使用fetch…...

全局网络:重构数字时代的连接范式

从局部到全局 —— 网络架构的范式革命 在全球化与数字化深度融合的今天&#xff0c;传统网络架构的 “碎片化” 问题日益凸显&#xff1a;跨地域数据流通低效、设备互联孤岛化、安全策略难以统一。 全局网络作为一种突破地域与技术边界的新型网络架构&#xff0c;正成为企业…...

C++ Primer (第五版)-第十四章重载运算与类型转换

文章目录 一、基本概念可以被重载某些运算符不应被重载尽量明智使用运算符重载赋值和复合赋值运算符选择作为成员或者非成员 输入和输出运算符输入运算符尽量减少格式化操作输入输出运算符必须是非成员函数 重载输入运算符>>输入时的错误标示错误 算数和关系运算符相等运…...