MySQL中数据类型以及运算符

MySQL支持的数据类型

主要包括数值类型、字符串类型、日期和时间类型。不同版本可能稍有不同。

1. 数值类型

整数类型字节最小值最大值
TINYINT1有符号 -128
无符号 0
有符号 127
无符号 255
SMALLINT2有符号 -32768
无符号 0
有符号 32767
无符号 65535
MEDIUMINT3有符号 -8388608
无符号 0
有符号 8388607
无符号 1677215
INT4有符号 -2147483648
无符号 0
有符号 2147483647
无符号 4294967295
BIGINT8有符号 -263
无符号 0
有符号 263-1
无符号 264
浮点数类型字节最小值最大值
FLOAT4±1.175494351E-38±3.402823466E+38
DOUBLE8±2.2250738585072014E-308±1.797693134862315E+308
定点数类型字节描述
DECIMAL(M,D)M+2最大取值范围与double相同,给定的范围由M和D决定
位类型字节最小值最大值
BIT(M)1~8BIT(1)BIT(64)

整型可以通过在定义时加入ZEROFILL约束条件来将数值左边空缺位数用0补齐;

整型还有一个AUTO_INCREMENT约束条件,用来产生顺序值,一个表中最多只能有一个AUTO_INCREMENT列。对于任何想要使用AUTO_INCREMENT的列应该定义为NOT NULL,并定义为PRIMARY KEY或定义为UNIQUE键;

FLOAT(3, 2):表示总长度为3,小数点后长度为2;

浮点数存在精度丢失问题,若涉及小数运算,尽量不要用浮点型;

DECIMAL(M, D):M是总位数,D是小数点后的位数。M最大为65,D最大为30;M和D又称为精度和标度。

定点数类型在存储小数时也会存在精度丢失的问题。

对于BIT类型需要使用函数读取,bin()显示为二进制,hex()显示为十六进制;

2. 日期和时间类型

日期和时间类型字节最小值最大值
DATE41000-01-019999-12-31
DATETIME81000-01-01 00:00:009999-12-31 23:59:59
TIMESTAMP4197001010800012038年的某个时刻
TIME3-838:59:59838:59:59
YEAR119012155

TIMESTAMP值返回后显示为"YYYY-MM-DD HH:MM:SS"格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应该在TIMESTAMP列加+0。

TIMESTAMP列和时区相关,当插入日期时,会先转换为本地时区后存放;从数据库中取出时,有也同样需要将日期转换为本地时区后显示。

由于TIMESTAMP最大值到2038年的某一天,所以不适合存放较久远的日期。

3. 字符串类型

字符串类型字节描述及存储需求
CHAR(M)MM为0~255之间的整数
VARCHAR(M)M为0~65535之间的整数,值的成都+1个字节
TINYBLOB允许长度0~255字节,值的长度+1个字节
BLOB允许长度0~65535字节,值的长度+2个字节
MEDIUMBLOB允许长度0~167772150字节,值的长度+3个字节
LONGBLOB允许长度0~4294967295字节,值的长度+4个字节
TINYTEXT允许长度0~255字节,值的长度+2个字节
TEXT允许长度0~2=65535字节,值的长度+2个字节
MEDIUMTEXT允许的长度0~167772150字节,值的长度+3个字节
LONGTEXT允许的长度0~4294967295字节,值的长度+4个字节
VARBINARY(M)允许长度0~M个字节的变长字节字符串,值的长度+1个字节
BINARY(M)M允许长度0~M个字节的定长字节字符串

CHAR的长度固定为创建表时声明的长度,VARCHAR是可变长的。

BINARY和VARBINARY类似于CHAR和VARCHAR,当保存BINARY值的时候,在值的最后通过填充“0x00”以达到指定的字段定义长度。

ENUM类型(枚举类型)它的值需要在创建表时通过枚举方式显示指定,对1~255个成员的枚举需要一个字节存储,对255 ~ 65535个成员需要2字节存储。

ENUM类型只允许从值集合中选取单个值,而不能一次取多个值。

SET类型与ENUM类型非常相似,也是一个字符串对象,不同的是SET类型一次可以选取多个成员。

MySQL中的运算符

  1. 算术运算符:加、减、乘、除,取余

  2. 比较运算符:

    #除常见的外还有
    <> #表示不等于
    <=> #表示NULL安全的等于
    BETWEEN min AND max #表示存在于指定范围
    IN	#表示存在于指定集合
    IS NULL	#表示为NULL
    IS NOT NULL	#表示不为NULL
    LIKE	#表示用通配符匹配
    REGEXP或RLIKE #表示正则表达式匹配
    
  3. 逻辑运算符

    NOT 或 ! #逻辑非
    AND 或 &&	#逻辑与
    OR 或 ||	#逻辑或
    XOR		#逻辑异或
    
  4. 位运算符

    &	#位与
    |	#位或
    ^	#位异或
    ~	#位取反
    >>	#位右移
    <<	#位左移
    
  5. 运算符的优先级:

    由于运算符较多,记住不太可能,所有使用"()"来将需要优先进行的操作括起来,既能保证优先运算,又易读。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值