目录
一、查看当前数据库中的所有表:
sql
show tables
在 MySQL 中,show tables
语句在全局(即不指定具体数据库)和在某一个具体数据库中执行的效果是不一样的,主要区别如下:
在全局执行:
假设当前用户有足够权限,在 MySQL 命令行直接输入 show tables
,可能会显示类似于以下的结果(这里假设存在多个数据库,每个数据库有若干表):
sql
+-----------------------+
| Tables_in_database1 |
+-----------------------+
| table1 |
| table2 |
+-----------------------+
+-----------------------+
| Tables_in_database2 |
+-----------------------+
| table3 |
| table4 |
+-----------------------+
在具体数据库中执行:
当使用USE database_name(进入具体的数据库里)
命令切换到某个具体的数据库后再执行show tables
,则只会显示该数据库中的表。这是一种更常见的用法,用于查看当前操作的数据库中的表结构等信息。
先使用USE my_database;
切换到名为my_database
的数据库,然后执行 show tables
,结果可能如下:
sql
+-----------------------+
| Tables_in_my_database |
+-----------------------+
| customers |
| orders |
| products |
+-----------------------+
二、创建表:
sql
create table if not exists users
这里我们创建了一个 名字为 users 的表,还没完成。
更具体的创建:
sql
create table if not exists users (
id bigint comment '用户编号',
username varchar (32) comment '用户名',
`password` varchar(32) comment '密码',
birthday date comment '生日'
);
注意:
1.comment:
主要是给开发人员等数据库相关人员看的,在系统运行时通常不会直接显示这个字样或其内容。(相当于注释)。
2.
id , username ,`password`,'birthdat' 是列名。后面的bigint,varchar ,date是相对应的数据类型。
3.反引号(`)
如果数据库名、表名、列名等。当这些标识符与 MySQL 的关键字冲突,或者包含特殊字符、空格时,就需要使用反引号将其括起来,以确保 MySQL 能够正确识别它们。(比如上面的`password`就被反引号括起来了,因为password是mysql的关键字)。
现在我们通过命令展示一下这张表:

field 代表列名,type代表数据类型。
三、查看表:
sql
desc 表名
例子:
上面我们创建的表名为 users 的表,通过 这句命令
sql
desc users
可以得到:

Field:表中的列名
Type:列的数据类型
Null:该列的值是否允许为Null
Key:该列的索引类型
Default:该列的默认值
Extra:扩展信息
四、修改表:
sql
alter table 表名 + 具体操作
users为表名的情况下的演示:
1.向表中添加列:
sql
add + 列名 + 具体位置
sql
--新增到列名为 id 的后面
alter table users add dog varchar(30) comment '狗的名字' after id;
--在表最后新增列名为 cat
alter table users add cat varchar(30) comment '猫的名字';
--在表最前面新增列名为 duck
alter table users add duck varchar(30) comment '鸭的名字' first;
结果:

2.修改表中现有的列:
sql
after + 列名 + 具体位置
sql
--修改dog列的位置到birthday后面
alter table users modify dog varchar(30) comment '狗的名字' after birthday;

3.重命名表中现有的列:
sql
rename column 要修改的列名 to 修改后的列名
sql
--把表中列名为 dog 修改成 birl
alter table users rename column dog to birl;

列名为dog 被修改成了 birl 。
4.删除表中现有的列:
sql
drop 列名
sql
--删除列名为 id 的列
alter table users drop id;

可以看到,看不到列名为 id 的列了,因为被删除了。
5.重命名当前的表:
sql
rename + 新表名
sql
--修改当前表名为 --> users111
alter table users rename users111
五、删除表:
sql
drop table if exists 表名
这样就能删除对应的表了。
总结:
可以看到,在一个数据库中查看表和修改表和删除表都会指定对应的表进行操作。