Mysql数据库基础(四)数据类型 和运算符

#数据类型和运算符
Mysql支持多种数据类型,主要有:整数型、浮点小数、定点小数、日期/时间、字符串
 数值数据类型:
#=================================================================================================================================================================================
	类型名称         	说明            	默认位数	  	存储需求		有符号											无符号
#=================================================================================================================================================================================
	TINYINT          	很小的整数 			4				1 byte			-128~127										0~255
	SMALLINT			小的整数			6				2 byte			-32768~32767									0~65535
	MEDIUMINT			中等大小的整数		9				3 byte			-8388608~8388607								0~16777215
	INT(INTEGER)		普通大小的整数		11				4 byte			-2147483648~2147483647							0~4294967295
	BIGINT				大整数				20				8 byte		-9223372036854775808~9223372036854775807			0~18446744073709551615
	FLOAT				单精度浮点数						4 byte		-3.402823466E+38~-1.175494351E-308					0和1.175494351E-38~3.402823466E+38
	DOUBLE				双精度浮点数						8 byte		-1.7976931348623157E+308~-2.2250738585072014E-308	0和-1.7976931348623157E+308~-2.2250738585072014E-308
	DECIMAL(M,D),DEC	压缩的“严格”定点数					M+2 byte
#=================================================================================================================================================================================
	DECIMAL以串存放,选择D时与DOUBLE一样,M时占用M+2byte
	eg.
	year INT(4)
	该声明表示year字段中的数据一般只显示4位数字的宽度,数值位数小于指定宽度由空格填充,大于显示宽度
	,值不超过该类型整数的取值范围,数值依然可以插入
	后续的数字表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数

日期与时间类型:
#=======================================================================================================
	类型名称         	日期格式            	日期范围	  									存储需求
#=======================================================================================================
	YEAR				YYYY					1901~2155										1byte
	TIME				HH:MM:SS				-838:59:59~838:59:59							3byte
	DATE				YYYY-MM-DD				1000-01-01~9999-12-31							3byte
	DATETIME			YYYY-MM-DD HH:MM:SS		1000-01-01 00:00:00~9999-12-31 23:59:59			8byte
	TIMESTAMP			YYYY-MM-DD HH:MM:SS		1970-01-01 00:00:01 UTC~2038-01-19 03:14:07 UTC	4byte
#========================================================================================================

#=========TIME类型===================================================
(1) TIME类型分配简写的值时应注意:没有冒号时最右边两位表示秒;有冒号时从左边开始解析
(2) 使用D HH格式时,小时必须使用双位数值,如果是小于10的小时数,前面加0
(3) 在使用insert插入数据时可以是数据格式或者字符串格式
eg.
INSERT INTO test values(2010),('2010');

#=========DATE类型===================================================
(1) 以YY-MM-DD或YYMMDD字符串各格式表示日期,YY表示两位的年值,"00~69"转为"2000~2069","70~99"转为"1970~1999"
(2) 使用CURRENT_DATE或者NOW(),插入当前系统日期

#=========DATETIME类型===============================================
(1) 以YY-MM-DD HH:MM:SS或YYMMDDHHMMSS表示值遵从之前的Data类型规则

#=========TIMESTAMP类型==============================================
(1) 存储时以UTC时间存储,取出时再转回到当前时区,查询会发现与当前时间值不同

文本字符串类型:
#=======================================================================================================
	类型名称         	说明            							存储需求
#=======================================================================================================
	CHAR(M)				固定长度非二进制字符串						M byte,1<=M<=255
	VARCHAR(M)			变长非二进制字符串							L+1 byte,L<=M和1<=m<=255
	TINYTEXT			非常小的非二进制字符串						L+1 byte, L<2^8	
	TEXT				小的非二进制字符串							L+2 byte, L<2^16
	MEDIUMTEXT			中等大小的非二进制字符串					L+3 byte, L<2^24
	LONGTEXT			大的非二进制字符串							L+4 byte, L<2^32
	ENUM				枚举类型,只能有一个枚举字符串值			1或2个字节,取决于枚举数目,最大:65535
	SET					一个设置,字符串对象可以有零个或对个SET成员	1,2,3,4或8byte,取决于集合成员的数量(最多64个)
#========================================================================================================

二进制字符串类型:
#=======================================================================================================
	类型名称         	说明            							存储需求
#=======================================================================================================
	BIT(M)				位字段类型									大约(M+7)/8byte
	BINARY(M)			固定长度二进制字符串						M byte
	VARBINARY(M)		可变长度二进制字符串						M+1 byte	
	TINYBLOB(M)			非常小的BLOB								L+1 byte, L<2^8
	BLOB(M)				小BLOB										L+2 byte, L<2^16
	MEDIUMBLOB(M)		中等大小的BLOB								L+3 byte, L<2^24
	LONGBLOB(M)			非常大的BLOB								L+4 byte, L<2^32
#========================================================================================================
#BIT类型
M范围为1~64,M默认为1.如果分配值长度小于M位,左边用0填充

#常见运算符分为:算术运算符、比较运算符、逻辑运算符、位操作运算符
算术运算符
#=======================================================
	运算符			作用
#=======================================================
	=				等于
	<=>				安全的等于
	<>/!=			不等于
	<=				小于等于
	>=				大于等于
	>				大于
	IS NULL			判断一个值是否为NULL
	IS NOT NULL		判断一个值是否不为NULL
	LEAST			在有两或多个参数时,返回最小值
	GREATEST		当有两或多个参数时,返回最大值
	BETWEEN AND		判断一个值是否落在两个值之间
	ISNULL			与IS NULL 作用相同
	IN				判断一个值是IN列表中的任意一个值
	NOT IN			判断一个值不是IN列表中的任意一个值
	LIKE			通配符匹配
	REGEXP			正则表达式匹配
#=======================================================
1.等于运算符(=),不可以判断NULL值,比较时有如下规则
(1) 若有一个或多个参数为NULL,则运算结果返回为NULL
(2)	若同一个比较运算符中的两个参数都是字符串,按字符串进行比较
(3) 若两个参数均为整数,按整数进行比较
(4)	若一个字符串和数字进行相等判断,自动将字符串转换为数字
2.安全等于运算符(<=>),可以用来判断NULL值,当两个操作数为NULL时,返回值为1,当一个为NULL时,返回值为0
3.不等于运算符<>或者!=,不能判断空值NULL,用于判断数字、字符串、表达式不相等的判断。如果不相等,返回1,否则返回0。
4.小于或等于运算符(<=),不能判断空值NULL,小于或等于返回1,否则返回0
5.小于运算符(<),不能判断空值NULL,小于返回1,否则返回0
6.大于或等于运算符(>=),不能判断空值NULL,大于或等于返回1,否则返回0
7.大于运算符(<),不能判断空值NULL,大于返回1,否则返回0
8.IS NULL(ISNULL),IS NOT NULL,条件成立返回1,否则返回0
9.BETWEEN AND运算符,expr BETWEEN min AND max,min<=expr<=max,返回1,否则返回0
10.LEAST运算符:LEAST(值1,值2,值n),返回N(N>=2)个值中的最小值,如果有一个为NULL,返回值为NULL
11.GREATES运算符:GREATEST(value1,value2,....)返回N(N>=2)个值中的最大值,如果有一个为NULL,返回值为NULL
12.IN、NOT IN运算符操作数在或者不在列表中,成立返回1,否则返回0
13.LIKE运算符匹配字符串:语法格式:expr LIKE 匹配条件,成立返回1,否则返回0,expr或匹配条件任何一个为NULL,返回NULL
(1) "%",匹配任何数目的字符,包括零字符
(2)	"_",只匹配一个字符
eg.
	select 'stud' LIKE 'stud', 'stud' LIKE 'stu_','stud' LIKE '%d','stud' LIKE 't_ _ _','s' LIKE NULL;
	依次返回值为 1                1                  1                0                  NULL
14.REGEXP运算符用来匹配字符串,expr REGEXP 匹配条件,成立返回1,否则返回0,expr或匹配条件任何一个为NULL,返回NULL
匹配的通配符:
(1) '^'匹配以该字符后面的字符开头的字符串
(2)	'$'匹配以该字符后面的字符结尾的字符串
(3) '.'匹配任何一个单字符
(4)	"[...]"匹配在方括号内的任何字符串,为了命名字符的范围,使用一个'_'
(5) '*'匹配零个或多个在它前面的的字符
eg.
(1) '^s':表示匹配任何以字母's'开头的字符串
(2) 'y$':表示任何以'y'结尾的字符串
(3) '.sky':匹配任何以'sky'结尾,字符长度为4的字符串
(4) '[ab]':匹配任何包含字母'a'或'b'的字符串

逻辑运算符
#================================
	运算符			作用
#================================
	NOT 或者 !		逻辑非
	AND 或者 &&		逻辑与
	OR 或者 ||		逻辑或
	XOR				逻辑异或
#================================
1.NOT 或 ! :操作数为0时所得值为1,非0,所得值为1;操作数为NULL,返回NULL
2.AND 或 &&:所有操作数均为非0值,且不为NULL,返回1,否则返回0,操作数有一个为NULL返回NULL
3.OR 或 ||:两个操作数均为非NULL值,任意一个操作数为非零值,返回1,否则0;一个操作数为NULL,另一个为非0,返回1,否则NULL,两个均为NULL,返回NULL
4.XOR :当任意一个操作数为NULL时,返回NULL,非NULL,且两个操作数都是非0或者都是0值,返回结果为0,一个为0,另一个非0,返回1

位运算符:同C语言一样使用
#================================
	运算符			作用
#================================
	|				位或
	&				位与
	^				位异或
	<<				位左移
	>>				位右移
	~				位取反
#================================

运算符优先级
#==============================================================
	优先级	运算符
#==============================================================
	最低	=(赋值运算),:=
			||,OR
			XOR
			&&,AND
			NOT
			BETWEEN,CASE,WHEN,THEN,ELSE
			=(比较运算),<=>,>,>=,<,<=,<>,!=,IS,LIKE,REGEXP,IN
			|
			&
			<<,>>
			-,+
			*,/(DIV),%(MOD)
			^
			-(负号),~(位取反)
	最高	!
#============================================================== 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值