03.MySQL表的操作详解

news2025/6/4 3:23:37

MySQL表的操作详解

  1. MySQL 表的操作概述
  2. 创建表
    2.1 创建表的基本语法
  3. 查看表结构
  4. 修改表
    4.1 新增列
    4.2 修改列属性
    4.3 修改列名
    4.4 修改表名
    4.5 删除列
  5. 删除表

1. MySQL表的操作概述

MySQL表的操作是数据库开发和管理中的核心内容,主要涉及**数据定义语言(DDL)数据操作语言(DML)**两大类操作。

  • DDL(Data Definition Language):用于定义和修改数据库结构,包括创建表、删除表、修改表结构等。
  • DML(Data Manipulation Language):用于操作表中的数据,例如插入记录、更新记录、删除记录等。

本文重点围绕表的DDL操作展开,详细讲解如何通过SQL语句完成表的创建、查看结构、修改和删除等操作,并结合实际案例说明其应用场景和注意事项。


2. 创建表

创建表是数据库设计的第一步,也是后续数据存储和管理的基础。MySQL中通过CREATE TABLE语句完成表的创建,其基本语法如下:

2.1 创建表的基本语法

CREATE TABLE [IF NOT EXISTS] 表名 (
    字段1 数据类型 [约束条件] [COMMENT '注释信息'],
    字段2 数据类型 [约束条件] [COMMENT '注释信息'],
    ...
) 
[CHARSET=字符集名称] 
[COLLATE=校对规则名称] 
[ENGINE=存储引擎名称];
2.1.1 关键参数说明
  1. 字段定义

    • 每个字段需指定名称、数据类型和可选的约束条件(如NOT NULLDEFAULT等)。
    • COMMENT用于为字段添加注释,便于后续维护。
  2. 字符集与校对规则

    • CHARSET指定表的字符集(如utf8mb4),若未指定则继承数据库默认设置。
    • COLLATE指定字符集的校对规则(如utf8mb4_unicode_ci),影响字符串比较和排序行为。
  3. 存储引擎

    • ENGINE指定表使用的存储引擎(如InnoDBMyISAM),默认为InnoDB。可通过SHOW ENGINES;命令查看当前支持的引擎。
2.1.2 实战案例:创建一个用户表

以创建user表为例,要求包含用户ID、姓名、密码和注册时间字段,并指定字符集和存储引擎:

CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户唯一标识',
    name VARCHAR(50) NOT NULL COMMENT '用户名',
    password CHAR(60) NOT NULL COMMENT '用户密码',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间'
) 
CHARSET=utf8mb4 
COLLATE=utf8mb4_unicode_ci 
ENGINE=InnoDB;

执行结果说明

  • user被创建在当前选中的数据库中。
  • id字段为主键,自动递增;created_at字段默认值为当前时间戳。
  • 使用utf8mb4字符集支持中文及特殊符号,InnoDB引擎支持事务和外键。

3. 查看表结构

在完成表的创建后,需验证表结构是否符合预期。MySQL提供了多种方式查看表的元数据信息。

3.1 使用DESC命令查看基础结构

DESC 表名;

输出字段说明

  • Field:字段名称。
  • Type:字段数据类型(如VARCHAR(50))。
  • Null:是否允许为空(YESNO)。
  • Key:索引类型(如PRI表示主键)。
  • Default:默认值(若未指定则为NULL)。
  • Extra:额外属性(如auto_increment)。

3.2 使用SHOW CREATE TABLE查看完整定义

SHOW CREATE TABLE 表名;

该命令输出完整的建表语句,包含字符集、存储引擎和约束条件,便于复制或调试。例如:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `password` char(60) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

4. 修改表

随着业务需求的变化,表结构可能需要调整。MySQL通过ALTER TABLE语句实现表的动态修改,包括新增列、修改列属性、删除列等操作。

4.1 新增列

4.1.1 基本语法
ALTER TABLE 表名 ADD 列名 数据类型 [约束条件] [COMMENT '注释'] [位置];
  • 位置参数
    • AFTER 字段名:将新列添加到指定字段之后。
    • FIRST:将新列添加到表的第一列。
4.1.2 示例:为用户表添加照片路径字段
ALTER TABLE user 
ADD path VARCHAR(255) COMMENT '用户头像路径' AFTER password;

注意事项

  • 新增列默认值为NULL,若需非空需显式指定NOT NULL
  • 已有数据的新增列值将填充为默认值(若有)或NULL

4.2 修改列属性

4.2.1 基本语法
ALTER TABLE 表名 MODIFY 列名 新数据类型 [约束条件] [COMMENT '新注释'];

示例:将password字段长度从CHAR(60)扩展到CHAR(100)

ALTER TABLE user 
MODIFY password CHAR(100) NOT NULL COMMENT '用户加密后的密码';

注意事项

  • 修改列类型可能导致数据丢失(如缩短字段长度),需谨慎操作。
  • 若原列有默认值或约束,修改后需重新指定。

4.3 修改列名

4.3.1 基本语法
ALTER TABLE 表名 CHANGE 原列名 新列名 新数据类型 [约束条件] [COMMENT '新注释'];

示例:将path字段重命名为avatar

ALTER TABLE user 
CHANGE path avatar VARCHAR(255) COMMENT '用户头像路径';

注意事项

  • 修改列名需同时指定新数据类型和约束,即使未变更类型也需重复原定义。

4.4 修改表名

4.4.1 基本语法
ALTER TABLE 原表名 RENAME TO 新表名;

示例:将user表更名为employee

ALTER TABLE user RENAME TO employee;

注意事项

  • 表名修改后,需同步更新相关SQL语句和应用程序代码。

4.5 删除列

4.5.1 基本语法
ALTER TABLE 表名 DROP 列名;

示例:删除employee表中的avatar字段

ALTER TABLE employee DROP avatar;

注意事项

  • 删除列会导致该列数据永久丢失,操作前需备份数据。

5. 删除表

当表不再使用时,可通过DROP TABLE语句彻底删除表及其数据。

5.1 基本语法

DROP [TEMPORARY] TABLE [IF EXISTS] 表名;
  • TEMPORARY:仅删除临时表(会话结束后自动销毁)。
  • IF EXISTS:避免表不存在时报错,提高脚本健壮性。

示例:删除employee

DROP TABLE IF EXISTS employee;

5.2 临时表与永久表的区别

  • 临时表
    • 使用CREATE TEMPORARY TABLE创建,仅在当前会话可见。
    • 会话结束或连接关闭时自动删除。
    • 表名可与永久表重复,此时永久表被隐藏。
  • 永久表
    • 普通表,需显式删除。

操作建议

  • 删除临时表时建议加上TEMPORARY关键字,避免误删同名永久表。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

28 C 语言作用域详解:作用域特性(全局、局部、块级)、应用场景、注意事项

1 作用域简介 作用域定义了代码中标识符(如变量、常量、数组、函数等)的可见性与可访问范围,即标识符在程序的哪些位置能够被引用或访问。在 C 语言中,作用域主要分为三类: 全局作用域局部作用域块级作用域 需注意&am…

MySQL 事务解析

1. 事务简介 事务(Transaction) 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 经典案例&#xff1…

题海拾贝:压缩字符串

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…

振动力学的三类基本问题

振动问题的分类依赖于分类的出发点&#xff0c;本文从系统论的角度来分析振动问题的分类。如图1&#xff0c;一个振动系统&#xff0c;包括三个方面&#xff1a;输入、系统特性&#xff08;或称为系统模型&#xff09;、输出。其中&#xff0c;输入指外界载荷&#xff0c;包括力…

移动端 UI自动化测试学习之Appium框架(包含adb调试工具介绍)

文章目录 前言adb调试工具adb组成常用命令获取程序的包名和界面名文件传输发送文件到手机从手机中拉取文件 获取app启动时间获取手机日志其他命令 Appium 简介工作原理图 环境搭建安装客户端库&#xff08;appium lib&#xff09;安装Appium Server安装JDK&#xff08;自行下载…

CS144 - Lecture 2

CS144 - Lecture 1 TCP 这里就简单讲了一下它的基本性质&#xff0c;没啥好说的 UDP 提供不可靠的传输服务&#xff0c;我们的 DNS 服务和 DHCP 都是用的 UDP 协议。 对于 DNS 我们只是单纯地向 DNS 服务器发送域名&#xff0c;然后返回一个 IP&#xff0c;如果还需要建立…

B站视频下载器 v1.0.4|免登录下载1080P视频

核心亮点 ✅ 无需登录下载1080P高清视频✅ 支持Windows/macOS双平台✅ 纯净无广告完全免费✅ 可单独下载视频/音频/弹幕/字幕/封面 三步极简操作 粘贴B站视频链接选择保存位置点击「开始下载」 特色功能 独立下载选项&#xff08;视频/音频/弹幕/字幕/封面&#xff09;登录…

AIGC学习笔记(8)——AI大模型开发工程师

文章目录 AI大模型开发工程师007 LangChain之Model IO模块1 Model IO核心概念2 Model IO代码实战什么是LCEL&#xff1f;ModelModel的分类LLMsChatModel PromptPrompt templatesExample selectorsOutput parsers AI大模型开发工程师 007 LangChain之Model IO模块 1 Model IO核…

[蓝桥杯]剪格子

剪格子 题目描述 如下图所示&#xff0c;3 x 3 的格子中填写了一些整数。 我们沿着图中的红色线剪开&#xff0c;得到两个部分&#xff0c;每个部分的数字和都是 60。 本题的要求就是请你编程判定&#xff1a;对给定的 mnmn 的格子中的整数&#xff0c;是否可以分割为两个部…

明远智睿SSD2351开发板:语音机器人领域的变革力量

在人工智能快速发展的今天&#xff0c;语音机器人逐渐成为人们生活和工作中的得力助手。明远智睿SSD2351开发板凭借强大性能与丰富功能&#xff0c;为语音机器人的发展注入新动力&#xff0c;成为该领域的变革力量。 SSD2351开发板的四核1.4GHz处理器具备强劲的运算性能&#x…

Co-IP—验证蛋白互作的不二之选

蛋白互作在细胞生命活动中起着至关重要的作用&#xff0c;并在不同的时空层面上参与多种细胞活动&#xff0c;因此研究蛋白互作对于理解分子调控网络至关重要。而在植物中筛选到潜在的互作蛋白后&#xff0c;大多数情况下&#xff0c;获得表达两种蛋白的稳定转化植株费时又费力…

数据可视化(第4、5、6次课)

Matplotlib 折线图 import numpy as np import matplotlib.pyplot as plt import matplotlib # 配置中文格式——保证图中出现中文的时候不会乱码 matplotlib.rcParams[font.sans-serif][SimHei] matplotlib.rcParams[axes.unicode_minus]False # 绘图 x np.linspace(0,2*np…

DAY 18 推断聚类后簇的类型

目录 DAY 18 推断聚类后簇的类型1.推断簇含义的2个思路&#xff1a;先选特征和后选特征2.通过可视化图形借助ai定义簇的含义3.科研逻辑闭环:通过精度判断特征工程价值作业&#xff1a;参考示例代码对心脏病数据集采取类似操作&#xff0c;并且评估特征工程后模型效果有无提升。…

结合源码分析Redis的内存回收和内存淘汰机制,LRU和LFU是如何进行计算的?

Redis 内存回收 1. 过期 key 处理 Redis 之所以性能强&#xff0c;最主要的原因就是基于内存存储。然而单节点的 Redis 其内存大小不宜过大&#xff0c;会影响持久化或主从同步性能。我们可以通过修改配置文件来设置Redis的最大内存&#xff1a; 当内存使用达到上限时&#…

ESG体系

文字来自腾讯元宝 ESG是什么&#xff1f; ESG体系是一套综合评估企业在环境&#xff08;Environmental&#xff09;、社会&#xff08;Social&#xff09;和治理&#xff08;Governance&#xff09; 三个维度表现的非财务绩效标准&#xff0c;旨在衡量企业可持续发展能力和长期…

华为深度学习面试手撕题:手写nn.Conv2d()函数

题目 只允许利用numpy包&#xff0c;实现Pytorch二维卷积函数nn.Conv2d() 解答 此代码考察二维卷积的概念&#xff0c;详见&#xff1a; 6.2. 图像卷积 — 动手学深度学习 2.0.0 documentation 6.3. 填充和步幅 — 动手学深度学习 2.0.0 documentation 6.4. 多输入多输出通…

归一化相关

归一化相关问题 归一化方式Batch NormalizationLayer NormalizationInstance NormalizationGroup NormalizationRMSNorm(Root Mean Square Layer Normalization):RMSNorm 和 LayerNorm区别?归一化方式 Batch Normalization 在每一层的输入进行归一化处理,使其在每个批次内…

Git深入解析功能逻辑与核心业务场景流程

一、Git核心功能逻辑架构 #mermaid-svg-9tj1iCr99u6QenJM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-9tj1iCr99u6QenJM .error-icon{fill:#552222;}#mermaid-svg-9tj1iCr99u6QenJM .error-text{fill:#552222;st…

LINUX528 重定向

2>&1 我的理解&#xff1a; 2>&1&#xff0c;2stderr错误输出&#xff0c;1stdout输出&#xff0c;stderr一般和stdout是分别输出&#xff08;管道符只传递stdout&#xff0c;据元宝&#xff0c;stderr默认输出到终端&#xff1b;如果重定向符不进行2显示重定向&…

研华工控机安装Windows10系统,适用UEFI(GPT)格式安装

主要硬件 主板&#xff1a;AIMB-787 、CPU&#xff1a;i5-6500 U盘启动工具&#xff1a;通过网盘分享的文件&#xff1a;rufus-3.20.zip 链接: https://pan.baidu.com/s/1YlFfd-_EhFHCG4sEHBQ8dQ?pwdQT12 提取码: QT12 Win10 22H2 Pro 纯净版系统&#xff1a;通过网盘分享…