【MySQL】4. MySQL表的操作

目录

  • [1. 创建表](#1. 创建表)
  • [2. 创建表案例](#2. 创建表案例)
  • [3. 查看表结构](#3. 查看表结构)
  • [4. 修改表](#4. 修改表)
    • [4.1 添加字段(保存图片路径)](#4.1 添加字段(保存图片路径))
    • [4.2 修改字段(调整 name 字段长度为 60)](#4.2 修改字段(调整 name 字段长度为 60))
    • [4.3 删除字段(删除 password 字段)](#4.3 删除字段(删除 password 字段))
    • [4.4 修改表名(users 改为 employee)](#4.4 修改表名(users 改为 employee))
    • [4.5 修改字段名(name 改为 xingming)](#4.5 修改字段名(name 改为 xingming))
  • [5. 删除表](#5. 删除表)

1. 创建表

语法

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

说明

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

2. 创建表案例

  1. 新建数据库 user_db,并使用
sql 复制代码
create database user_db;
use user_db;
  1. 建表示例
sql 复制代码
create table user1(
    id int,
    name varchar(20) comment '用户名',
    password char(32) comment '用户的密码',
    birthday date comment '用户的生日'
)engine MyISAM;

create table user2(
    id int,
    name varchar(20) comment '用户名',
    password char(32) comment '用户的密码',
    birthday date comment '用户的生日'
)engine=InnoDB;

说明

不同的存储引擎,创建表的文件不一样。

user1 表(MyISAM 引擎):数据库目录下生成 3 个文件:

  • user1.MYD:存储表的实际数据;
  • user1.MYI:存储表的索引信息;
  • user1.sdi:序列化字典信息,替代旧版本 .frm 文件存储表结构。

user2 表(InnoDB 引擎,默认配置):数据库目录下仅生成 user2.ibd 文件,存储表的所有数据、索引,表结构信息统一存入 InnoDB 数据字典(无 .frm/.sdi 独立文件);若关闭 innodb_file_per_table,则无独立文件,数据 / 索引存入共享表空间 ibdata1

存储文件示例路径

bash 复制代码
-rw-r----- 1 mysql mysql   3996  2月 23 17:03 user1_702.sdi
-rw-r----- 1 mysql mysql      0  2月 23 17:03 user1.MYD
-rw-r----- 1 mysql mysql   1024  2月 23 17:03 user1.MYI
-rw-r----- 1 mysql mysql 114688  2月 23 17:05 user2.ibd

3. 查看表结构

  1. 查看数据库中的表目录
sql 复制代码
show tables;
  1. 查看某一个表的表结构
sql 复制代码
desc 表名;

# 示例
desc user1;

字段解读

  • Field:字段名字
  • Type:字段类型
  • Null:是否允许为空
  • Key:索引类型
  • Default:默认值
  • Extra:扩充属性
  1. 查看创建表时的详细信息
sql 复制代码
show create table user1;

# 补:把分号换成\G可以将不想需要的符号去掉
show create table user1 \G


4. 修改表

在项目实际开发中,经常需要修改表的结构,比如字段名字、字段大小、字段类型、表的字符集类型、表的存储引擎等;也会有添加字段、删除字段、修改表名、修改字段名等需求,此时需要通过 ALTER TABLE 语句修改表。

核心语法

sql 复制代码
-- 添加字段
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][, column datatype]...);

-- 修改字段(类型/长度/默认值等)
ALTER TABLE tablename MODIFY (column datatype [DEFAULT expr][, column datatype]...);

-- 删除字段
ALTER TABLE tablename DROP (column);

-- 修改表名
ALTER TABLE tablename RENAME TO 新表名;

-- 修改字段名
ALTER TABLE tablename CHANGE 旧字段名 新字段名 字段类型;

操作案例

插入测试数据

sql 复制代码
mysql> insert into user1 values(1, 'a', 'b', '1982-01-04'), (2, 'b', 'c', '1984-01-04');

4.1 添加字段(保存图片路径)

sql 复制代码
mysql> alter table user1 add assets varchar(100) comment '用户头像路径' after birthday;

查看修改后表结构

sql 复制代码
mysql> desc user1;
Field Type Null Key Default Extra
id int(11) YES NULL
name varchar(20) YES NULL
password char(32) YES NULL
birthday date YES NULL
assets varchar(100) YES NULL

查看数据(新增字段默认值为 NULL)

sql 复制代码
mysql> select * from users;
id name password birthday assets
1 a b 1982-01-04 NULL
2 b c 1984-01-04 NULL

4.2 修改字段(调整 name 字段长度为 60)

sql 复制代码
mysql> alter table user1 modify name varchar(60);

覆盖式修改,整个name字段被新的配置覆盖。

查看修改后表结构

4.3 删除字段(删除 password 字段)

sql 复制代码
mysql> alter table users drop password;

注意 :删除字段会永久删除该字段及其对应的所有数据,操作需谨慎。

查看删除后表结构

sql 复制代码
mysql> desc users;
Field Type Null Key Default Extra
id int(11) YES NULL
name varchar(60) YES NULL
birthday date YES NULL
assets varchar(100) YES NULL

4.4 修改表名(users 改为 employee)

sql 复制代码
mysql> alter table user1 rename to users;
# "to"可以省略

验证表名修改

sql 复制代码
mysql> select * from users;
id name birthday assets
1 a 1982-01-04 NULL
2 b 1984-01-04 NULL

4.5 修改字段名(name 改为 xingming)

sql 复制代码
mysql> alter table users change name xingming varchar(60);

修改字段名的同时也要重新设置字段属性

查看修改后表结构

sql 复制代码
mysql> desc users;
Field Type Null Key Default Extra
id int(11) YES NULL
xingming varchar(60) YES NULL
birthday date YES NULL
assets varchar(100) YES NULL

5. 删除表

语法

sql 复制代码
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...;

示例

sql 复制代码
drop table user2;

结论:

  1. 不要轻易修改表和删除表!

...过云雨-CSDN博客

相关推荐
2601_9622186110 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
李高钢11 小时前
Python FastAPI 框架入门:从零搭建你的第一个高性能 API 服务
数据库·python·fastapi
toooooop811 小时前
MySQL source导入实战:踩坑记,phpMyAdmin 502、source导入巨慢问题解决
mysql
yuzhiboyouye12 小时前
那xml对应的sql语法,列举一下
xml·数据库·sql
. . . . .13 小时前
乐观锁 vs 悲观锁
数据库·sql
Leo.yuan13 小时前
2026年多数据库实时同步的四种架构方案及工具推荐
数据库·架构
hasty13 小时前
Origin 校验不是身份认证:MySQL MCP Server 漏洞给 AI 平台的警告
数据库·mysql·安全
梦想平凡14 小时前
百游棋牌源代码开发搭建教程(五):房间创建、座位分配与请求幂等实现
前端·javascript·数据库·源代码管理
凤山老林15 小时前
Spring Boot 整合 Flowable 的企业级落地指南
数据库·spring boot·后端·flowable·工作流
企业数字化笔记15 小时前
AI写的系统出现504怎么办?接口超时和数据库慢查询排查
数据库·后端