【MySQL】表的操作

目录

  • 一、创建表
  • 二、查看表
    • [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。


结尾

如果有什么建议和疑问,或是有什么错误,大家可以在评论区中提出。

希望大家以后也能和我一起进步!!🌹🌹

如果这篇文章对你有用的话,希望大家给一个三连支持一下!!🌹🌹

相关推荐
ladymorgana3 分钟前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
PanZonghui6 分钟前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
GreatSQL社区22 分钟前
用systemd管理GreatSQL服务详解
数据库·mysql·greatsql
掘根22 分钟前
【MySQL进阶】错误日志,二进制日志,mysql系统库
数据库·mysql
weixin_4383354025 分钟前
基础知识:mysql-connector-j依赖
数据库·mysql
小明铭同学41 分钟前
MySQL 八股文【持续更新ing】
数据库·mysql
Mr_Xuhhh1 小时前
信号与槽的总结
java·开发语言·数据库·c++·qt·系统架构
Fireworkitte1 小时前
Redis 源码 tar 包安装 Redis 哨兵模式(Sentinel)
数据库·redis·sentinel
qq_339282231 小时前
postgressql 如何修改模式的所有表的所有者
数据库