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

03.MySQL表的操作详解

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关键字,避免误删同名永久表。

相关文章:

  • K3s简介、实战、问题记录
  • Java高效处理大文件:避免OOM的深度实践
  • 【STM32F1标准库】理论——外部中断
  • 用提示词写程序(3),VSCODE+Claude3.5+deepseek开发edge扩展插件V2
  • 纯汇编自制操作系统(四、应用程序等的实现)
  • vue3(入门,setup,ref,计算属性,watch)
  • 财管5-投资项目的评价指标现金流量构成
  • C# 类和继承(构造函数的执行)
  • Spring Ai 从Demo到搭建套壳项目(一)初识与实现与deepseek对话模式
  • YOLOv5-入门篇笔记
  • 鸿蒙OSUniApp声纹识别与语音验证:打造安全可靠的跨平台语音应用#三方框架 #Uniapp
  • Java并发编程实战 Day 3:volatile关键字与内存可见性
  • 3D Gaussian splatting 05: 代码阅读-训练整体流程
  • CSS篇-5
  • 箱式不确定集
  • 广东WordPress开发公司及服务
  • 搭建基于VsCode的ESP32的开发环境教程
  • Spring Boot DevTools 热部署
  • MATLAB实战:传染病模型仿真实现
  • RocketMQ 学习
  • 平台网站建设设计/软件开发流程
  • 网站建设 客户/陕西网络推广公司
  • 邢台专业网站建设/seo需要懂代码吗
  • wordpress主题安装全解析/seo搜索排名优化
  • 网络培训心得体会总结简短/seo是对网站进行什么优化
  • 建设部的官方网站/seo搜索引擎优化ppt