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)

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

相关推荐
呦呦鹿鸣Rzh7 分钟前
redis
数据库·redis·缓存
xiaogai_gai14 分钟前
有效的聚水潭数据集成到MySQL案例
android·数据库·mysql
web130933203981 小时前
Mysql的安装配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
数据库·mysql
三天不学习1 小时前
浅析AI大模型为何需要向量数据库?【入门基础】
数据库·人工智能·欧氏距离·向量数据库·余弦相似度
MonkeyKing_sunyuhua1 小时前
将数据库结构化数据整合到RAG问答中的方式
数据库
喝醉酒的小白1 小时前
MySQL内存使用率高问题排查与解决方案:
数据库
鹅鹅鹅呢1 小时前
mysql 登录报错:ERROR 1045(28000):Access denied for user ‘root‘@‘localhost‘ (using password Yes)
android·数据库·mysql
摘星编程1 小时前
Redis+Caffeine构建高性能二级缓存
数据库·redis·缓存
在人间负债^1 小时前
假装自己是个小白 ---- 重新认识MySQL
android·数据库·mysql
檀越剑指大厂1 小时前
【PostgreSQL系列】PostgreSQL性能优化
数据库·postgresql·性能优化