MySQL表的操作

目录

创建表

创建表的语法如下:

cpp 复制代码
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

说明

  • field 表示列名;
  • datatype 表示列的类型;
  • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准;
  • collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。

创建表案例

我们创建两个使用不同存储引擎的表文件:

不同的存储引擎,创建的表不一样,user1 表存储引擎是 MyISAM,在数据库目录中有三个文件,分别是:

  • user1.frm:表结构;
  • user1.MYD:表数据;
  • user1.MYI:表索引。

user2 表存储引擎是InnoDB,在数据库目录中有两个文件,分别是:

  • user2.frm:表结构;
  • user2.ibd:表空间文件。

查看表结构

MySQL 查看表结构的语句如下:

cpp 复制代码
desc 表名;

示例:

修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

我们先在user1表添加2条记录:

添加列

MySQL 数据库表中添加列,可以使用 ALTER TABLE 语句,下列是添加列的语法和说明:

cpp 复制代码
ALTER TABLE table_name ADD column_name column_definition [FIRST|AFTER existing_column];

说明

  • table_name:要添加列的表名称。
  • column_name:要添加的列名称。
  • column_definition:新增列的属性,包括数据类型、长度、约束等。
  • 可选参数:FIRST -> 将新增列放在第一列,AFTER existing_column -> 将新增列放在指定列之后。

我们在user1表中添加一列用来保存用户电话号码。

若不使用可选参数进行指定,则新增列在表的最后。在修改现有表时,要确保新增列与现有列不会产生冲突或重复。

修改列

MySQL 数据库表中修改列,可以使用 ALTER TABLE 语句,以下是修改列的语法及说明:

cpp 复制代码
ALTER TABLE table_name MODIFY column_name column_definition;

示例1:修改name,将其长度改成60;

示例2:将 user1 中的 id 列名修改为 user_id,并保持其它属性不变:

删除列

MySQL 数据库表中修改列,可以使用 ALTER TABLE 语句,以下是修改列的语法及说明:

cpp 复制代码
ALTER TABLE tablename DROP (column);

示例:比如我们要删除password列;

注意

  • 删除字段一定要小心,删除字段及其对应的列数据都没了。

修改表名

MySQL 数据库表中修改表名,也可以使用 ALTER TABLE 语句,语法如下:

cpp 复制代码
ALTER TABLE old_table_name rename new_table_name;

RENAME TABLE old_table_name TO new_table name;

说明

  • old_table_name:要修改表的旧名称;
  • new_table_name:新的表名称。

示例:需要将user1修改表名为employee。

删除表

MySQL 中,可以使用 DROP TABLE 命令来删除表,具体语法如下:

cpp 复制代码
DROP [TEMPOPARY] TABLE [IF EXISTS] table_name;

说明

  • TEMPOPARY 关键字用于在删除表时指定该表为临时表,它表示只在当前会话中存在的表,当会话结束时,临时表将被自动删除。
  • 在删除表时加上 TEMPOPARY 关键字,表示删除的是当前会话中创建的临时表,而不是持久性的表。
  • table_name 是要删除的表名。IF EXISTS 是可选参数,如果指定了该参数,表示在删除表之前先检查表是否存在,如果不存在不会报错,直接退出。如果存在,则直接进行删除。

示例:删除数据库中的表 user2:

相关推荐
小马爱打代码3 小时前
Redis 集群方案详解:主从复制、哨兵、脑裂、分片集群和哈希槽
数据库·redis·哈希算法
海南java第二人4 小时前
ClickHouse 稀疏索引深度解析:为什么 OLAP 数据库不用 B-Tree?
数据库·clickhouse
Litluecat4 小时前
信创迁移:Oracle切换海量数据库,慢sql扫描
数据库·sql·oracle·信创·海量
消失在人海中5 小时前
Oracle的CURRENT REDO丢失,数据丢失风险分析
数据库·oracle
喵了几个咪5 小时前
选择第三方IAM还是自建权限体系?中小型后台系统权限架构决策指南
数据库·oracle·架构
Elastic 中国社区官方博客6 小时前
Kibana:使用 AI Chat 及 MCP 轻松创建 AI 原生仪表板
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·信息可视化
杨云龙UP7 小时前
Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03
linux·运维·数据库·sql·oracle·报告·巡检
Database_Cool_7 小时前
Hudi 湖仓一体架构:阿里云 AnalyticDB MySQL 原生集成最佳实践
数据库·mysql·阿里云
我是一颗柠檬7 小时前
【Redis】发布订阅与消息队列Day8(2026年)
数据库·redis·后端·缓存