数据类型决定了在存储的位置中占据空间的大小,以及如何识别等
取值:-128~127
tinyint unsigned
取值:0~255
当我们插入数据时,因为数据本身有自己的取值范围,Mysql对于数据的存储,本身有更严格的约束,因为MySql数据类型本身就是一种约束
注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,还不如设计时,将int类型提升为bigint类型
bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
类型决定了如何识别一个特定的二进制序列
bit使用的注意事项:
float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节
float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。
如果定义的是float(4,2) unsigned 这时,因为把它指定为无符号的数,范围是 0 ~ 99.99
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255
insert into t6 values(1,'a');
insert into t6 values(2,'ab');
varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节
关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:
变长字符串
class string{
private:
int size;//当前有多少个字符
char *buffer;//指向new的空间
public:
//...
};
mysql> create table if not exists t7(
-> id int,
-> name varchar(5)
-> );
insert into t7 values(1,'a');
insert into t7 values(1,'abcde');
insert into t7 values(2,'我是中国人');
常用的日期有如下三个:
create table if not exists t8( t1 date, t2 datetime, t3 timestamp );
insert into t8(t1,t2) values('2022-04-22','2022-04-22 12:10:00');
enum:枚举,“单选”类型;
enum('选项1','选项2','选项3',...);
set:集合,“多选”类型;
set('选项值1','选项值2','选项值3', ...);
不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。
mysql> create table if not exists t9(
-> id int,
-> sex enum('男','女'),
-> class set('chinese','math','english','database','C')
-> );
insert into t9 values(1,'男','chinese,math');
insert into t9 values(3,2,'english,C');
insert into t9 values(4,2,1);
find_in_set(sub,str_list)