Mysql表的操作和数据类型

在这里插入图片描述

1. 表的操作

创建表语法:
在这里插入图片描述
说明:
field 表示列名。
datatype 表示列的类型。
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准。
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。
engine 存储引擎,如果没有指定校验规则,则以所在数据库的配置为准

在这里插入图片描述
在这里插入图片描述
查看当前数据库的所有表。
在这里插入图片描述
在这里插入图片描述

查看表的相关属性。
在这里插入图片描述
查看表创建时的SQL语句。
在这里插入图片描述
并且在数据库中也有了对应的表文件。

修改表语法:

ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename DROP (column);

在这里插入图片描述
在这里插入图片描述
下面我们增加一个列属性:
在这里插入图片描述
我们也可以对列属性进行调整。
在这里插入图片描述
在这里插入图片描述
我们可以看出修改属性内容之后,之前的SQL全部被覆盖了。

如果我们想删除表的一列:
在这里插入图片描述
下面我们进行修改列的名字:
在这里插入图片描述
下面我们也可以修改表名字:
在这里插入图片描述
这里的to可以省略。

删除一个表:
语法格式:
在这里插入图片描述
在这里插入图片描述

2. 数据类型

2.1 数据类型分类

在这里插入图片描述
数值类型:
在这里插入图片描述

2.2 tinyint类型

数值越界测试:
在这里插入图片描述
可以看到,如果插入的数据不符合要求,mysql直接终止操作。数据类型,在MySQL这里,符合条件,让你操作,不符合条件,不让你操作。这其实就是对程序员的一种约束。所以数据类型本质就是一种约束。

2.3 bit类型

基本语法:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可以发现很怪异的现象,a的数据10没有出现。

bit使用的注意事项:bit字段在显示时,是按照ASCII码对应的值显示
在这里插入图片描述
如果我们有这样的值(比如说性别),只存放0或1,这时可以定义bit(1)。这样可以节省空间。

2.4 小数类型

2.4.1 float

在这里插入图片描述
在这里插入图片描述

小数:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。
在这里插入图片描述
可以看到小数点第3位,是小于4的就会省略,然后插入,大于等于5的就不能插入了。

如果定义的是float(4,2) unsigned 这时,因为把它指定为无符号的数,范围是 0 ~ 99.99

2.4.2 decimal

在这里插入图片描述
decimal(5,2) 表示的范围是 -999.99 ~ 999.99
decimal(5,2) unsigned 表示的范围 0 ~ 999.99

decimal和float很像,但是有区别:float和decimal表示的精度不一样
在这里插入图片描述
可以看到两个都插入同一个浮点数,但是float的值不一样了。我们发现decimal的精度更准确,因此如果我们希望某个数据表示高精度,选择decimal。

说明:
float表示的精度大约是7位。
decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0。如果m被省略,默认是10

2.5 字符串类型

2.5.1 char

在这里插入图片描述
举个例子:
在这里插入图片描述
当插入的字符串的长度超过限制,就不能进行插入了。
在这里插入图片描述
最后一个是空字符串,不是NULL,它们是不同的含义。
在这里插入图片描述
char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255
在这里插入图片描述

2.5.2 varchar

在这里插入图片描述
为什么varchar是可变字符串,为什么还要有L
在这里插入图片描述
当我们输入的字符超过长度时,就不能进行插入了,这个和char是一样的。

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

2.5.3 char和varchar比较

在这里插入图片描述
如何选择定长或变长字符串
在这里插入图片描述

2.6 日期和时间类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的时间戳的备述是,第三个会自动帮我们填写。
在这里插入图片描述
如果我们修改前面的数据,那么时间戳也会自动更新。

2.7 enum和set

在这里插入图片描述
该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值,而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,…最多65535个;当我们添加枚举值时,也可以添加对应的数字编号
在这里插入图片描述
该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,…最多64个

举个例子:
有一个调查表votes,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择(可以多选),但是性别只有(男,女)[单选]
在这里插入图片描述
在这里插入图片描述
并且 我们也可以用数字来代替字符。
在这里插入图片描述
set也可以用数字来代替,但是它是以位图形式。0001是代码,0010是登山,0011是代码和登山,0100是打篮球,0101是代码和打篮球等等这样。

下面我们继续看一个问题:
在这里插入图片描述
我们看到不能查询出所有,爱好里有代码的人。我们要使用这个函数:
在这里插入图片描述
在这里插入图片描述
这个函数是在某个集合中找,如果找到就返回在集合里的下标。
在这里插入图片描述
并且我们也可以级联条件。
在这里插入图片描述
我们可以看到,我们想要查询代码和游泳不行,必须是连着一起的才能查询到。
在这里插入图片描述
我们使用and就能查询到,如果我们使用or的话,就是代码或者游泳。
在这里插入图片描述
所以都能查询到。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学代码的咸鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值