MySQL表的操作

一查看所有表

1.1语法

sql 复制代码
show tables;

二创建表

2.1语法

sql 复制代码
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
field datatype [约束] [comment '注解内容']
[, field datatype [约束] [comment '注解内容']] ...
) [engine 存储引擎] [character set 字符集] [collate 排序规则];

• TEMPORARY: 表示创建的是一个临时表

• field:列名

• datatype:数据类型

• comment:对列的描述或说明

• engine:存储引擎,不指定则使用默认存储引擎

• character set:字符集,不指定则使用默认字符集

• collate:排序规则,不指定则使用默认排序规则

详细的创建表语法参考官方网站:

https://dev.mysql.com/doc/refman/8.0/en/create-table.html

MySQL :: MySQL 8.0 Reference Manual :: 15.1.20 CREATE TABLE Statement
15.1.20 CREATE TABLE Statement

2.2示例

2.2.1创建一个用户表,其中包含用户编号、用户名、密码、生日,并指定字符集为utf8mb4,排序规则为utf8mb4_0900_ai_ci

sql 复制代码
mysql> create table users (
id bigint,
name varchar(20) comment '用户名',
password char(32) comment '密码是32位的md5值',
birthday date comment '生日'
) CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;

2.2.2创建一个表并指定存储引擎为MyISAM

sql 复制代码
create table t_myisam (
id bigint,
name varchar(20) comment '用户名'
) engine = MyISAM;

2.3表在磁盘上对应的文件

• 创建一个存储引擎为InnoDB 的表时,会在对应的数据库目录下生成一个用来存储真实数据的物
理文件,命名格式为表名.ibd ,以当前为例会在java01 目录下生成一个users.ibd 的数据
文件
• 创建一个存储引擎为MyISAM 的表时,会在对应的数据库目录下分别生成三个以不同后缀名结尾
的文件,分别是表名.MYD ( MYData )的数据文件, 表名.MYI ( MYIndex ) 的索引文件,以
表名.sdi 的表信息描述文件(JSON格式)
在8.0

2.4创建数据加时使用校验语句if not exists

sql 复制代码
create table users (
id int,
name varchar(20)
)


show warnings;
sql 复制代码
CREATE TABLE IF NOT EXISTS users (
    id INT,
    name CHAR(10)
);

三查看表结构

3.1语法

sql 复制代码
desc 表名;

3.2示例

• Field:表中的列名
• Type:列的数据类型
• Null:该列的值是否允许为Null
• Key:该列的索引类型
• Default:该列的默认值
• Extra:扩展信息

四修改表

在项目的实际开发中,随着版本的迭代和需求的变更,经常会对表结构进行调整,比如向现有表中添加列,删除列,或者修改某列的列名、数据类型或长度,这时就需要对表进行修改操作。

4.1语法

sql 复制代码
ALTER TABLE tbl_name [alter_option [, alter_option] ...];
alter_option: {
table_options
| ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
| MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| RENAME COLUMN old_col_name TO new_col_name
| RENAME [TO | AS] new_tbl_name

• tbl_name:要修改的表名
• ADD:向表中添加列
• MODIFY:修改表中现有的列
• DROP:删除表中现有的列
• RENAME COLUMN:重命名表中现有的列
• RENAME TO \| AS new_tbl_name:重命名当前的表

详细的创建表语法参考官方网站:

https://dev.mysql.com/doc/refman/8.0/en/alter-table.html

MySQL :: MySQL 8.0 Reference Manual :: 15.1.9 ALTER TABLE Statement
15.1.9 ALTER TABLE Statement

4.2示例:

4.2.1向表中添加一列

sql 复制代码
alter table users ADD assets varchar(100) comment '头像地址' after
birthday;

4.2.2修改某列的长度

sql 复制代码
alter table users MODIFY assets varchar(255);

4.2.3重命名某列

sql 复制代码
alter table users RENAME COLUMN assets TO avatar;

4.2.4删除某个字段

sql 复制代码
alter table users DROP avatar;

4.2.5修改表名

sql 复制代码
alter table users RENAME TO employee;

五删除表

5.1语法

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

TEMPORARY:表示临时表
tbl_name:将要删除的表名

5.2示例

sql 复制代码
drop table employee;

5.3 注意事项

• 删除表是一个危险操作,执行删除语句时一定要谨慎
• 删除表成功后,磁盘上对应的数据文件也会被删除
• 一次可以删除多个表,表与表之间用逗号隔开

六练习

• 创建一个store数据库,用来管理商店的商品、顾客和订单数据,这个数据库有以下三个表组成:

• 商品表:表名为goods,表中包含的列如下:

相关推荐
ccddsdsdfsdf2 小时前
DBeaver怎么链接mongoDB
数据库·mongodb
丷丩3 小时前
Postgresql基础实践教程(十一)各种Join
数据库·postgresql·join
星夜夏空993 小时前
FreeRTOS学习(4)——内存映射
数据库·学习·mongodb
TheRouter4 小时前
AI Agent 记忆体系建设实战:短期、长期与工作记忆的工程实现
数据库·人工智能·oracle
Omics Pro4 小时前
首个!外源天然产物综合性代谢图谱
数据库·人工智能·算法·机器学习·r语言
唐青枫4 小时前
MySQL EXISTS 详解:存在性判断、NOT EXISTS 与实战示例
sql·mysql
JAVA面经实录9175 小时前
Hibernate面试题库
数据库·oracle·hibernate
2301_773643625 小时前
华为云存储实验
网络·mysql·华为云
迷枫7125 小时前
DM8 目录结构与常用排查入口梳理
服务器·数据库
Mr.Daozhi6 小时前
RAG 进阶实战:跑通 Demo 后我连续翻了 6 次车,逐一修复才真正可用(含 Gradio Web 版)
前端·数据库·langchain·大模型·gradio·rag·科研工具