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

相关推荐
wearegogog1231 小时前
MATLAB椭圆参数检测算法实现
数据库·算法·matlab
福娃筱欢1 小时前
金仓数据库同步延迟告警处理步骤
数据库
2301_781571422 小时前
JavaScript中Object-getOwnPropertySymbols获取方法
jvm·数据库·python
jump_jump3 小时前
Drizzle 凭什么贴着 Go 跑——从设计哲学到热路径源码
数据库·性能优化·orm
jay神3 小时前
基于SpringBoot的宠物生命周期信息管理系统
java·数据库·spring boot·后端·web开发·宠物·管理系统
秋93 小时前
MySQL 8.0.46 与 MySQL 9.7.0在sql语句方面的区别并举例说明
数据库·sql·mysql
一只数据集3 小时前
NVIDIA Nemotron AIQ Agentic Safety Dataset:面向企业级智能体系统的安全与防护评估数据集全面解析
网络·数据库·安全
Amazinqc3 小时前
Mysql数据库数据软隔离的并发死锁情况
数据库·mysql·死锁
DianSan_ERP4 小时前
京东订单接口集成中如何处理消费者敏感信息的安全与合规问题?
前端·数据库·后端·团队开发·运维开发