1. bit
mysql> create table tt4 ( id int, a bit(8)); query ok, 0 rows affected (0.01 sec)
同时它是按照ascii码对应的值显示。 比如下面这张图里面,65是a所对应的ascii。

2. float(小数类型)
这个m的意思是小数点前面的位数加上小数点后面的个数要等于这个m,同时如果用户输入的数大于这个m的话,它会先按照四舍五入的方式尝试进化化简,如果化简结果符合这个m的话那它就显示ok,不然的话就插入失败。
我们先设置一个总长度为4,小数点后面有2位的salary。
create table tt6(id int, salary float(4,2));
在下面这张图里面-99.991,最后的一个1被四舍五入掉了。如果我们把这个1换成5,那么这边就会插入失败。

3.decimal(小数类型)
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
这个看起来和上面那个float一样,区别在于这个decimal的精度更高。
float表示的精度大约是7位。
decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略, 默认是10
我们看下面的代码和结果,在高精度的情况下,decimal可以保持更高的精度。
mysql> create table tt8 ( id int, salary float(10,8), salary2 decimal(10,8));

4. char(字符串类型)
这个没什么好说的,就是普通的char类型,在这边写出来是为了和下面的varchar来进行对比
5.varchar(字符串类型)

那么我们在一些情况下该如何进行选择呢?
- 如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
- 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
- 定长的磁盘空间比较浪费,但是效率高。
- 变长的磁盘空间比较节省,但是效率低。
- 定长的意义是,直接开辟好对应的空间
- 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。
6.日期和时间类型
常用的日期有如下三个:
date :日期 'yyyy-mm-dd' ,占用三字节。
datetime 时间日期格式 'yyyy-mm-dd hh:ii:ss' 表示范围从 1000 到 9999 ,占用八字节。
timestamp :时间戳,从1970年开始的 yyyy-mm-dd hh:ii:ss 格式和 datetime 完全一致,占用
四字节。
我们来看下面这张图片,其中date类型的t1就是显示年月日,datetime类型的t2就是显示年月日加上时分秒,而timestam类型的t3不用我们自己设置,它会自动给自己加上执行这条指令时的时间。

同时如果我们更新了其中的一条数据,那么timestamp 也会自动更新时间。

7.enum和set
我们看下面这张图片,其中set类型的hobby我们插入了两个值,而enum我们只可以插入一个。

我们看下面这张图,如果我们要查找hobby=b的,那么1和2就不会被选出来,因为这条查找是只有b的。

如果我们要查找出所有含有b的,那么我们应该用用find_ in_ set函数。
通过这个函数我们就可以查找出所有含有b的。

到此这篇关于sql之参数类型讲解的文章就介绍到这了,更多相关sql参数类型内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论