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

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

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

相关文章

Flink系列文章列表

把写的文章做一个汇总,会陆续更新的。 Flink流处理原理与实践:状态管理、窗口操作与容错机制-CSDN博客

【目标检测】【AAAI-2022】Anchor DETR

Anchor DETR: Query Design for Transformer-Based Object Detection 锚点DETR:基于Transformer的目标检测查询设计 论文链接 代码链接 摘要 在本文中,我们提出了一种基于Transformer的目标检测新型查询设计。此前的Transformer检测器中&am…

apptrace 的优势以及对 App 的价值

官网地址:AppTrace - 专业的移动应用推广追踪平台 apptrace 的优势以及对 App 的价值​ App 拉起作为移动端深度链接技术的关键应用,能实现从 H5 网页到 App 的无缝跳转,并精准定位到 App 内指定页面。apptrace 凭借专业的技术与丰富的经验…

16-前端Web实战(Tlias案例-部门管理)

在前面的课程中,我们学习了Vue工程化的基础内容、TS、ElementPlus,那接下来呢,我们要通过一个案例,加强大家对于Vue项目的理解,并掌握Vue项目的开发。 这个案例呢,就是我们之前所做的Tlias智能学习辅助系统…

Python爬虫实战:研究Goutte库相关技术

1. 引言 1.1 研究背景与意义 随着互联网信息的爆炸式增长,如何高效、准确地获取和分析 Web 数据成为重要研究课题。网络爬虫作为自动获取网页内容的关键技术,在搜索引擎优化、舆情分析、市场调研等领域具有广泛应用。然而,现代网站越来越多地采用 JavaScript 动态渲染技术…

Python----目标检测(《基于区域提议网络的实时目标检测方法》和Faster R-CNN)

一、《基于区域提议网络的实时目标检测方法》 1.1、基本信息 标题:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 作者:任少卿(中国科学技术大学、微软研究院)、何凯明(微软研究…

吴恩达讲解MCP基础概念

简介 MCP 是一个开放协议 标准化了您的语言模型应用如何获取工具和数据资源的上下文。基于客户端-服务器架构,它定义了您的语言模型应用中的MCP客户端与MCP服务器之间的通信方式,MCP服务器提供工具 数据资源和提示模板给您的应用,自Anthropic于2024年11月推出MCP以来,MCP生…

Git入门到精通:30分钟掌握核心技巧

目录 一、基础理论片 Git简介 Git安装 Git仓库 Git基本命令用法 仓库别名 二、实操命令篇 远程分支 分支的新建和合并 实操演示 1 本地新建仓库 2 gitee新建仓库 3 建立关系 4 新建分支 5 开发新功能 6 推送新分支 7 合并新分支到主分支 三、可视化工具篇 G…

零基础设计模式——结构型模式 - 代理模式

第三部分:结构型模式 - 代理模式 (Proxy Pattern) 在学习了享元模式如何通过共享对象来优化资源使用后,我们来探讨结构型模式的最后一个模式——代理模式。代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。 核心思想:为其…

【OSS】 前端如何直接上传到OSS 上返回https链接,如果做到OSS图片资源加密访问

使用阿里云OSS(对象存储服务)进行前端直接上传并返回HTTPS链接,同时实现图片资源的加密访问,可以通过以下步骤实现: 前端直接上传到OSS并返回HTTPS链接 设置OSS Bucket: 确保你的OSS Bucket已创建&#xf…

TDenigne 集群可视化管理

可视化管理工具 为方便用户更高效地使用和管理 TDengine,TDengine 3.0 版本推出了一个全新的可视化组件 taosExplorer。这个组件旨在帮助用户在不熟悉 SQL 的情况下,也能轻松管理 TDengine 集群。通过 taosExplorer,用户可以轻松查看 TDengi…

Centos7安装gitlab

环境准备: 操作系统:Centos7 内存:2G以上 磁盘:50G 安全:关闭防火墙,selinux 1、安装GitLab所需依赖 yum -y install policycoreutils openssh-server openssh-clients postfix 2、设置postfix开机自启…

【前端面经】云智慧一面

写在前面:面经只是记录博主遇到的题目。每题的答案在编写文档的时候已经有问过deepseek,它只是一种比较普世的答案,要学得深入还是靠自己 Q:手撕代码,两个有序数组排序 A: function mysort(arr1, arr2) {…

Leetcode 3568. Minimum Moves to Clean the Classroom

Leetcode 3568. Minimum Moves to Clean the Classroom 1. 解题思路2. 代码实现 题目链接:3568. Minimum Moves to Clean the Classroom 1. 解题思路 这一题我的核心思路就是广度优先遍历遍历剪枝。 显然,我们可以给出一个广度优先遍历来给出所有可能…

Spring Boot,注解,@RestController

RestController 是 Spring MVC 中用于创建 RESTful Web 服务的核心注解。 RestController 核心知识点 REST 作用: RestController 是一个方便的组合注解,它结合了 Controller 和 ResponseBody 两个注解。 Controller: 将类标记为一个控制器,使其能够处理…

【计算机网络】Linux下简单的UDP服务器(超详细)

套接字接口 我们把服务器封装成一个类,当我们定义出一个服务器对象后需要马上初始化服务器,而初始化服务器需要做的第一件事就是创建套接字。 🌎socket函数 这是Linux中创建套接字的系统调用,函数原型如下: int socket(int domain, int typ…

Fashion-MNIST LeNet训练

前面使用线性神经网络softmax 和 多层感知机进行图像分类,本次我们使用LeNet 卷积神经网络进行 训练,期望能捕捉到图像中的图像结构信息,提高识别精度: import torch import torchvision from torchvision import transforms f…

EasyRTC嵌入式音视频通信SDK助力1v1实时音视频通话全场景应用

一、方案概述​ 在数字化通信需求日益增长的今天,EasyRTC作为一款全平台互通的实时视频通话方案,实现了设备与平台间的跨端连接。它支持微信小程序、APP、PC客户端等多端协同,开发者通过该方案可快速搭建1v1实时音视频通信系统,适…

查看make命令执行后涉及的预编译宏定义的值

要查看 make 命令执行后涉及的预编译宏定义(如 -D 定义的宏)及其值,可以采用以下方法: 1. 查看 Makefile 中的宏定义 直接检查 Makefile 或相关构建脚本(如 configure、CMakeLists.txt),寻找 -…

【C/C++】面试常考题目

面试中最常考的数据结构与算法题,适合作为刷题的第一阶段重点。 ✅ 分类 & 推荐题目列表(精选 70 道核心题) 一、数组 & 字符串(共 15 题) 题目类型LeetCode编号两数之和哈希表#1盛最多水的容器双指针#11三数…