前言:
在上期中,我们把 mysql 中库的基本操作进行了相应的讲解。本期,我将给大家讲解的是关于mysql 中表的基本操作。
(一)创建表
要创建一个 MySQL 表,你需要使用 CREATE TABLE
语句,并指定表的名称以及列的名称、数据类型和约束条件。
- 以下是一个示例的 MySQL 表创建语句:
CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;
【说明】
- field 表示列名
- datatype 表示列的类型
- character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
- collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
在上面的语法中,你需要将 表名
替换为你想要创建的表的实际名称。然后,按照逗号分隔的方式指定每个列的名称、数据类型和约束条件。
例如,创建一个名为 user1
的表,包含 id
、name
、 password 和 birthday 这四个列,可以使用以下语句:
【说明】
这条 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
的表,该表包含了 id
、name
、password
和 birthday
四个列,每个列都有其对应的数据类型和注释。字符集被设置为 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 语句,其中包含完整的表结构定义。
【比较】
- 这两个语句都可以用于查看表的结构,但
SHOW CREATE TABLE
提供了包含完整表结构的 SQL 语句,更详细和全面; - 而
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 中表的基本操作的全部内容。感谢大家的观看与支持!!!