【MySQL】表的操作

表的创建

语法:

create table 表名称(
	field1 datatype,
 	field2 datatype,
 	field3 datatype
) charset=字符集 collate=校验集 engine=存储引擎;


说明:
field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
engine 存储引擎,如果没有指定存储引擎,则以所在数据库的存储引擎为准

创建实例:

mysql> create table use1(
    -> id int,
    -> name varchar(20) comment '用户名',
    -> password char (32) comment '用户密码',
    -> birthday date comment '生日'
    -> )charset=utf8 collate=utf8_general_ci engine=MyIsam;


mysql> create table use2(
    -> id int,
    -> name varchar(20) comment '用户名',
    -> password char(32) comment '用户密码',
    -> birthday date comment '生日'
    -> )charset=utf8 collate=utf8_general_ci engine=InnoDB;

这里可以看到使用不同的存储引擎创建出来的文件也是不一样的。
在这里插入图片描述

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

查看表的结构

  1. 查看所有表结构
语法:
show tables;

示例:
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| use1           |
| use2           |
+----------------+
2 rows in set (0.00 sec)

  1. 查看具体的某个表结构信息
语法:
desc 表名称;

示例:
mysql> desc use1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| password | char(32)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
  1. 查看当时创建表时的更详细信息
语法:show create table 表名称;

示例:
mysql> show create table use1;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                             |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| use1  | CREATE TABLE `use1` (
  `id` int DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL COMMENT '用户名',
  `password` char(32) DEFAULT NULL COMMENT '用户密码',
  `birthday` date DEFAULT NULL COMMENT '生日'
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3          |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
  1. 这里同时也有一个选项\G可以将不需要的格式去掉
语法:
show create table 表名称 \G //注意这里不需要加分号了

示例:
mysql> show create table use1 \G
*************************** 1. row ***************************
       Table: use1
Create Table: CREATE TABLE `use1` (
  `id` int DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL COMMENT '用户名',
  `password` char(32) DEFAULT NULL COMMENT '用户密码',
  `birthday` date DEFAULT NULL COMMENT '生日'
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3
1 row in set (0.00 sec)

表的修改

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

语法:

alter table 表的名称 add (column datatype [DEFAULT expr][,column datatype]...);
alter table 表的名称 modify (column datatype [DEFAULT expr][,column datatype]...);
alter table 表的名称 drop (column);

案例:

  1. 在use1中添加一个path字段

先向表中插入数据

insert into use1 values (1, '张三','12345','2003-10-1'),(2, '李四','54321','2004-10-1');
// 这里默认没有加添加的属性就是默认全部属性都要添加,同时也可以同时添加多条数据

mysql> select * from use1;
+------+--------+----------+------------+
| id   | name   | password | birthday   |
+------+--------+----------+------------+
|    1 | 张三   | 12345    | 2003-10-01 |
|    2 | 李四   | 54321    | 2004-10-01 |
+------+--------+----------+------------+

添加path字段:

mysql> select * from use1;
+------+--------+----------+------------+
| id   | name   | password | birthday   |
+------+--------+----------+------------+
|    1 | 张三   | 12345    | 2003-10-01 |
|    2 | 李四   | 54321    | 2004-10-01 |
+------+--------+----------+------------+
2 rows in set (0.00 sec)

mysql> alter table use1 add path varchar(20) comment '信息路径' after birthday; // after birthday意思就是放在birthday的后面
Query OK, 2 rows affected (0.06 sec)
Records: 2  Duplicates: 0  Warnings: 0

并且插入后对数据是没有影响的
mysql> select * from use1;
+------+--------+----------+------------+------+
| id   | name   | password | birthday   | path |
+------+--------+----------+------------+------+
|    1 | 张三   | 12345    | 2003-10-01 | NULL |
|    2 | 李四   | 54321    | 2004-10-01 | NULL |
+------+--------+----------+------------+------+
2 rows in set (0.00 sec)
  1. 修改字段名称
    将name字段属性的长度
mysql> alter table use1 modify name varchar(60);
Query OK, 2 rows affected (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> desc use1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| name     | varchar(60) | YES  |     | NULL    |       |
| password | char(32)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| path     | varchar(20) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
  1. 删除某一字段
    删除password字段
mysql> alter table use1 drop password;
Query OK, 2 rows affected (0.02 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> desc use1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| name     | varchar(60) | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| path     | varchar(20) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
  1. 修改字段名称
    name字段名称修改为mingzi
语法:
alter table 表名称 change 原始字段名称 修改后的字段名称 修改后字段的类型;

示例:
mysql> alter table use1 change name mingzi varchar(20);
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> desc use1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| mingzi   | varchar(20) | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| path     | varchar(20) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
  1. 修改表名称
语法:
alter talbe 表名称 rename to 修改后的表名称; // 这里to可以省略

示例:
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| use1           |
| use2           |
+----------------+
2 rows in set (0.00 sec)

mysql> alter table use1 rename to change_use;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| change_use     |
| use2           |
+----------------+
2 rows in set (0.00 sec)

表的删除

语法:

drop [TEMPORARY] table [if exists] 表的名称 [, tbl_name] ...

示例:

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| change_use     |
| use2           |
+----------------+
2 rows in set (0.00 sec)

mysql> drop table use2;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| change_use     |
+----------------+
1 row in set (0.00 sec)

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三问走天下

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

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

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

打赏作者

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

抵扣说明:

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

余额充值