
目录
- 一、创建表
- 二、查看表
-
- [2.1 查看当前数据库中的所有表](#2.1 查看当前数据库中的所有表)
- [2.2 查看具体一张表的详细信息](#2.2 查看具体一张表的详细信息)
- [2.3 查看一张表创建时的命令](#2.3 查看一张表创建时的命令)
- 三、删除表
- 四、修改表
-
- [4.1 增加字段(增加列)](#4.1 增加字段(增加列))
- [4.2 修改字段(修改表的列属性)](#4.2 修改字段(修改表的列属性))
- [4.3 删除字段(删除表指定列)](#4.3 删除字段(删除表指定列))
- [4.4 修改表名称](#4.4 修改表名称)
- 结尾
一、创建表
cpp
CREATE TABLE [IF NOT EXISTS] table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
说明:
- field 表示列名
- datatype 表示列的类型
- character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
- collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
在下图中,创建了一个数据库usr,并创建了一个表usr1,当表被创建完毕后,我们发现系统中创建了一些文件,这些文件就是因为创建表而产生的。当然使用不同存储引擎创建的表,创建对应的文件是不一样的。
二、查看表
2.1 查看当前数据库中的所有表
cpp
show tables

2.2 查看具体一张表的详细信息
cpp
desc 表名
当我们查看一张表的详细信息时,会获取到表中所有的列名、字段对应的类型、是否允许为空等信息,这些内容会在后面讲述。
2.3 查看一张表创建时的命令
cpp
show create table usr1 \G
这里的\G可以替换为;
,但是\G输出的信息更加适合我们阅读。
我们发现这里的命令和我们创建表的命令并不是一模一样的,这是因为用户在mysql中下达的指令,会在mysqld中进行词法语法分析,然后对用户的指令进行优化。
三、删除表
cpp
drop table 表名
当数据库中将一个表删除后,在系统中对应的文件也会被删除。

四、修改表
4.1 增加字段(增加列)
cpp
ALTER TABLE tablename
ADD (column datatype [DEFAULT expr][,column datatype]...);
说明:
- tablename 表示表的名称
- column 表示列名
- datatype 表示数据类型
在下图中,我首先在表中插入了两行数据,然后再在表中增加了一个字段,也就是增加了一列,默认在原表中存在的数据,在新增的这一列中的数据都是为空的。
4.2 修改字段(修改表的列属性)
cpp
ALTER TABLE tablename
MODIFY (column datatype [DEFAULT expr][,column datatype]...);
说明:
- tablename 表示表的名称
- column 表示列名
- datatype 表示修改后字段的数据类型
在下图中,我就演示将字段name的数据类型由varchar(32)改为了varchar(64),当我们查看这张表创建时的命令时,我们发现它关于name的数据类型发生了改变,并且没有了注释,这是因为使用 ALTER TABLE 更改了字段的属性但没有包括注释,那么生成的创建语句中将不会包含该字段的注释,所以有需要的情况下,每次修改字段属性时都包括 comment 子句。
4.3 删除字段(删除表指定列)
cpp
ALTER TABLE tablename DROP (column);
说明:
- tablename 表示表的名称
- column 表示列名
在下图中,我就演示了将表usr1中的birthday字段删除,再次查看表的详细信息时,字段birthday确实没了,并且连带着这个列的所有的信息也全部被删除了。
4.4 修改表名称
cpp
ALTER TABLE oldtablename RENAME TO newtablename ;
说明:
- oldtablename 表示旧的表的名称
- newtablename 表示新的表的名称
- RENAME TO中的TO可以省略
在下图中,我就演示了将表usr1的表名由usr1修改为了user1,并且在修改命令中省略了TO。

结尾
如果有什么建议和疑问,或是有什么错误,大家可以在评论区中提出。
希望大家以后也能和我一起进步!!🌹🌹
如果这篇文章对你有用的话,希望大家给一个三连支持一下!!🌹🌹
