MySQL第三章
本章内容
MySQL数据类型
MySQL运算符
MySQL具有丰富的数据类型,在建表和存储过程中都需要指定数据类型
常用的数据类型有:
–数值类型
–字符类型
–日期和时间类型
MySQL主要提供的整数类型有:tinyint、smallint、mediumint、int、bigint。
tinyint 很小的整数 一个字节
smallint 小的整数 二个字节
mediumint 中等大小的整数 八个字节
整数类型可以在定义表结构时指定整数类型的显示宽度,如果不指定,系统为每一个类型指定默认的宽度值,如:
提示:显示宽度只是用于显示,并不能限制取值范围和占用空间,如:int(3)会占用4个字节的存储空间,并且允许的最大值也不会是999,而是int所允许的最大值
日期和时间类型
类型 |
描述 |
存储需求 |
范围 |
DATETIME |
格式为YYYY-MM-DD HH:MM:SS |
8 |
1000-01-01 00:00:00~9999-12-31 23:59:59 |
DATE |
格式为YYYY-MM-DD |
3 |
1000-01-01~9999-12-31 |
TIMESTAMP |
格式为YYYY-MM-DD HH:MM:SS |
4 |
1970-01-01 00:00:01 UTC~2038-01-19 03:14:07 |
TIME |
HH:MM:SS |
3 |
-838:59:59~838:59:59 |
YEAR |
YYYY |
1 |
1901-2155 |
Year
Year类型表示年,可以使用各种格式指定year的值
–以4位字符串或者4位数字格式表示year,取值范围’1901’~‘2155’,输入格式为‘YYYY’或者YYYY,例如:输入’2010’或2010
–以2位字符串格式表示的year,范围’00‘~’99‘。’00‘~’69‘和’70‘~’99‘范围的值分别被转换成2000-2069和1970-1999范围的year的值。
–以2位数字表示的year,范围1~99。1~69和70~99范围的值分别被转换为2001~2069和1970~1999范围的year值。
TIME
TIME类型用在只需要时间信息的值,在插入数据时要注意,因为可以采用非严格语法,支持
HH:MM:SS 10:05:05 10:05:05 HH:MM 23:23 23:23:00 D HH:MM 2 10:10 58:10:00 24*2+10:10 D代表天 D HH 3 02 74:00:00 24*3+10 小时部分小于10,前面补0 SS 10 00:00:10 HHMMSS 101112 11:11:12 如果分钟部分大于59,插入的会失败
|
DATE
DATE类型用在仅需要日期值时,没有时间部分,在插入遵循 YYYY-MM-DD、 YY-MM-DD、 YYYYMMDD、 YYMMDD都可以,并且允许非严格语法,比如插入98.11.31 98/11/31 [email protected]@31,任何标点符合都可以做日期、时间的分割符
使用current_date或者now(),插入当前系统日期。
DATATIME
DATATIME类型用在需要同时包括日期和时间信息的值,格式为‘YYYY-MM-DD HH:MM:SS’、‘YYYYMMDDHHMMSS’、 ‘YY-MM-DD HH:MM:SS’、‘YYMMDDHHMMSS’、 YYYYMMDDHHMMSS、 YYMMDDHHMMSS
TIMESTAMP
uTIMESTAMP的显示格式与DATETIME相同,但TIMESTAMP的取值范围小于DATETIME的取值范围,为‘1970-01-01 00:00:01’ UTC~‘2038-01-19 03:14:07’ UTC,其中UTC为世界标准时间,在插入数据时,要保证在合法的取值范围内。
字符类型
类型 |
描述 |
CHAR(M) |
存储固定长度字符串 |
VARCHAR(M) |
存储可变长度字符串 |
ENUM |
枚举类型 |
SET |
集合类型(集合中最多有64个成员) |
BLOB |
存储二进制大对象 |
TEXT |
存储文本大对象 |
CHAR和VARCHAR类型
CHAR(M)为固定长度字符串,在定义时指定字符串列长。在保存时在右侧填充空格以达到指定的长度。M表示列长度,M的范围是0~255个字符。
VARCHAR(M)是长度可变的字符串,M表示最大列长度。M的范围是0~65535。
BIT类型
BIT(M),位字段类型。M表示每个值的位数,范围为1~64。如果M被省略,默认为1.如果为BIT(M)列分配的值的长度小于M位,在值的左边用0填充。例如:为BIT(6)分配一个值b’101,其效果与分配b‘000101相同。
BIT数据类型用来保存位字段值,例如:以二进制的形式保存数据13,13的二进制形式为1101,在这里需要位数至少为4为BIT类型,即可定义列类型为BIT(4)