查看所有表
语法
show tables;(1)作用:查看当前选中数据库里面所有的数据表名称
(2)使用前提:必须先切换到对应的数据库,
use 数据库名
查看指定数据库下的表
-- 查看指定数据库下的表,不用先use show tables from test;
创建表
语法模板
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name ( field datatype [约束] [comment '注解内容'], [, field datatype [约束] [comment '注解内容']] ... ) [engine 存储引擎] [character set 字符集] [collate 排序规则];
- 参数解释
(1)TEMPORARY:创建临时表 ,会话断开自动销毁
(2)field:列名(字段名)
(3)datatype:字段数据类型(int、bigint、varchar、date 等)
(4)comment:字段注释,方便理解字段含义
(5)engine:存储引擎,常用InnoDB(默认)、MyISAM
(6)character set:字符集,推荐utf8mb4(支持 emoji)
(7)collate:排序规则,utf8mb4_0900_ai_ci
示例
示例 1:创建 users 用户表,指定字符集和排序规则
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:创建表,指定存储引擎 MyISAM
create table t_myisam ( id bigint, name varchar(20) comment '用户名' ) engine = MyISAM;
表在磁盘上对应的文件
InnoDB 引擎(MySQL8 默认)
(1)只生成 表名.ibd 文件,保存数据 + 索引
(2)users 表 → users.ibd
MyISAM 引擎
(1)生成 3 个文件:
(a)表名.MYD:数据文件
(b)表名.MYI:索引文件
(c)表名.sdi:表结构信息文件(JSON 格式)
IF NOT EXISTS 校验语句
作用:防止表已存在时报错,如果表已经存在,只会产生警告,不会中断 SQL 执行
写法:
create table if not exists users ( id int, name varchar(20) );(1)如果表已存在:执行成功,只提示警告
Table 'users' already exists(2)查看警告命令:
show warnings;
拓展
查看表结构(验证表创建成功)
desc users;可以看到字段名、类型、注释
删除表
drop table if exists t_myisam;
查看表结构
语法
desc 表名;
示例
desc users;执行后返回这 6 列信息:
修改表
语法
ALTER TABLE tbl_name [alter_option [, alter_option] ...];
- alter_option 可选操作:
(1)ADD [COLUMN]:添加列
(2)MODIFY [COLUMN]:修改已有列(类型、长度、约束)
(3)DROP [COLUMN]:删除列
(4)RENAME COLUMN:重命名字段名
(5)RENAME [TO | AS]:重命名数据表- desc 表名; 查看表结构
示例
添加一列 ADD
-- 在 birthday 字段后面新增 assets 字段 alter table users ADD assets varchar(100) comment '头像地址' after birthday;(1)
after birthday:指定新增字段放在 birthday 后面;first放在第一列(2)
comment:字段注释
修改列长度 MODIFY
alter table users MODIFY assets varchar(255);(1)MODIFY:不改字段名,只修改字段的数据类型、长度、是否为空等属性
重命名某列 RENAME COLUMN
alter table users RENAME COLUMN assets TO avatar;(1)MySQL8.0 支持 RENAME COLUMN,专门修改字段名称,字段类型保留不变
删除字段 DROP
alter table users DROP avatar;(1)危险操作:删除字段会丢失该列所有数据,生产环境谨慎执行
修改表名
方式 1:
ALTER TABLE ... RENAME TO
alter table users RENAME TO employee;方式 2:RENAME TABLE
RENAME TABLE users TO employee;
删除表
语法
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...(1)
TEMPORARY:只删除临时表(2)
IF EXISTS:可选,推荐加上。如果表不存在,语句不会报错,只会警告(3)
tbl_name:要删除的表名;支持一次性删除多张表,逗号分隔
示例
-- 删除 employee 表 DROP TABLE employee; -- 删除 t_myisam 表 DROP TABLE t_myisam; -- 查看所有表,验证删除 SHOW TABLES;
优化写法
DROP TABLE IF EXISTS employee;一次性删除多张表:
DROP TABLE IF EXISTS employee, t_myisam;
注意事项
- 高危操作,
DROP TABLE
删除整张表:表结构 + 里面所有数据全部直接清除,无法回滚(没有备份就找不回来)- 删除成功后,数据库磁盘上对应的数据文件会被删掉
- 支持批量删除多个表,表名逗号隔开
IF EXISTS作用:防止表不存在时报错,写脚本的时候非常有用
