MySQL从零开始 3-关于 '表' 的那点事

 MySQL中,我们会对不同的项目创建不同的数据库来容纳它们的数据,而在这些库结构(关于 ‘库’ 的那点事)中,又细分成很多的表,而数据就是存储在这些表里的。

 表是数据库中最小的结构,也是我们大部分时间进行操作的对象。

 本篇就将介绍常用的表操作。

1. 表的创建

 创建表的语法如下:

// 创建一个名为tableName的表
create table tableName(
    列名1 类型1,
    列名2 类型2,
    列名3 类型3,
    ...
) character set 字符集 collate 校验规则 engine 存储引擎;

 字符集校验规则和存储引擎的设置是可选选项。如果不进行设置,字符集默认为utf8,校验规则默认为utf8_general_ci,存储引擎默认为innodb。

 字符集和校验规则在之前的文章里都解释过了,这里对存储引擎进行解释。

 存储引擎决定了表存储在磁盘里的的文件形式。MySQL里有两种存储引擎:innodb和myisam,前者是MySQL默认存储引擎。区别如下:

 创建表t1,t2。t1采用innodb存储引擎。t2采用myisam存储引擎。

1

 存储结构如下。

2

 接下来,看一个创建表的完整过程。

create database test;
use test;
// 字符集设置可以简写为 charset=字符集 的形式。SQL语句可以多行书写,以分号结尾即可
create table Person(name varchar(32), age int) 
charset=utf8 collate utf8_general_ci engine myisam;

如图:

3

 使用如下语句进行表结构的查询:

desc tableName;

 对我们刚创建的Person表使用该语句,可以看到如下结果:

4

 表的结构中个列的含义如下:

  • Field:列名
  • Type:列的类型
  • NULL:列的元素是否允许为空
  • key: 索引
  • Default:该列默认值
  • Extra:扩展

2. 表的修改

 表在创建完了也不是一劳永逸,在之后的维护中,我们可能会对表进行一些修改,以适应新的数据。

 表的修改操作使用 alter 关键字,接下来,具体介绍。

  • 添加列 add
// 在表的最后添加新列,可选部分可以指定新列添加的位置
alter table tableName add colName colType [after 已存在列列名]

 插入新的列之后,对原来表中的数据没有任何影响。

  • 修改列类型 modify
// 修改colName列的类型
alter table tableName modify colName newType;
  • 修改列名 change
// 将oldName列列名修改为newName,这里newName需要完整定义,所以还要加上类型名,当然,可以顺带将类型也进行修改
alter table tableName change oldName newName newType;

 注意,change修改列类型时,规定新类型不能比旧的类型小,否则会报错。

  • 删除列 drop
// 删除colName列
alter table tableName drop colName;

 删除列属于高危操作,要谨慎。

  • 修改表名 rename
// 将表tableName更名为newName,这里的 to 可以省略不写
alter table tableName rename [to] newName;
  • 修改表的字符集/校验规则
// 修改表字符集
alter table tablName character set 字符集;
// 修改表校验规则
alter table tableName collate 校验规则

一般来说,创建表的时候指定的字符集和校验规则轻易不要该表,有可能影响表内其他的数据以及已规定好的操作。

 表修改操作如下:

add:

5

modify,change,drop:

6

rename:

7

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值