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

相关推荐
小此方38 分钟前
Re:Mysql数据库基础篇(八):详细讲解复合查询、多表查询、自连接、多行、多列子查询与合并查询
数据库·mysql
xszivvvv40 分钟前
Mariadb数据库frm文件异常,如何恢复数据
数据库·mariadb
smile_life_1 小时前
MySQL 设置 防止账户被暴力破解
数据库·mysql
ShineWinsu2 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
测试盐2 小时前
oracle数据库卡顿排查
数据库·oracle
滕州市燕猫虎计算机科技工作室个体工商户2 小时前
MySQL、MVCC、多版本并发控制
数据库·mysql·mvcc·数据库事务
明航咨询-陈老师2 小时前
ITSS运行维护服务能力成熟度认证技术纵深:标准模型、等级路径、2026审核趋势与CS/CMMI对比
服务器·数据库·cmmi
缓慢更新3 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
AI小百科3 小时前
向量数据库:AI 的「记忆仓库」是怎么工作的
数据库·人工智能·oracle
煎饼皮皮侠3 小时前
【设计】设计一个Web版数据库管理平台(之七):多数据库类型易扩展
数据库