MySQL 基础模型:从数据库、表到基础 DDL 操作
学习 MySQL 时最先需要建立的不是某一条 SQL 的记忆而是对 MySQL 基础模型的理解客户端如何连接 MySQL Server数据库和表之间是什么关系SQL 语句分别在操作哪一层对象。本文从数据库的基本概念出发介绍 MySQL 中服务器、数据库、表之间的关系并通过常见 DDL 语句完成数据库和表的基础操作。1. 数据库基础1.1 什么是数据库在程序开发中数据可以直接保存到普通文件中但这种方式通常存在以下问题安全性较弱数据访问、权限控制和备份恢复都需要应用程序自行处理。查询和管理不方便复杂条件检索、排序、聚合等操作实现成本较高。不适合管理海量数据文件读写、并发访问和数据一致性都容易成为问题。程序需要直接控制数据组织方式业务代码和数据存储细节容易耦合。数据库可以理解为按照一定结构组织、存储和管理数据的集合。MySQL 则是一个关系型数据库管理系统负责提供数据存储、查询、更新、权限控制、事务处理等能力。在 MySQL 中数据通常以二维表的形式组织表中的一行表示一条记录。表中的一列表示一个字段。字段有明确的数据类型例如整数、字符串、日期时间等。1.2 MySQL Server、数据库和表的关系安装 MySQL本质上是在机器上安装一个数据库管理系统。应用程序并不直接操作磁盘文件而是通过客户端连接 MySQL Server再由 MySQL Server 管理具体的数据库和表。而server、DB、table三者之间的关系可以表示为可以这样理解一个 MySQL Server 可以管理多个数据库。一个数据库可以包含多张表。一张表用于保存某一类实体或业务对象的数据。表由字段和记录组成字段描述数据结构记录保存具体数据。1.3 MySQL 的简单使用流程第一次使用 MySQL 时通常会经历以下步骤创建数据库。选择当前要使用的数据库。在数据库中创建表。向表中写入或查询数据。示例createdatabasedb_name;usedb_name;createtabletable_name(idint,namevarchar(20));其中create database用于创建数据库use用于切换当前数据库create table用于创建表结构。1.4 MySQL 架构的基本认知从使用者视角看MySQL 可以分为几个主要层次其中SQL 层负责理解和执行 SQL 语句存储引擎层负责真正的数据读写。MySQL 支持多种存储引擎日常开发中最常见的是innodb。现阶段先建立一个基本认识即可我们写的 SQL 会提交给 MySQL Server由 MySQL Server 解析、优化并通过存储引擎访问底层数据。1.5 SQL 分类SQL 是操作关系型数据库的标准语言。按照用途常见 SQL 可以分为以下几类分类全称作用常见语句DDLData Definition Language定义和维护数据库对象结构create、alter、dropDMLData Manipulation Language操作表中的数据insert、update、deleteDQLData Query Language查询表中的数据selectDCLData Control Language控制权限grant、revokeTCLTransaction Control Language控制事务commit、rollback本文重点介绍 DDL也就是数据库和表结构的创建、修改与删除。2. 数据库的操作2.1 创建数据库创建数据库的基本语法如下createdatabase[ifnotexists]db_name[create_option]...;create_option:[default]charactersetcharset_name|[default]collatecollation_name常用写法createdatabaseifnotexistsschooldefaultcharactersetutf8mb4defaultcollateutf8mb4_0900_ai_ci;说明if not exists表示当数据库不存在时才创建可以避免重复创建时报错。character set用于指定数据库默认字符集。collate用于指定数据库默认排序规则。2.2 字符集和排序规则字符集和排序规则是创建数据库时经常被忽略但实际开发中很重要的配置。character set决定字符如何编码和存储。例如utf8mb4可以完整支持 Unicode 字符包括中文、Emoji 和一些特殊符号。collate决定字符串如何比较和排序。例如在进行order by、唯一索引比较、字符串等值判断时排序规则会影响比较结果。日常开发建议优先使用utf8mb4不要使用 MySQL 中旧语义的utf8。同一个业务系统尽量保持数据库、表、字段的字符集和排序规则一致。如果没有特殊需求可以使用 MySQL 8.0 默认的utf8mb4_0900_ai_ci。如果需要兼容旧版本 MySQL常见选择是utf8mb4_general_ci或utf8mb4_unicode_ci。其中ci表示 case-insensitive即大小写不敏感。不同排序规则在大小写、重音字符、语言比较规则等方面可能存在差异。2.3 查看数据库查看当前 MySQL Server 中的数据库showdatabases;查看某个数据库的创建语句showcreatedatabaseschool;show create database可以看到数据库当前使用的字符集和排序规则排查环境差异时非常有用。2.4 修改数据库修改数据库的基本语法如下alterdatabasedb_name[alter_option]...;alter_option:[default]charactersetcharset_name|[default]collatecollation_name示例alterdatabaseschooldefaultcharactersetutf8mb4defaultcollateutf8mb4_0900_ai_ci;需要注意的是修改数据库默认字符集和排序规则主要影响后续新建的表和字段。已经存在的表或字段不会自动全部转换需要单独处理。2.5 删除数据库删除数据库的语法如下dropdatabase[ifexists]db_name;示例dropdatabaseifexistsschool;drop database会删除整个数据库包括数据库中的所有表和数据。这个操作不可轻易执行尤其是在生产环境中执行前必须确认数据库名称、备份状态和影响范围。3. 表的操作3.1 创建表创建表的基本语法如下createtabletable_name(column_name data_type[column_option],column_name data_type[column_option],...)[table_option];常见表选项包括字符集、排序规则和存储引擎createtablestudent(idint,namevarchar(20),gendervarchar(10),ageint)charactersetutf8mb4collateutf8mb4_0900_ai_ciengineinnodb;说明student是表名。id、name、gender、age是字段名。int、varchar(20)是字段的数据类型。character set和collate用于指定表的默认字符集和排序规则。engine innodb指定表使用innodb存储引擎。实际开发中表结构通常还会包含主键、非空约束、默认值和字段注释。例如createtablestudent(idbigintprimarykeyauto_incrementcomment学生ID,namevarchar(64)notnullcomment学生姓名,gendervarchar(10)defaultnullcomment性别,ageintdefaultnullcomment年龄,created_atdatetimenotnulldefaultcurrent_timestampcomment创建时间)engineinnodbdefaultcharactersetutf8mb4defaultcollateutf8mb4_0900_ai_cicomment学生表;这个示例更接近日常业务表的写法primary key表示主键。auto_increment表示自增。not null表示字段不能为空。default表示默认值。comment用于添加注释方便后续维护。3.2 查看表查看当前数据库中的所有表showtables;查看表结构descstudent;查看表的完整创建语句showcreatetablestudent;3.3 修改表表创建后如果业务需求发生变化可以使用alter table修改表结构。添加字段语法示例altertabletable_nameaddcolumn_name data_type[column_option];例如在student表中添加一个字段用于保存图片路径altertablestudentaddassetsvarchar(100)comment图片路径aftergender;after gender表示将新字段添加到gender字段后面。如果不指定位置MySQL 通常会把字段添加到表的最后。修改字段类型语法示例altertabletable_namemodifycolumn_name data_type[column_option];例如将name字段长度修改为 64altertablestudentmodifynamevarchar(64)notnullcomment学生姓名;使用modify时要注意字段原有的约束和注释可能需要在语句中重新声明否则可能出现定义变化。修改字段名如果需要修改字段名称可以使用changealtertablestudent change assets avatar_pathvarchar(100)comment头像路径;change同时包含旧字段名、新字段名和字段定义。删除字段删除字段的语法如下altertabletable_namedropcolumn_name;例如altertablestudentdropgender;删除字段会同时删除该字段下保存的所有数据。执行前应确认字段是否还被业务代码、查询语句、索引或报表使用。重命名表可以使用rename to修改表名altertablestudentrenametostu;表重命名后所有依赖旧表名的 SQL、程序代码和运维脚本都需要同步调整。3.4 删除表删除表的语法如下droptable[ifexists]table_name;也可以一次删除多张表droptableifexistsstudent,course;drop table会删除表结构以及表中的全部数据。与删除数据库类似这也是高风险操作。生产环境执行前应先确认备份、依赖关系和执行环境。4. 小结MySQL 的基础模型可以概括为客户端通过 SQL 连接并操作 MySQL Server。一个 MySQL Server 可以管理多个数据库。一个数据库可以包含多张表。表由字段和记录组成字段定义结构记录保存数据。DDL 语句用于管理数据库对象结构常见操作包括create、alter和drop。

相关新闻

设计模式-抽象工厂模式

设计模式-抽象工厂模式

抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。使用普通工厂方法每次只能负责生产某单一类型的对象,一旦遇到需要“成套搭配”的产品场景,极其容易…

2026/7/26 8:14:44 阅读更多 →
Mac安装Codex桌面端:从芯片确认到性能优化

Mac安装Codex桌面端:从芯片确认到性能优化

1. Codex 桌面端简介与下载准备 Codex 是 OpenAI 推出的 AI 编程助手,其桌面端应用为开发者提供了更强大的本地化工作支持。对于 Mac 用户而言,安装过程需要特别注意芯片架构差异和系统兼容性。以下是安装前的关键准备工作: 芯片架构确认 …

2026/7/26 12:56:21 阅读更多 →
SASAM模块:轻量化多尺度注意力机制在CV中的应用

SASAM模块:轻量化多尺度注意力机制在CV中的应用

1. 项目概述:SASAM模块的核心价值在计算机视觉领域,注意力机制已经成为提升模型性能的标配组件。但传统注意力模块往往面临两个痛点:计算复杂度高导致推理速度下降,以及单一尺度特征处理难以适应不同大小的目标。SASAM&#xff08…

2026/7/26 12:41:03 阅读更多 →

最新新闻

Sequel Pro终极指南:Mac上最简单好用的MySQL数据库管理工具

Sequel Pro终极指南:Mac上最简单好用的MySQL数据库管理工具

Sequel Pro终极指南:Mac上最简单好用的MySQL数据库管理工具 【免费下载链接】sequelpro MySQL/MariaDB database management for macOS 项目地址: https://gitcode.com/gh_mirrors/se/sequelpro Sequel Pro是一款专为macOS设计的MySQL和MariaDB数据库管理工具…

2026/7/28 4:16:12 阅读更多 →
从Arduino到STM32:Flymaple嵌入式开发板前期使用全攻略

从Arduino到STM32:Flymaple嵌入式开发板前期使用全攻略

1. 从零上手Flymaple:一个被低估的嵌入式开发板如果你在开源硬件社区混迹过一段时间,可能会对Arduino、STM32这些名字如数家珍,但提到“Flymaple”,很多人的第一反应可能是:“这是个啥?” 我第一次接触它&a…

2026/7/28 4:16:12 阅读更多 →
基于ESP32的拟人化机器人:从传感器到状态机的趣味硬件实践

基于ESP32的拟人化机器人:从传感器到状态机的趣味硬件实践

1. 项目概述:从“有用”到“可爱”的电子灵魂 在充斥着“效率至上”和“功能为王”的硬件开发世界里,我们似乎习惯了用性能指标、功耗数据和解决实际问题的能力来衡量一个项目的价值。但今天,我想和你聊聊一个“叛逆”的想法:用一…

2026/7/28 4:16:12 阅读更多 →
JDK与Maven构建版本兼容性解析与实践

JDK与Maven构建版本兼容性解析与实践

1. 项目概述:JDK版本与Maven构建的兼容性迷思最近在开发者社区看到一个高频问题:本地环境安装了最新的JDK 21,但项目POM文件中指定的Java版本是1.8,这种配置会导致构建冲突吗?作为经历过多个Java版本迭代的老手&#x…

2026/7/28 4:16:12 阅读更多 →
C++新手实战指南:从环境搭建到核心概念与项目调试

C++新手实战指南:从环境搭建到核心概念与项目调试

1. 项目概述:从“笔记”到“实战地图”的蜕变 看到这个标题,很多刚接触C的朋友可能会觉得,这又是一篇整理好的课堂笔记,无非是把变量、循环、函数这些概念再罗列一遍。但我想说的是,如果你抱着看“二手知识”的心态点…

2026/7/28 4:15:12 阅读更多 →
Windows平台QQ微信防撤回工具原理与实现:逆向工程与二进制补丁技术详解

Windows平台QQ微信防撤回工具原理与实现:逆向工程与二进制补丁技术详解

1. 项目概述:消息撤回的本质与用户需求在即时通讯软件中,“消息撤回”功能的设计初衷,是为了让用户在发送错误信息后能够及时纠正,避免尴尬或信息泄露。无论是工作群里的错别字,还是私聊时发错的表情包,这个…

2026/7/28 4:15:12 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻