MySQL表的操作

发布于:2024-03-28 ⋅ 阅读:(20) ⋅ 点赞:(0)


一、 创建表

语法:

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

说明:

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

关于存储引擎我们可以在命令行中输入 show engines; 命令就可以查看当前数据库支持的存储引擎。
在这里插入图片描述
我们这里可以看到默认是InnoDB的存储引擎,在建表的时候如果没有指定采用什么存储引擎,那就会使用默认的。

二、 创建表案例

在创建一个表之前我们先要选择一个数据库,这里我们新创建了一个数据库叫test_1,然后进入这个数据库进行建表
在这里插入图片描述
数据库创建完毕后选中数据库,在该数据库中创建一个users表,并在建表时指定采用MyISAM存储引擎。

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

在这里插入图片描述
我们以前的文章中说过,在Linux中MySQL创建数据库的本质就是在Linux中创建了一个文件,我们上面创建了一个叫test_1的数据库,因此我们可以进入到这个test_1的目录下,可以发现多了三个文件。
具体路径看图
在这里插入图片描述
说明:

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

三、 查看表结构

使用desc 表名可以查看表的结构

desc 表名;

如:
在这里插入图片描述
说明:

  • Field表示该字段的名字。
  • Type表示该字段的类型。
  • Null表示该字段是否允许为空。
  • Key表示索引类型,比如主键索引为PRI。
  • Default表示该字段的默认值。
  • Extra表示该字段的额外信息说明。

如果你想要查看表创建的细节可以使用show create table 表名
在这里插入图片描述
可以看到这里我在后面加了个 \G,这里不加会显示多余的东西,加上就会自动帮我们把多余的东西去掉。也可以不带\G,大家自己可以去试试,看看带不带有啥区别。

四、 修改表

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

关键字大小写都可以,没区别。

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 列名 新列名 新列属性;

1. 添加几条记录

在修改表之前,我们先插入几个数据,方便让大家看到修改后的变化。

insert into 表名 values(...);

这里我们执行这俩行

insert into users values(1,'张三','1234','2003-11-05');
insert into users values(2,'李四','5678','2004-1-13');

在这里插入图片描述

2. 新增列

在user表中新增一列用于保存用户的照片路径。

alter table table_name add 新增列名 新增列的属性;

在这里插入图片描述

after表示将该列新增到哪一列之后,如果想要将新增的列放到第一列,可以将after及其之后的语句换成not null first
然后我们再插入一条看看效果
在这里插入图片描述

3. 修改列类型

alter table table_name modify 列名 修改后的属性;

我们这里将user表中password列的类型由char(30)改成char(50)。
用desc指令查看,可以看到已经修改了
在这里插入图片描述
我们可以再用show create table来看看
在这里插入图片描述

说明: 如果需要修改列类型后仍然保留comment字段,需要在修改时重新指定comment字段。

4. 修改列名

alter table table_name change 原列名 新列名 属性;

这里我们将password名字改为pass
在这里插入图片描述

5. 删除列

alter table table_name drop 列名;

这里我们把路径这一列删掉
在这里插入图片描述
值得注意的是删除列后,这一列对应的数据就都没了,所以谨慎删除

6. 修改表名

alter table table_name rename 新表名;

这里我们将表名users修改为us
在这里插入图片描述

五、 删除表

语法格式:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

说明:

  • 在创建表语句中加上TEMPORARY关键字,那么服务器将创建出一个临时表,该表会在你与服务器的会话终止时自动消失。
  • TEMPORARY表的名字可以与某个已有的永久表相同,当有TEMPORARY表存在时,对应的永久表会隐藏起来(即无法访问)。
  • 为了避免重新连接后(TEMPORARY已经不存在),在未做检测的情况下调用DROP误删了对应永久表,因此在使用DROP删除临时表时需要带上TEMPORARY关键字。

示例:
这里我们直接删除us这个表

drop table us;

可以看到原来有个us表,执行完指令之后再次查看就显示empty为空了。
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看