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,表中包含的列如下:

相关推荐
2601_962387825 分钟前
多源数据查询指南:MySQL 联邦、Python 聚合与 Presto 引擎全对比
python·mysql·数据集成·presto·联邦查询
weixin1997010801612 分钟前
《Mercari OTA 直连接入:日本二手电商出海的API通道与600次/分钟限流实战》(附Python源码)
开发语言·数据库·python
她说..19 分钟前
MySQL JSON 处理学习文档
学习·mysql·json
瀚高PG实验室40 分钟前
瀚高数据库V9.0.5数据脱敏完整配置步骤
jvm·数据库·postgresql·瀚高数据库
hacker7071 小时前
DBeaver 鸿蒙 PC 适配全记录:在 HarmonyOS 桌面端原生重建一个通用数据库工具
数据库·华为·harmonyos
Cicada1281 小时前
分享我一直在用的一套 AI 记忆系统方案
大数据·数据库·人工智能
todoitbo1 小时前
SQL Server数据库迁移:V9R4C019 如何接住存量 T-SQL 批处理
数据库·sql·国产数据库
云飞云共享云桌面1 小时前
不用批量采购工作站|液压设备制造,SolidWorks 多人共享服务器方案
运维·服务器·网络·数据库·制造
写后端的胖头鱼1 小时前
【高频面试题】SQL 查询慢怎么排查
数据库·sql·mysql·oracle·慢查询·高频面试题
扬大平仔1 小时前
# 小深:用 AgentScope Java 2.0 Harness 做私人助手(上)mysql
java·开发语言·mysql