MySQL DDL(数据定义语言)深度解析

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MySQL DDL(数据定义语言)深度解析

MySQL DDL(数据定义语言)深度解析

MySQL的数据定义语言(DDL,Data Definition Language)是一组用于定义和管理数据库结构的SQL命令。通过DDL,我们可以创建、修改和删除数据库对象,比如数据库、表、索引、视图等。本文将深入讲解MySQL中的主要DDL命令,并通过实例代码展示其用法。

一、数据库操作

创建数据库

创建数据库是最基础的DDL操作之一。使用CREATE DATABASE命令可以新建一个数据库:

CREATE DATABASE my_new_db;

删除数据库

当不再需要某个数据库时,可以使用DROP DATABASE命令将其删除:

DROP DATABASE my_new_db;

修改数据库

虽然直接修改数据库名称或特性不是标准的SQL功能,但MySQL提供了一种间接方式——重命名数据库:

RENAME DATABASE old_name TO new_name;

请注意,RENAME DATABASE命令并非所有MySQL版本都支持,且操作需谨慎,因为可能影响依赖于原数据库名的应用程序。

二、表操作

创建表

创建表是DDL中最常用的操作,使用CREATE TABLE命令:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(100),
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

上述代码创建了一个users表,包含ID、用户名、密码、邮箱和创建时间字段,其中ID是自动递增的主键,邮箱允许为空,创建时间默认为当前时间。

修改表结构

随着需求变化,表结构可能需要调整。ALTER TABLE命令为此提供了灵活性:

  • 添加字段:

    ALTER TABLE users ADD COLUMN avatar_url VARCHAR(255);
    
  • 修改字段类型或约束:

    ALTER TABLE users MODIFY COLUMN password CHAR(60) NOT NULL;
    
  • 重命名字段:

    ALTER TABLE users RENAME COLUMN password TO pass_hash;
    
  • 删除字段:

    ALTER TABLE users DROP COLUMN avatar_url;
    

删除表

不再需要的表可以使用DROP TABLE命令删除:

DROP TABLE users;

三、索引操作

索引能显著提升查询效率,但过多或不当的索引也会降低写入性能。

创建索引

为提高查询速度,可以在表的特定列上创建索引:

CREATE INDEX idx_username ON users(username);

删除索引

如果索引不再有效或导致性能问题,可以删除它:

DROP INDEX idx_username ON users;

四、视图操作

视图是基于查询结果集的虚拟表,不存储实际数据,常用于简化复杂查询或保护数据安全。

创建视图

创建一个视图,展示特定用户的订单摘要:

CREATE VIEW user_orders AS
SELECT u.username, o.order_id, o.total_amount
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.username = 'Alice';

修改视图

修改视图通常涉及先删除再重新创建,因为标准SQL没有直接修改视图定义的命令。但在MySQL中,如果只是简单地更改视图的定义,可以直接使用ALTER VIEW

ALTER VIEW user_orders AS
SELECT u.username, o.order_id, o.total_amount, o.order_date
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.username = 'Alice';

删除视图

不再需要的视图应被删除:

DROP VIEW user_orders;
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
4月前
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
237 0
|
3月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
281 10
|
3月前
|
存储 SQL 关系型数据库
MySQL中binlog、redolog与undolog的不同之处解析
每个都扮演回答回溯与错误修正机构角色: BinLog像历史记载员详细记载每件大大小小事件; RedoLog则像紧急救援队伍遇见突發情況追踪最后活动轨迹尽力补救; UndoLog就类似时间机器可倒带历史让一切归位原始样貌同时兼具平行宇宙观察能让多人同时看见各自期望看见历程而互不干扰.
204 9
|
4月前
|
存储 SQL 关系型数据库
MySQL 核心知识与索引优化全解析
本文系统梳理了 MySQL 的核心知识与索引优化策略。在基础概念部分,阐述了 char 与 varchar 在存储方式和性能上的差异,以及事务的 ACID 特性、并发事务问题及对应的隔离级别(MySQL 默认 REPEATABLE READ)。 索引基础部分,详解了 InnoDB 默认的 B+tree 索引结构(多路平衡树、叶子节点存数据、双向链表支持区间查询),区分了聚簇索引(数据与索引共存,唯一)和二级索引(数据与索引分离,多个),解释了回表查询的概念及优化方法,并分析了 B+tree 作为索引结构的优势(树高低、效率稳、支持区间查询)。 索引优化部分,列出了索引创建的六大原则
123 2
|
4月前
|
SQL 存储 缓存
MySQL 如何高效可靠处理持久化数据
本文详细解析了 MySQL 的 SQL 执行流程、crash-safe 机制及性能优化策略。内容涵盖连接器、分析器、优化器、执行器与存储引擎的工作原理,深入探讨 redolog 与 binlog 的两阶段提交机制,并分析日志策略、组提交、脏页刷盘等关键性能优化手段,帮助提升数据库稳定性与执行效率。
124 0
|
4月前
|
存储 SQL 关系型数据库
MySQL 核心知识与性能优化全解析
我整理的这份内容涵盖了 MySQL 诸多核心知识。包括查询语句的书写与执行顺序,多表查询的连接方式及内、外连接的区别。还讲了 CHAR 和 VARCHAR 的差异,索引的类型、底层结构、聚簇与非聚簇之分,以及回表查询、覆盖索引、左前缀原则和索引失效情形,还有建索引的取舍。对比了 MyISAM 和 InnoDB 存储引擎的不同,提及性能优化的多方面方法,以及超大分页处理、慢查询定位与分析等,最后提到了锁和分库分表可参考相关资料。
107 0
|
5月前
|
SQL 关系型数据库 MySQL
MySQL 5.6/5.7 DDL 失败残留文件清理指南
通过本文的指南,您可以更安全地处理 MySQL 5.6 和 5.7 版本中 DDL 失败后的残留文件,有效避免数据丢失和数据库不一致的问题。
|
5月前
|
关系型数据库 MySQL
MySQL字符串拼接方法全解析
本文介绍了四种常用的字符串处理函数及其用法。方法一:CONCAT,用于基础拼接,参数含NULL时返回NULL;方法二:CONCAT_WS,带分隔符拼接,自动忽略NULL值;方法三:GROUP_CONCAT,适用于分组拼接,支持去重、排序和自定义分隔符;方法四:算术运算符拼接,仅适用于数值类型,字符串会尝试转为数值处理。通过示例展示了各函数的特点与应用场景。
|
6月前
|
存储 SQL 缓存
mysql数据引擎有哪些
MySQL 提供了多种存储引擎,每种引擎都有其独特的特点和适用场景。以下是一些常见的 MySQL 存储引擎及其特点:
170 0

推荐镜像

更多