【mysql】—— 表的操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【mysql】—— 表的操作

前言:

在上期中,我们把 mysql 中库的基本操作进行了相应的讲解。本期,我将给大家讲解的是关于mysql 中表的基本操作。



 

(一)创建表

要创建一个 MySQL 表,你需要使用 CREATE TABLE 语句,并指定表的名称以及列的名称、数据类型和约束条件。

  • 以下是一个示例的 MySQL 表创建语句:
CREATE TABLE table_name (
    field1 datatype,
    field2 datatype,
    field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

【说明】

  1. field 表示列名
  2. datatype 表示列的类型
  3. character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
  4. collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

 

在上面的语法中,你需要将 表名 替换为你想要创建的表的实际名称。然后,按照逗号分隔的方式指定每个列的名称、数据类型和约束条件。

例如,创建一个名为 user1 的表,包含 idnamepasswordbirthday 这四个列,可以使用以下语句:

 

【说明】

这条 SQL 语句用于创建一个名为 user1 的表。下面对每一行进行解释说明:

  • create table if not exists user1:创建一个名为 user1 的表,如果该表不存在的话。
  • (id int, name varchar(20) comment '用户名', password char(32) comment '用户密码', birthday date comment '生日'):定义了表的列和数据类型。该表包含四个列,分别是 id(整数类型)、name(最大长度为20的字符串类型,且带有注释 '用户名')、password(长度为32的字符类型,且带有注释 '用户密码')和 birthday(日期类型,带有注释 '生日')。
  • character set utf8 collate utf8_general_ci:设置字符集为 UTF-8,并设置排序规则为 utf8_general_ci。这样可以支持存储和处理中文字符。
  • engine MyIsam:指定使用 MyISAM 存储引擎。MyISAM 是 MySQL 的一种存储引擎,适用于读取频繁、写入较少的情况。

总之,上述 SQL 语句创建了一个名为 user1 的表,该表包含了 idnamepasswordbirthday 四个列,每个列都有其对应的数据类型和注释。字符集被设置为 UTF-8,排序规则为 utf8_general_ci。该表使用 MyISAM 存储引擎进行数据存储。如果表 user1 已经存在,则不会执行任何操作。

  • 我们去相应的目录下查看当前文件中创建的数据,具体如下:

紧接着,我在创建一张新的表,风格和上述的创建有点不同之处,大家可以根据自己的喜爱选择相应的创建方式。具体如下:

【说明】

这条 SQL 语句用于创建一个名为 user2 的表。下面对每一行进行解释说明:

  • 本次创建除了最后的引擎不一样之外其他的都是一模一样的,只是创建的方式不一样;
  • engine=InnoDB:指定使用 InnoDB 存储引擎。InnoDB 是 MySQL 的一种事务型存储引擎,适用于要求事务支持和数据完整性的场景。
  • 当我们在去相应的文件下查看创建的数据时,发现了一个不一样的地方(两种引擎下创建出的数据不一样)。具体如下:

 

说明

  • 不同的存储引擎,创建表的文件不一样。
  • users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
  • users.frm:表结构
  • users.MYD:表数据
  • users.MYI:表索引

(二)查看表结构

在 MySQL 中,可以使用 DESCRIBE SHOW CREATE TABLE 语句来查看表的结构。

1、DESCRIBE 方式

  • 使用 DESCRIBE 语句:
DESCRIBE table_name;

table_name 替换为要查看结构的表名。执行该语句后,将返回包含列名、数据类型、键信息等表结构的结果集。

  • 例如,当前我要查看之前创建的表的相关信息,我们就可以这样做:

2、SHOW CREATE TABLE方式

  • 使用 SHOW CREATE TABLE 语句:

同样,将 table_name 替换为要查看结构的表名。执行该语句后,将返回一个结果集,其中包含创建表的 SQL 语句,其中包含完整的表结构定义。

 

【比较】

  1. 这两个语句都可以用于查看表的结构,但 SHOW CREATE TABLE 提供了包含完整表结构的 SQL 语句,更详细和全面;
  2. DESCRIBE 则提供了简洁的列信息。根据具体需求,选择适合的语句进行使用。

(三)修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型, 表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

 

ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column

datatype]...);

ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column

datatype]...);

ALTER TABLE tablename DROP (column);

在 MySQL 中,可以使用 ALTER TABLE 语句来修改表的结构和属性。以下是一些常见的表操作示例:

  • 修改表名为 Hello

  • Hello 表添加二条记录

  • 在 Hello 表添加一个字段,假设用于保存图片路径

【说明】

这个 ALTER TABLE 语句用于在名为 Hello 的表中添加一个名为 image_path 的列,该列的数据类型是 VARCHAR(100),注释为 '照片路径'。新列将在现有的 birthday 列之后插入。

具体解释如下:

  • ALTER TABLE Hello:表示要修改的表是 Hello 表。
  • ADD image_path varchar(100):表示要向 Hello 表添加一个名为 image_path 的列,数据类型为 VARCHAR(100)。VARCHAR(100) 意味着该列可以存储最大长度为 100 的字符串。
  • COMMENT '照片路径':表示对新列添加注释,注释内容为 '照片路径'。
  • AFTER birthday:表示新列将被插入到现有的 birthday 列之后。这意味着 image_path 列将成为 birthday 列的后一个列。
  • 并且插入新字段后,对原来表中的数据没有影响

通过执行这个 ALTER TABLE 语句,将在 Hello 表中成功添加一个名为 image_path 的列,该列可以存储最大长度为 100 的字符串,并且具有注释 '照片路径'。

 

  • 修改列的数据类型(修改name,将其长度改成60

我们还可以发现修改前后的一个区别:

 

  • 删除列:

注意:删除字段一定要小心,删除字段及其对应的列数据都没了

  • 修改列名:

 

  • 删除表

语法格式DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

 

以上只是一些常见的表操作示例,MySQL 的 ALTER TABLE 语句还支持其他更复杂的操作,如修改列属性、添加索引等。根据具体需求,可以使用不同的 ALTER TABLE 语句来修改表。在执行 ALTER TABLE 语句时,需要注意备份重要数据以防意外发生。


总结

以上便是关于 mysql 中表的基本操作的全部内容。感谢大家的观看与支持!!!

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
SQL 运维 关系型数据库
MySQL 中 GRANT 操作会引起复制中断吗?
GRANT 操作并不是一个原子性操作,不管执行成功与否,都会触发一个隐式重载授权表的行为。 在生产环境中需要规范用户创建及授权的操作,不推荐使用 DML 语句去直接变更 mysql.user 表,可能会引发其他的问题,若使用了 DML 语句进行变更, 需要手工执行 flush privileges。
68 4
|
4月前
|
JavaScript 关系型数据库 MySQL
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
64 0
|
4月前
|
存储 关系型数据库 文件存储
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
47 2
|
4月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之运行mysql to doris pipeline时报错,该如何排查
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之整库同步mysql到starRock提交任务异常,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
SQL Java 数据库
MySQL设计规约问题之为什么应尽量避免使用子查询,而可以考虑将其优化为join操作
MySQL设计规约问题之为什么应尽量避免使用子查询,而可以考虑将其优化为join操作
|
4月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
4月前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表
|
4月前
|
分布式计算 DataWorks 关系型数据库
MaxCompute操作报错合集之配置mysql数据源querysql模式,同步到MC时遇到报错,该怎么处理
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。