MySQL数据库精研之旅第四期:解锁库操作高阶技能
专栏:MySQL数据库成长记
个人主页:手握风云
目录
一、查看所有表
1.1. 语法
二、创建表
2.1. 语法
2.2. 示例
2.3. 表在磁盘上对应的⽂件
三、查看表结构
3.1. 语法
3.2. 示例
四、修改表
4.1. 语法
4.2. 示例
五、删除表
5.1. 语法
5.2. 示例
一、查看所有表
1.1. 语法
前面我们讲到过,MySQL软件里面管理着很多数据库,数据库里面又管理着很多表,表里面又管理着很多数据行。我们是要针对数据行进行操作,增删改查等。我们要想建立表,就得先选中一个数据库。
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语句,不知道在哪个数据库里面,我们可以用下面的语句进行查看。
mysql> select database();
+------------+
| database() |
+------------+
| test3_26_1 |
+------------+
1 row in set (0.00 sec)
查看数据库中的所有表:
mysql> show tables;
Empty set (0.06 sec)
二、创建表
2.1. 语法
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名称
field datatype [约束] [comment '注解内容']
[, field datatype [约束] [comment '注解内容']] ...
) [engine 存储引擎] [character set 字符集] [collate 排序规则];
TEMPORARY表示创建的是⼀个临时表;field表示列名;datatype表示数据类型;存储引擎和字符集不指定都是用默认的。
2.2. 示例
-- 创建一个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"时,代表执行成功了;如果库或者表的名字是一个关键字,可以使用反引号··括起来。
同时,我们也可以在终端里面查看:
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. 语法
desc 表名
3.2. 示例
我们在终端上查看users的列表:
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. 语法
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. 示例
- 添加一列
-- 添加一列到表中
alter table users add asserts varchar(30) comment '头像地址' after password;
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)
- 修改
-- 调整asserts的位置
alter table users modify asserts varchar(30) comment '头像地址' after birthday;
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)
- 重命名系列
-- 重命名asserts
alter table users rename COLUMN asserts TO avatar;
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. 语法
DROP [TEMPORARY] TABLE [IF EXISTS] 表名 [, 表名] ...
注意:删除表是⼀个危险操作,执行删除语句时⼀定要谨慎;⼀次可以删除多个表,表与表之间用逗号隔开。
5.2. 示例
mysql> drop table if exists users;
Query OK, 0 rows affected (0.02 sec)
删除表成功后,磁盘上对应的数据文件也会被删除: