MySQL 学习<三> 数据类型简介

数据库表是由多列字段构成,每一个字段指定了不同的数据类型。不同的数据类型也决定了MySQL在存储它们的时候使用的方式,以及在使用它们的时候选择什么运算符号进行运算。

数据类型简介

整数类型

整数类型主要用来存储数字,MySQL提供了多种数值数据类型;详细如下图所示:

例如,创建表时使用的语句:id   INT(11)表明了id字段的数据类型为INT,后面的数字11代表该数据类型指定的显示宽度为11。

浮点数据和定点数据类型

MySQL使用浮点数和定点数来表示小数。其中浮点类型有两种:单精度浮点类型(FLOAT)和双精度浮点类(DOUBLE);定点类型只有一种:DECIMAL。都可以用(M,N)来表示,M称为精度,N为标度表示小数的位数。详细如下表所示:


日期与时间类型

MySQL有多种表示日期的数据类型,主要的如下:DATETIME,DATE,TIMESTAMP,TIME,YEAR详细如下表所示:

1.DATETIME
包含了日期和时间的值,需8字节。格式如表中所示;以‘YYYY-MM-DD HH:MM:SS’或者'YYYYMMDDHHMMSS'字符串格式表示,例如输入‘2016-12-31 08:08:08’或者'20161231080808'插入数据库的值都是2016-12-31 08:08:08
2. TIMESTAMP
TIAMSTAMP的显示格式与DATETIME相同,显示宽度固定在19个字符,但是其取值范围要小于DATETIME的取值范围,为‘1970-01-01 00:00:01’ UTC~'2038-01-19 03:14:17'UTC,为世界标准时间,因此在插入数据时,要保证在合法的取值范围内。
3.DATE
DATE类型用在仅需日期值时。以‘YYYYMMMDD’或者'YYYYMMDD'字符串表示,范围如表所示;注意一点是:如用‘YYMMDD’或者'YY-MM-DD'字符串表示时,MsSQL用以下规则解释年份的值:‘00~69’范围的年值转换为‘2000-2069’,'70-99'范围的年值转换为‘1970-1999’.
使用CURRENT_DATE或者NOW(),插入当前系统的日期。
4.TIME
TIME类型用用在只需要时间信息的值,严格格式为‘D HH:MM:SS’;还可以使用下面任何一种‘非严格’的语法'HH:MM:SS'、'HH:MM'、'D HH:MM'、'D HH'或者‘SS’,这里的D表示日。
5.YEAR
以4位字符串或4位数字格式表示的YEAR,输入格式为‘YYYY’或者YYYY;以2位字符串或数字格式表示的YEAR‘00-69’被转换为‘2000-2069’,‘70-99’被转换为‘1970-1999’。但是如果只输入0则会被转换为0000而不是我们期望的2000,只有使用字符串格式的‘0’货值‘00’,才能正确的解释为2000,非法的YEAR值将被转换为0000。

文本字符串类型

MySQL中文本字符串类型指CHAR、VARCHAR、TEXT、ENUM和SET,详细如下:

这里,再补充说明
1.ENUM
枚举类型,只要能有一个枚举字符串值;大小为1或2个字节,取决于枚举值的数目(最大值为65535);语法格式为:字段名  ENUM('值1','值2',...,'值n')。

插入各列值:

查看索引值:

2.SET
SET是一个字符串对子那个,可以有零或多个值,SET列最多可以有64个成员,其值为表创建时规定的一系列值。包括多个SET成员的SET列值时,各成员之间用逗号(,)间隔开。语法格式为:SET  ('值1','值2',...,'值n');
与ENUM类型相同,SET值在内部用整数表示,列表中每一个值都有一个索引编号;但与ENUM类型不同的是,ENUM类只智能从列值中选择一个值插入,而SET类型的列可以从定义的列值中选择多个字符的联合。
如果有选择重复的列值,将自动删除重复的值。
创建表:

插入数据:

查看结果:


二进制字符串类型

MySQL中的二进制类型有:BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUBLOB和LONGBLOG。详细如下:


常见运算符介绍

运算符连接表达式中各个操作数,其作用是来指明操作数所进行的运算。常见的运算符类型有:算术运算符、比较运算符、逻辑运算符、为运算符。

算术运算符

包括加(+)、减(-)、乘(*)、除(/)、求余(%),如果除数为0,MySQL返回结果为NULL。

比较运算符

包括等于(=)、安全的等于(<=>)、不等于(<>;!=)、小于等于(<=)、大于等于(>=)、大于(>)、判断是否为NULL(IS NULL;ISNULL)、判断是否不为NULL(IS NOT NULL)、在有两个或多个参数时返回最小值(LEAST)、返回最大值(GREATEST)、判断是否落在两个值之间(BETWEEN AND)、判断一个值是列表中的任意一个值(IN)、判断不是任意一个值(NOT IN )、通配符匹配(LIKE)、正则表达式匹配(REGEXP)。
其中当用‘=’来判断时如果出现NULL的情况,返回值则为NULL(例如NULL=NULL,返回0);而是用安全等于运算符‘<=>’来判断,其返回值不为0(例如判断NULL<=>NULL,返回1)。

逻辑运算符

在SQL中,所有的逻辑运算符的求值结果均为TRUE、FALSE或NULL,在MySQL中,它们体现为1(TURE)、0(FALSE)和NULL。
NOT   或者   !(逻辑非)
AND  或者   &&(逻辑与)
OR    或者   ||(逻辑或)
XOR                  (逻辑异或)
这里只讲一下XOR:当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个操作数都为非0或者都为0值,则返回结果为0;如果一个为0值,一个为非0值,则返回1值。


位运算符

位运算符是用来对二进制字节中的位进行测试、移位或者测试处理,MySQL中提供的位运算符有按位或(|)、按位与(&)、按位异或(^)、按位左移(<<)、按位右移(>>),按位取反(~)。不再赘述。

参考文章:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值