Mysql表的操作和数据类型

Mysql表的操作和数据类型_第1张图片

文章目录

  • 1. 表的操作
  • 2. 数据类型
    • 2.1 数据类型分类
    • 2.2 tinyint类型
    • 2.3 bit类型
    • 2.4 小数类型
      • 2.4.1 float
      • 2.4.2 decimal
    • 2.5 字符串类型
      • 2.5.1 char
      • 2.5.2 varchar
      • 2.5.3 char和varchar比较
    • 2.6 日期和时间类型
    • 2.7 enum和set

1. 表的操作

创建表语法:
Mysql表的操作和数据类型_第2张图片
说明:
field 表示列名。
datatype 表示列的类型。
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准。
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。
engine 存储引擎,如果没有指定校验规则,则以所在数据库的配置为准

Mysql表的操作和数据类型_第3张图片
Mysql表的操作和数据类型_第4张图片
查看当前数据库的所有表。
Mysql表的操作和数据类型_第5张图片
Mysql表的操作和数据类型_第6张图片

查看表的相关属性。
Mysql表的操作和数据类型_第7张图片
查看表创建时的SQL语句。
Mysql表的操作和数据类型_第8张图片
并且在数据库中也有了对应的表文件。

修改表语法:

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);

Mysql表的操作和数据类型_第9张图片
Mysql表的操作和数据类型_第10张图片
下面我们增加一个列属性:
Mysql表的操作和数据类型_第11张图片
我们也可以对列属性进行调整。
Mysql表的操作和数据类型_第12张图片
Mysql表的操作和数据类型_第13张图片
我们可以看出修改属性内容之后,之前的SQL全部被覆盖了。

如果我们想删除表的一列:
Mysql表的操作和数据类型_第14张图片
下面我们进行修改列的名字:
Mysql表的操作和数据类型_第15张图片
下面我们也可以修改表名字:
Mysql表的操作和数据类型_第16张图片
这里的to可以省略。

删除一个表:
语法格式:
在这里插入图片描述
Mysql表的操作和数据类型_第17张图片

2. 数据类型

2.1 数据类型分类

Mysql表的操作和数据类型_第18张图片
数值类型:
Mysql表的操作和数据类型_第19张图片

2.2 tinyint类型

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

2.3 bit类型

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

Mysql表的操作和数据类型_第21张图片
Mysql表的操作和数据类型_第22张图片
可以发现很怪异的现象,a的数据10没有出现。

bit使用的注意事项:bit字段在显示时,是按照ASCII码对应的值显示
Mysql表的操作和数据类型_第23张图片
如果我们有这样的值(比如说性别),只存放0或1,这时可以定义bit(1)。这样可以节省空间。

2.4 小数类型

2.4.1 float

在这里插入图片描述
Mysql表的操作和数据类型_第24张图片

小数:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。
Mysql表的操作和数据类型_第25张图片
可以看到小数点第3位,是小于4的就会省略,然后插入,大于等于5的就不能插入了。

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

2.4.2 decimal

Mysql表的操作和数据类型_第26张图片
decimal(5,2) 表示的范围是 -999.99 ~ 999.99
decimal(5,2) unsigned 表示的范围 0 ~ 999.99

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

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

2.5 字符串类型

2.5.1 char

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

2.5.2 varchar

在这里插入图片描述
为什么varchar是可变字符串,为什么还要有L
Mysql表的操作和数据类型_第31张图片
当我们输入的字符超过长度时,就不能进行插入了,这个和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比较

在这里插入图片描述
如何选择定长或变长字符串
Mysql表的操作和数据类型_第32张图片

2.6 日期和时间类型

Mysql表的操作和数据类型_第33张图片
Mysql表的操作和数据类型_第34张图片
Mysql表的操作和数据类型_第35张图片
这里的时间戳的备述是,第三个会自动帮我们填写。
Mysql表的操作和数据类型_第36张图片
如果我们修改前面的数据,那么时间戳也会自动更新。

2.7 enum和set

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

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

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

你可能感兴趣的:(MySql,mysql,数据库)