MySQL第二弹 之 表操作

数据类型: 

数值类型:

bit (M)   :位类型,M是指位数,如果不指定默认为1,M的取值范围1~64

注:bit在表示的时候是按照ASCII对应的符号来表示的,如果指向让值为1或者0,M不需要指定或者指定为1

bool    :布尔值类型用1和0表示真假

 

默认为有符号,无符号在后面指定为unsigned 

tinyint:有符号表示范围-128~127,无符号范围0~255,

smallint:有符号范围-2^15~2^15-1,无符号范围0~2^16

int:有符号范围-2^32~2^32-1,无符号范围0~2^32-1;

bigint:有符号范围-2^63~2^63-1,无符号范围0~2^64

 

MySQL存储数据默认四舍五入 

float(M,D):M表示数值长度(仅包含数字),D表示小数位数

double(M,D):M表示数值长度(仅包含数字),D表示小数位数

decimal(M,D):M表示数值长度(仅包含数字),D表示小数位数

float表示的精度大约是7位

decimal支持整数位的最大位数为65,小数位数最大可以取值为30;如果不指定m,默认为10,不指定D,默认为0

相较于float,decimal的精度更高一些

字符类型:

char(size) :固定长度,最大取值为255

varchar(size):可变长度字符串,最大长度为65535

size的大小:

varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是 65532。
当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字 节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)。

 

故size的大小和表的字符集有关
 

日期和时间类型:

datetime:时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从10009999,占用八字节

date:日期 'yyyy-mm-dd',占用三字节

timestamp:时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss格式和datetime完全一致,占用四字节

MySQL第二弹 之 表操作_第1张图片

插入数据、或更新数据,时间戳会更新为当前系统的时间 

enum和set类型: 

enum:枚举,即相当于“单选”;

该类型提供了若干个选项的值,在每个格中,实际上只存储其中一个值。选项的每个选项值依次对应数字1,2,3.......最多65535个;添加值时,我们既可以添加枚举值,也可以添加对应的数字。

set:集合,即相当于“多选”;

该类型提供了若干个选项的值,在每个格中,可存储其中任意几个值。这些选项的每个选项值也依次对应数字1,2,4,8......最多64个。添加值时,我们既可以添加值,也可以添加对应的数字。

集合中查询使用find_in_set函数

创建数据表

命令:create table [表名称]  ([列名称] [列的数据类型] comment  [解释] )charset = [字符集]  collate [校对规则]  engine=[存储引擎] 

查看表结构 

命令:desc [表名称]

            show  create table [表名称]

MySQL第二弹 之 表操作_第2张图片

我们使用desc命令,看不到列描述;

而show create table 命令可以看到:

MySQL第二弹 之 表操作_第3张图片

 相关的修改操作

 

字段操作

新增表字段:

alter  table [表名称] add [列名称] [列的数据类型]  after [列名称(在该列之后添加字段)]

新增字段不会影响之前的数据,但是新增的字段为空

我们存有一张学生信息的表格,初始信息有姓名,学号;但是我们打算现在新增了一个校区,需要新增加信息,学生所在的校区

MySQL第二弹 之 表操作_第4张图片

 修改字段的数据类型:

alter table  [表名称]  modify  [列名称] [修改之后的列类型]

删除字段:

alter table [表名称] drop [列名称]

注:删除该字段之后,该字段的数据也全部被删除

字段的重命名:

alter table [表名称]  change [列名称]  [修改之后的列名称] [列的数据类型]

 

我们现在的学生信息中有一个表示是否是男生,一开始我们使用一个比特位标识,现在呢?我们想改为用int表示

MySQL第二弹 之 表操作_第5张图片

MySQL第二弹 之 表操作_第6张图片

 

MySQL第二弹 之 表操作_第7张图片

 

现在我们相修改学生信息表,因为用是否是男生表示性别,对女生不太尊重,所以我们现在将man这列该为sex,且存储男生或女生的字符串,方便看

 

 

MySQL第二弹 之 表操作_第8张图片

现在,我们新建一个校区的愿望被搁浅了,我们在学生信息中,这列也就不需要了,请删除

 

MySQL第二弹 之 表操作_第9张图片

 

表的重命名

命令:

alter table [表名称] rename to [修改之后的表名称]              或   alter table [表名称] rename  [修改之后的表名称]     

MySQL第二弹 之 表操作_第10张图片

对表中数据的操作命令

插入数据:

全列数据的插入:insert into [表名称]  values (每列对应的值,用 “,” 隔开,需要按照列的先后顺序排列数据)

单列数据的插入:insert into [表名称] [列名称] values (数据)

查询数据:

 全列数据的查询: select  *  from  [表名称]

 指定列查询:select  [列名称]  from [表名称]     

注:列名称若有多个的时候,需要用逗号隔开

MySQL第二弹 之 表操作_第11张图片

MySQL第二弹 之 表操作_第12张图片

 更加详细的关于表的操作会在第三弹进行展开;

 删除表

drop table [表名称]

 备份表:

备份表的命令:mysqldump  -P3306 -u [用户名] -p[密码]   [库名称]  [表名称] > 数据库文件的保存路径 (文件后缀为.sql

备份表的还原:source  数据库文件的保存路径 (文件后缀为.sql

MySQL第二弹 之 表操作_第13张图片 MySQL第二弹 之 表操作_第14张图片

MySQL第二弹 之 表操作_第15张图片

总结: 

表的操作:

创建表:create table [表名称]  ([列名称] [列的数据类型] comment [解释]) charset=[字符集] collate [校对规则] engine=[存储引擎]

查看表结构:

   desc [表名称]                         不可以看到列名称的解释

  show create table [表名称]   可以看到列名称的解释

查看数据库中的所有表: show tables

修改表名称:alter table [表名称] rename to [修改之后的表名称] 或者 alter table [表名称]  rename [修改之后的表名称]

删除表:drop  table [表名称]

表的备份及其还原:

 备份:mysqldump -P3306 -u [用户名] -p[密码]   [库名称] [表名称] >数据库文件的存储路径;文件后缀为.sql

还原:source 数据库文件的存储路径;文件后缀为.sql

表字段的操作 

添加列: alter table [表名称] add [列名称] [列的数据类型] after [列名称]

修改列的数据类型: alter table [表名称] modify [列名称] [列名称的数据类型]

删除列:alter table [表名称] drop [列名称]

修改列的名称:alter table [表名称] change [列名称] [修改之后的列名称] [列的数据类型]

注:如果本篇博客有任何错误和建议,欢迎伙伴们留言,你快说句话啊!

 

你可能感兴趣的:(MySQL)