MySQL表的操作

创建表

可以使用 CREATE TABLE 语句创建表。其语法格式为:

CREATE TABLE table_name(
   field1 datatype,
   field2 datatype,
   field3 datatype
)character set 字符集 collate 校验规则 engine 存储引擎;

说明一下:

  • SQL中大写的表示关键字,[ ]中代表的是可选项。
  • field表示列名,datatype表示列的类型。
  • CHARSET用于指定表所采用的编码格式,如果没有指定则以所在数据库的编码格式为准。
  • COLLATE用于指定表所采用的校验规则,如果没有指定则以所在数据库的校验规则为准。
  • ENGINE用于指定表所采用的存储引擎。
  • COMMENT用于对指定列添加注释信息。

数据表属于数据库,在创建数据表之前,应使用语句“USE 数据库”指定操作在哪个数据库中进行,如果没有选择数据库,就会抛出 No database selected 的错误。

举例:创建表的数据库为test1;创建users数据表

create  table users (
 id int,
 name varchar(20) comment '用户名',
 password char(32) comment '密码是32位的md5值',
 birthday date comment '生日'
) character set utf8 engine MyISAM;

说明:

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

1.users.frm:表结构

2.users.MYD:表数据

3.users.MYI:表索引

插入数据

我们为了方便后续操作,先在表中插入一些数据:

mysql> insert into stu (id,name,password,birthday) values(1,'张三','111','2001-02-19');
Query OK, 1 row affected (0.00 sec)

image-20221207173438085

查看表结构

创建完数据表之后,经常需要查看表结构(表信息)。可以使用 DESCRIBE 和 SHOW CREATE TABLE 命令来查看数据表的结构。

DESCRIBE/DESC 语句会以表格的形式来展示表的字段信息,包括字段名、字段数据类型、是否为主键、是否有默认值等,语法格式如下:

DESCRIBE <表名>; 或 DESC <表名>;

DESC 查看表 users 的表结构,SQL 语句和运行结果如下:

image-20221207170325377

  • Field:表示字段名字
  • Type:表示字段类型
  • Null:表示该列是否可以存储 NULL 值。
  • Key:表示该列是否已编制索引。PRI 表示该列是表主键的一部分,UNI 表示该列是 UNIQUE 索引的一部分,MUL 表示在列中某个给定值允许出现多次。
  • Default:表示该列是否有默认值,如果有,值是多少。
  • Extra:表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等。

修改表

在 MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列、更改原有列类型、重新命名列或表等。

其语法格式如下:

ALTER TABLE table_name ADD 新增列名 新增列的属性;

ALTER TABLE table_name MODIFY 列名 修改后的列属性;

ALTER TABLE table_name DROP 列名;

ALTER TABLE table_name RENAME [TO] 新表名;

ALTER TABLE table_name CHANGE 列名 新列名 新列属性;
  • 修改表名

语法规则如下:

ALTER TABLE <旧表名> RENAME [TO] <新表名>

其中,TO 为可选参数,使用与否均不影响结果。

将数据表users改名为stu,语句和运行结果如下所示:

mysql> alter table users stu;

mysql> show tables;
+---------------+
| Tables_in_stu |
+---------------+
| stu           |
+---------------+
1 row in set (0.00 sec)
  • 修改表字符集

将字符集修改为utf8,校对规则修改为utf8_general_ci.语句和运行结果如下:

mysql> alter table stu charset=utf8 default collate=utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
  • 添加表中字段
mysql> alter table stu add path varchar(100) comment '图片路径' after birthday;
mysql> desc stu;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| name     | varchar(20)  | YES  |     | NULL    |       |
| password | char(32)     | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
| path     | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

说明一下: 新增列SQL中的after表示将该列新增到哪一列之后,如果想要将新增的列放到第一列,可以将after及其之后的SQL换成not null first

在这里插入图片描述

  • 修改列类型
mysql> alter table stu modify name varchar(60);
  • 修改列名

将user表中password列的列名改成passwd

mysql> alter table stu change passwd password varchar(20);

注意:在改列名的同时,需要重新指定新列名的类型

  • 删除列
mysql> alter table stu drop password;

删除表

对于不再需要的数据表,我们可以将其从数据库中删除。在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失。

使用 DROP TABLE 语句可以删除一个或多个数据表,语法格式如下:

DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]

对语法格式的说明如下:

  • 表名1, 表名2, 表名3 …表示要被删除的数据表的名称。DROP TABLE 可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可。
  • IF EXISTS 用于在删除数据表之前判断该表是否存在。如果不加 IF EXISTS,当数据表不存在时 MySQL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告(warning)。

举例:

mysql> drop table stu;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
Empty set (0.00 sec)

QL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告(warning)。

举例:

mysql> drop table stu;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
Empty set (0.00 sec)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

…狂奔的蜗牛~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值