【MySQL】表结构的增删查改操作(DDL)

【MySQL】表结构的增删查改操作(DDL)文章目录一 创建表二 删除表三 查看表四 修改表 1 修改整张表的名称 2 修改表的字段名称 3 修改表的字段类型 4 在表中添加一个字段 5 在表中删除一个字段一 创建表语法 createtablei

大家好,欢迎来到IT知识分享网。

一. 创建表

语法

create table [if not exists] 表名( field1 datatype, field2 datatype, field3 datatype ) [charset 字符集 collate 校验规则 engine 存储引擎]; 

说明

  • [ ]内的可写可不写
  • field 表示字段名。
  • datatype 表示字段类型。
  • 最后的字符集、校验规则和存储引擎可以不指定,这时就用默认的。
  • 还可以在字段类型最后面加上comment '描述信息',用来描述该字段,这样在用desc查看表结构时可读性会更好。

举例
1、先创建一个数据库,发现在该库的数据目录中只有一个叫做db.opt的库文件:在这里插入图片描述

2、在库里创建一张叫做user_1的表,存储引擎采用MyISAM,发现在库的数据目录下多了三个表相关的文件
在这里插入图片描述

PS:user_1表所使用的存储引擎是MyISAM ,所在库的数路径下多了三个不同的文件,它们的意义如下:

  • user_1.frm:描述表结构。
  • user_1.MYD:描述表数据。
  • user_1.MYI:描述表索引。

3、不同的存储引擎,创建表的文件不一样。接下来创建一个引擎是InnoDB的表user_2:
在这里插入图片描述
继续观察数据库的数据目录,发现以存储引擎InnoDB创建的user_2表产生了两个文件:

  • user_2.frm:描述表结构。
  • user_2.ibd:描述表的数据和索引。

二. 删除表

语法

drop table 表名; 

举例

// 1、查看当前库中所有的表 mysql> show tables; +-------------------+ | Tables_in_ForTest | +-------------------+ | user_1 | | user_2 | +-------------------+ 2 rows in set (0.00 sec) // 2、删除表user_1 mysql> drop table user_1; Query OK, 0 rows affected (0.00 sec) // 3、再次查看所有的表,发现user_1不在了 mysql> show tables; +-------------------+ | Tables_in_ForTest | +-------------------+ | user_2 | +-------------------+ 1 row in set (0.00 sec) 

三. 查看表

1、输入show tables;来查看当前库下所有的表。记得table要加s:

// 1、首先进入ForTest这个数据库 mysql> use ForTest; Database changed // 2、查看当前库中所有的表 mysql> show tables; +-------------------+ | Tables_in_ForTest | +-------------------+ | user_1 | | user_2 | +-------------------+ 2 rows in set (0.00 sec) 

2、输入desc 表名;查看具体某张表的结构:

mysql> desc user_1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(32) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 1 row in set (0.01 sec) 

表结构说明:
在这里插入图片描述

3、输入show create table 表名;可以查看表创建时候的信息:

在这里插入图片描述

PS:如果觉得这种横线的排版方式不方便看的话,还可以用 \G代替最后的分号以更简洁的排版方式输出表的创建信息:
在这里插入图片描述

四. 修改表

1、修改整张表的名称

语法alter table 表的旧名称 rename [to] 新名称;

举例:先创建一张名叫employee的表,然后把表名改成users:

mysql> create table if not exists employee( -> ame varchar(32), -> age smallint -> ); Query OK, 0 rows affected (0.04 sec) mysql> show tables; +-------------------+ | Tables_in_ForTest | +-------------------+ | employee | +-------------------+ 1 row in set (0.00 sec) mysql> alter table employee rename to users; Query OK, 0 rows affected (0.01 sec) mysql> show tables; +-------------------+ | Tables_in_ForTest | +-------------------+ | users | +-------------------+ 

2、修改表中某个字段的名称

语法alter table 表名 change 旧字段名称 新字段名称 类型...;

注意:相当于重写定义字段。

举例

mysql> desc users; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | ame | varchar(32) | YES | | NULL | | | age | smallint(6) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> alter table users change ame name varchar(50); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc users; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | age | smallint(6) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) 

3、修改表中字段的类型

语法alter table 表名 modify 原字段名称 修改后的类型;

说明:仅仅修改某个字段的类型。

举例
修改age字段的类型为int:

mysql> desc users; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | age | smallint(6) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> alter table users modify age int; Query OK, 0 rows affected (0.05 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc users; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) 

4、在表中添加一个字段

语法alter table 表名 add 字段名称 类型...;

举例
在表中新增一个gender字段,用来标识用户的性别:

mysql> desc users; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> alter table users add gender varchar(10); Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc users; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | age | int(11) | YES | | NULL | | | gender | varchar(10) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) 

补充
新插入的字段默认排到表的最后位置,如果想指定排到某个特定字段之后,新增时可以在最后添加:after 目标字段
在这里插入图片描述

5、删除表中的一个字段

语法alter table 表名 drop 需要删除的字段名称;

举例
删除表中的gender字段:

mysql> desc users; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | gender | varchar(10) | YES | | NULL | | | age | int(11) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> alter table users drop gender; Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc users; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(50) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/154925.html

(0)
上一篇 2025-02-22 19:15
下一篇 2025-02-22 19:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信