MySQL数据库精研之旅第四期:解锁库操作高阶技能

专栏:MySQL数据库成长记

个人主页:手握风云

目录

一、查看所有表

[1.1. 语法](#1.1. 语法)

二、创建表

[2.1. 语法](#2.1. 语法)

[2.2. 示例](#2.2. 示例)

[2.3. 表在磁盘上对应的⽂件](#2.3. 表在磁盘上对应的⽂件)

三、查看表结构

[3.1. 语法](#3.1. 语法)

[3.2. 示例](#3.2. 示例)

四、修改表

[4.1. 语法](#4.1. 语法)

[4.2. 示例](#4.2. 示例)

五、删除表

[5.1. 语法](#5.1. 语法)

[5.2. 示例](#5.2. 示例)


一、查看所有表

1.1. 语法

前面我们讲到过,MySQL软件里面管理着很多数据库,数据库里面又管理着很多表,表里面又管理着很多数据行。我们是要针对数据行进行操作,增删改查等。我们要想建立表,就得先选中一个数据库。

sql 复制代码
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| test3_26_1         |
| world              |
+--------------------+
7 rows in set (0.00 sec)

mysql> use test3_26_1;
Database changed

当我们执行了以上命令之后,我们所有的操作都是在数据库test3_26_1里面进行的。如果说我们在写了很多行SQL语句,不知道在哪个数据库里面,我们可以用下面的语句进行查看。

sql 复制代码
mysql> select database();
+------------+
| database() |
+------------+
| test3_26_1 |
+------------+
1 row in set (0.00 sec)

查看数据库中的所有表:

sql 复制代码
mysql> show tables;
Empty set (0.06 sec)

二、创建表

2.1. 语法

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

TEMPORARY表示创建的是⼀个临时表;field表示列名;datatype表示数据类型;存储引擎和字符集不指定都是用默认的。

2.2. 示例

sql 复制代码
-- 创建一个user用户表
# 包含用户编号、用户名、密码、生日
/*
指定字符集为utf8mb4
排序规则为utf8mb4_0090_ai_ci
*/

create table if not exists users(
  id bigint comment '用户编号',
  username varchar(32) comment '用户名',
  `password` varchar(32) comment '密码',
  birthday date comment '生日'
);

-- 创建一个表并指定存储引擎为MyISAM
create table t_myism(
  id bigint,
  `name` varchar(32)
)engine = MyISAM;

注意:mysql中的字符串是用单引号引起的;每个列都以逗号结尾,最后一列没有逗号,最后以分号结尾;我们选中一部分,点击上面的"运行"或者快捷键"ctrl+R"就可以已选用的部分。当右下角出现"OK"时,代表执行成功了;如果库或者表的名字是一个关键字,可以使用反引号··括起来。

同时,我们也可以在终端里面查看:

sql 复制代码
mysql> show tables;
+----------------------+
| Tables_in_test3_26_1 |
+----------------------+
| t_myism              |
| users                |
+----------------------+
2 rows in set (0.00 sec)

2.3. 表在磁盘上对应的⽂件

创建的表在磁盘上也有与之对应的文件。我们在"C:\ProgramData\MySQL\MySQL Server 8.0\Data"路径下,找到我们创建的库"test3_26_1",里面就可以找到创建表时所生成的文件。

三、查看表结构

3.1. 语法

sql 复制代码
desc 表名

3.2. 示例

我们在终端上查看users的列表:

sql 复制代码
mysql> desc users;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | bigint      | YES  |     | NULL    |       |
| username | varchar(32) | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

"Field"是列名,"Type"是数据类型,"NULL"表示当前列是否可以为空,"Key"表示是否创建了索引,"Default"是当前列的默认值,"Extra"表示扩展信息。

如果我们在可视化工具上查看,右键想要查看的表,点击"设计图",表里面的数据行一目了然,尤其是在数据行比较多的情况下。

四、修改表

4.1. 语法

sql 复制代码
ALTER TABLE 表名称 [alter_option [, alter_option] ...];

alter_option: {
     table_options
 | ADD [COLUMN] 列名 数据类型 [FIRST | AFTER col_name]
 | MODIFY [COLUMN] 列名 数据类型 [FIRST | AFTER col_name]
 | DROP [COLUMN] 列名
 | RENAME COLUMN 旧列名 TO 新列名
 | RENAME [TO | AS] 新表名

修改表的操作至少有一个类型,多种类型用逗号隔开。"ADD"表示添加,"FIRST"表示加到表的第一列,"AFTER"表示加到某一列的后面;MODIFY表示修改;"DROP"表示删除;"RENAME"表示重命名。

4.2. 示例

  • 添加一列
sql 复制代码
-- 添加一列到表中
alter table users add asserts varchar(30) comment '头像地址' after password;
sql 复制代码
mysql> desc users;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | bigint      | YES  |     | NULL    |       |
| username | varchar(32) | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
| asserts  | varchar(30) | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
  • 修改
sql 复制代码
-- 调整asserts的位置
alter table users modify asserts varchar(30) comment '头像地址' after birthday;
sql 复制代码
mysql> desc users;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | bigint      | YES  |     | NULL    |       |
| username | varchar(32) | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| asserts  | varchar(30) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
  • 重命名系列
sql 复制代码
-- 重命名asserts
alter table users rename COLUMN asserts TO avatar;
sql 复制代码
mysql> desc users;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | bigint      | YES  |     | NULL    |       |
| username | varchar(32) | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| avatar   | varchar(30) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

五、删除表

5.1. 语法

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

注意:删除表是⼀个危险操作,执行删除语句时⼀定要谨慎;⼀次可以删除多个表,表与表之间用逗号隔开。

5.2. 示例

sql 复制代码
mysql> drop table if exists users;
Query OK, 0 rows affected (0.02 sec)

删除表成功后,磁盘上对应的数据文件也会被删除:

相关推荐
三氧化真1 小时前
使用FastExcel时的单个和批量插入的问题
java·数据库·mybatis
lllsure2 小时前
SpringMVC 拦截器(Interceptor)
java·开发语言·mysql
程序猿阿伟2 小时前
《探秘SQL的BETWEEN:解锁数据范围查询的深度奥秘》
大数据·数据库·sql
ManageEngine卓豪2 小时前
什么是SQL作业
数据库·数据库性能·sql作业
THE MATRIX-HZB3 小时前
DQL语句-distinct去重
数据库·mysql·github
患得患失9493 小时前
【后端】【Django DRF】从零实现RBAC 权限管理系统
数据库·django·sqlite
__淡墨青衫__3 小时前
Django之旅:第五节--Mysql数据库操作(一)
数据库·mysql·django
橙序研工坊4 小时前
MySQL的基础语法1(增删改查、DDL、DML、DQL和DCL)
数据库·sql·mysql·database
晴天Y284 小时前
redis部署架构
数据库·redis·架构
gjc5925 小时前
MySQL源码学习系列(二)--面试高频问题:general log、slowlog记录顺序
数据库·学习·mysql·面试·职场和发展