MySQL数据类型和运算符

MySQL常见数据类型:数值类型,日期/时间类型,字符串类型

数值类型:整数类型包括 tinyint,smallint,middleint,int,bigint

                 浮点小数类型 float,double,定点小数类型 decimal

日期/时间类型:year,time,date,datetime,timestamp

字符串类型:char,varchar,binary,varbinary,blob,text,enum,set。字符串类型又分为文本字符串,二进制字符串


整数类型

存储需求:tinyint(1字节),smallint(2字节),middleint(3字节),int(4字节),bigint(8字节)

创建数据表时数据类型int(11)括号中的参数表示系统可现实的数值宽度(即数字位数)和数据类型范围没关系,如果插入的数值小于宽度用空格填充,大于宽度时只要数值不超出数据类型范围一样会显示。

整数类型默认宽度如下:


浮点数类型和定点数类型

浮点数和定点数都可以使用(M,N)表示,M为精度,表示总共的位数。N为标度,表示小数的位数。

存储需求:float(4字节),double(8字节),decimal(M,D)(M+2个字节)


其中精度5,数值位数不够用空格填充。

日期与时间类型

存储需求:year(1字节),time(3字节),date(3字节),datetime(8字节),timestamp(4字节)

日期格式:year(YYYY),time(HH:MM:SS),date(YYYY-MM-DD)

                datetime(YYYY-MM-DD HH:MM:SS),timestamp(YYYY-MM-DD HH:MM:SS UTC)

year

类型插入数据数字和带“”数字都行



time

小时可以大于24,下表插入时(2 10:10),(3 02)其中2和3表示日,计算时间为2*24+HH


      插入当前时间

date

支持不通格式插入如下图:


datetime

支持不通格式插入如下图:


timestamp

插入格式和datetime相同,取值范围小于datetime



文本字符串类型

存储需求:1<=M<=255

                 char(M字节)  固定长度类型

                 varchar(L+1字节,L<=M) 变长类型

                 tinytext(L+1字节,L<=2^8

                 text(L+2字节,L<=2^16) 变长类型

                 mediumtext(L+3字节,L<=2^24)

                 longtext(L+4字节,L<=2^32

                 enum(1或2个字节,取决于枚举值数目)

                 set(1,2,3,4或8字节,取决于集合成员数量)

char和varchar

下图char类型保存把空格去掉了,varchar保留了2个空格

存储区别:char(4)和varchar(4)

                如果同样存储“ab”,char需要4字节,varchar需要3字节



常见运算符

运算符主要4大类:算术运算符 ,  +  -   *    /   %

                             比较运算符,>  <  =  (>=)  (<=)  [(!=) |  (<>)]  in   between  and  (is null)  greatest  least  like  regexp

                             逻辑运算符,not  !   and  &&  or  ||  xor(异或)

                             位运算符, 位与&,位或 |,位非~,位异或^,左移<<,右移>>

运算符优先级由低到高:"=(赋值运算)";"or , ||" ; "xor" ;"&&, and";"not";"between,case,when,then,else";"=(比较运算) ,<=>, >=, <=, >, < ,<>, !=, is ,like, regexp ,in";"|";&";"<<,>>";"+ ,-";"* , / , %";"^";"-(负号),~(位反转),";"!"

算术运算符

比较运算符

<=>安全等于运算符,当两个值都为NULL时返回1,用=会返回null

判断是否为空

between and判断是否在范围内

least返回最小值

greatest返回最大值

in , not in

like 用来匹配字符串 %匹配任何数目的字符,_匹配一个字符

regexp 正则匹配

逻辑运算符

not ! 操作数为0时为真(1),非0时为假(0)

and && 操作数都不为0并且不为null时为真(1)

or ||   操作数任意一个数不为0且两个数都不为null为真(1)

xor 任意一个操作数为null返回null,两个数都非0或者都为0时为假(0),一个是0一个不是0时真(1)

位运算符

位运算符为转换2进制之后,对比相同二进制位1和0。

     位或(|)  一个或两个为1结果为1,否则为0

     位与(&)都为1结果为1,否则为0

     位异或(^) 相同位值不同时为1,否则为0

     位左移(<<) 二进制位数全部左移,左侧数丢弃,右侧0补位

     位右移(>>)二进制位数全部右移,右侧数丢弃,左侧补0

     位取反(~) 二进制位数全部反转0和1互换




猜你喜欢

转载自blog.csdn.net/crazy_brick/article/details/80320241