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

MySQL笔记---对表的操作

1. 创建表

CREATE TABLE [IF NOT EXISTS] 表名 (列名1 数据类型 [约束条件],列名2 数据类型 [约束条件],...[表级约束条件]  -- 如主键、外键等
) [表选项];  -- 如引擎、字符集等

关键要素说明:

  • IF NOT EXISTS:可选,避免表已存在时出错(如果表不存在则创建,存在则忽略)。
  • 列定义
    • 数据类型:指定列存储的数据类型(如 INT 整数、VARCHAR(50) 字符串、DATE 日期等)。
    • 约束条件:限制列的取值规则(如 NOT NULL 非空、UNIQUE 唯一、DEFAULT 默认值等)。
  • 表级约束:对多个列生效的约束(如 PRIMARY KEY 主键、FOREIGN KEY 外键等)。
  • 表选项
    • ENGINE:指定存储引擎(默认 InnoDB,支持事务、外键;MyISAM 不支持事务,性能较好但安全性低)
    • DEFAULT CHARSET:指定表的字符集(推荐 utf8mb4,支持中文和 emoji)。

关于数据类型、约束条件等,我们在之后的文章当中再进行讨论。本篇文章我们只大致了解一下如何对表进行操作。

2. 查看表结构

DESC 表名称;

3. 修改表

ALTER TABLE 表名操作1 [参数],操作2 [参数],...;

可以同时执行多个修改操作(用逗号分隔),但建议复杂修改分步骤执行,避免出错。

3.1 添加列(ADD)

向现有表中新增列。

ALTER TABLE 表名ADD [COLUMN] 列名 数据类型 [约束] [FIRST | AFTER 已有列名];
  • FIRST:新增列放在表的第一列
  • AFTER 已有列名:新增列放在指定列之后(默认放在最后)

3.2 修改列(MODIFY / CHANGE)

修改列的数据类型、约束或位置。

(1)MODIFY:仅修改列的类型或约束(不改变列名)

ALTER TABLE 表名MODIFY [COLUMN] 列名 新数据类型 [新约束] [FIRST | AFTER 已有列名];

(2)CHANGE:可同时修改列名和类型 / 约束

ALTER TABLE 表名CHANGE [COLUMN] 旧列名 新列名 新数据类型 [新约束] [FIRST | AFTER 已有列名];

3.3 删除列(DROP)

删除表中的列(注意:删除列会丢失该列的所有数据)。

ALTER TABLE 表名DROP [COLUMN] 列名 [IF EXISTS];  -- IF EXISTS:列不存在时不报错(MySQL 8.0+ 支持)

3.4 修改约束

这个现在还不好理解,放到之后再说。

3.5 重命名表(RENAME TO)

ALTER TABLE 旧表名称 RENAME TO 新表名称;

" TO "可省略。

3.6 修改表的其他属性

(1)修改表的其他属性

ALTER TABLE 表名称 ENGINE = 新存储引擎;

(2)修改字符集

ALTER TABLE 表名称 DEFAULT CHARSET = 新字符集;

3.7 注意事项

  • 数据安全:修改列类型或删除列可能导致数据丢失(如将 VARCHAR 改为 INT 可能截断数据),操作前务必备份。
  • 锁表影响:修改表结构会对表加锁,大表操作可能阻塞业务,建议在低峰期执行。
  • 约束依赖:删除外键前,需确保没有其他依赖;删除主键前,需先删除依赖它的外键。
  • 版本差异:部分语法(如 DROP COLUMN ... IF EXISTS)仅支持 MySQL 8.0+,低版本需先判断列是否存在。

4. 删除表

在 MySQL 中,删除表使用 DROP TABLE 语句,该操作会彻底删除表的结构及所有数据(无法直接恢复),因此需格外谨慎。

DROP TABLE [IF EXISTS] 表名1 [, 表名2, ...];
  • IF EXISTS:可选,若表不存在则不报错(避免 “表不存在” 的错误提示)。
  • 可同时删除多个表,用逗号分隔表名。
http://www.dtcms.com/a/403292.html

相关文章:

  • 【实战避坑】MySQL修改表字段长度完整指南:从语法、锁表机制到在线DDL详解
  • 乐峰网网站是谁做的海门住房和城乡建设局网站
  • 做公司简介的开源网站做网站推广前途
  • 了解学习Nginx反向代理与缓存功能
  • 【黑马程序员】后端Web基础--Maven基础和基础知识
  • Linux系统Nginx服务(三)
  • 新手向 算法 基数排序-yang
  • 怎么搭建php网站网页设计个人网站设计
  • 小淇云库-Python 虚拟环境选择:venv、conda、poetry 的适用场景对比
  • 芋道源码 - RabbitMQ + WebSocket 实现分布式消息推送
  • Spring Data JPA 语法详解与使用案例
  • 网站开发面试题天津公司建设网站
  • 个人怎么做音乐网站网页设计与制作教程刘瑞新课后答案
  • noi-9月23日作业
  • 购物网站每个模块主要功能怎么免费搭建网站
  • 如何高效使用Xshell和finalshell连接服务器,简单高效
  • Nestjs框架: 策略的权限控制(ACL)与数据权限实战
  • mmap 虚拟地址映射
  • 网站做好第二年要多少钱wordpress添加文件2m
  • Linux编程笔记2-控制数组指针函数动态内存构造类型Makefile
  • 【数据结构】冒泡、选择、插入、希尔排序的实现
  • npm镜像源配置指南
  • 【QT常用技术讲解】QTreeWidget实现树形筛选框(包含源码)
  • 站长工具ip查询外贸平台实训总结
  • 在JavaScript / HTML中,让<audio>元素中的多个<source>标签连续播放
  • 【Web前端|第二篇】JavaScript对象和事件
  • Linux配置网络————设置虚拟机为静态ip的网络配置详细教程
  • EPGF 架构为什么能保持长效和稳定?
  • reader should realize that all properties of real numbers that are to句子分析
  • ubuntu安装失败:Sorry, there was a problem completing the installation.原因分析及解决办法