【mysql】—— 表的操作

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 【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 中表的基本操作的全部内容。感谢大家的观看与支持!!!

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Oracle 关系型数据库 MySQL
【mysql】—— 表的内连和外连
【mysql】—— 表的内连和外连
|
1月前
|
存储 关系型数据库 MySQL
【mysql】—— 表的增删改查
【mysql】—— 表的增删改查
|
25天前
|
存储 SQL 关系型数据库
【MySQL】4. 表的操作
【MySQL】4. 表的操作
21 0
|
1月前
|
SQL 关系型数据库 MySQL
|
24天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
24天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
24天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
|
25天前
|
关系型数据库 MySQL
【MySQL】12. 表的内连和外连(重点)
【MySQL】12. 表的内连和外连(重点)
13 0
|
1月前
|
存储 关系型数据库 MySQL
【mysql】—— 表的约束
【mysql】—— 表的约束
|
1月前
|
SQL 存储 关系型数据库
【mysql】—— 数据库的操作
【mysql】—— 数据库的操作
【mysql】—— 数据库的操作