【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博客

相关推荐
高级程序源几秒前
django房屋租赁系统28636-计算机课程设计、毕业设计
python·mysql·elasticsearch·小程序·django·flask·课程设计
deepseek235 分钟前
SQLite WAL 开了仍报 database is locked?Python 后台任务的事务与幂等修复
数据库·python·sqlite·并发编程·wal
SelectDB11 分钟前
冷热分层速查手册:参数、命令、生效判据与常见失效原因一页看完
大数据·数据库·数据分析
雨落在了我的手上25 分钟前
MySQL数据库基础(9):数据库设计
数据库·mysql
SelectDB27 分钟前
Doris 日志检索与聚合速查:索引参数、MATCH 写法和验收清单
大数据·数据库·数据分析
zcn12627 分钟前
union与in结合用法优化
数据库·sql优化改写
xuxigifxfh38 分钟前
面试记录2026
java·mysql·面试·职场和发展
砚凝霜1 小时前
【软考信息安全】第二十章 数据库安全机制与主流数据库防护
数据库
高级程序源1 小时前
springboot荆州旅游推介平台24175-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·django·课程设计
wdfk_prog1 小时前
LWIP教程 10:从 `tcp_receive()` 到 `ooseq` / SACK——TCP 乱序、重组与选择确认
网络·数据库·tcp/ip