初学mysql(十一)之细枝末节-数据类型与运算符

来源:互联网 发布:公众号矩阵 编辑:程序博客网 时间:2024/05/17 17:18

       上面的10篇博客我已经把自己学到的Mysql数据库的主要知识讲了一下,有数据库的创建、删除;表的创建、删除、修改;表的内容的增加、修改、删除;以及讲解了视图、触发器、索引、游标、存储过程和函数。现在我来说说mysql数据库中的数据类型与运算符。

       mysql数据库支持多种数据类型,主要有字符串类型、数值类型、日期类型、二进制类型。

       字符串类型:char(M):固定长度非二进制字符串;M(1-255)字节、varchar(M):变长非二进制字符串;L+1个字节,在此L<M且1<=M<=255、tinytext:非常小的非二进制字符串;L+1个字节,L<28;text:小的非二进制字符串L+2个字节,L<216;mediumtext:中等大小的非二进制字符串,L+3个字节,L<224;longtext:大的非二进制字符串,L+4个字节,L<232;enum:枚举类型;binary、varbinary、blob、text、set:一个集合,字符串对象可以有零个或多个set成员,1,2,3,4或8个字节,取决于集合成员的数量(最多64个成员)。

       数值类型:tinyint:1个字节、smallint:2个字节、mediumint:3个字节、int[integer]:4个字节、bigint:8个字节、float:4个字节、double:8个字节、定点小数类型decimal:decimal(M,D)压缩的严格定点数;M称为精度,表示总共的位数;D称为标度,表示小数的位数。

      二进制类型:bit(M):位字段类型,大约(M+7)/8个字节、binary(M):固定长度的二进制字符串,M个字节、varbinary(M):可变长度的二进制字符串,M+1个字节、tinyblob(M):非常小的blob,L+1个字节,此处L<28、blob(M):小blob,L+2个字节,此处L<216、mediumblob(M):中等大小的blob,L+3个字节,此处L<224、longblob(M):非常大的blob,L+4个字节,此处L<232。       

     日期类型:year:日期格式YYYY,日期范围1901~2155,存储需求:1个字节、

                       time:日期格式HH:MM:SS,日期范围-838:59:59~838:59:59,存储需求:3个字节、

                       date:日期格式YYYY-MM-DD,日期范围1000-01-01~9999-12-31,存储需求:3个字节、

                       datetime:日期格式YYYY-MM-DD HH:MM:SS,日期范围1000-01-01 00:00:00~9999-12-31 23:59:59,存储需求:8个字节、

                       timestamp:日期格式YYYY-MM-DD HH:MM:SS,日期范围1970-01-01 00:00:01~2038-01-19 03:14:07,存储需求:4个字节。

      注:(1)year类型使用单字节表示年份,在存储时只需一个字节:以4位字符串或者4位数字格式表示YEAR,其范围为'1901'~'2155',输入格式为'YYYY'或YYYY。例如,输入'2015'或2015,插入到数据库的值都是2015;以2位字符串格式表示YEAR,范围为'00'到'99'。'00'~'69'和'70'~'99'范围的值分别被转换为2000~2069和1970~1999范围的YEAR值。输入‘0’与'00'取值相同,皆为2000。插入超过取值范围的值将被转换为2000;以2位数字表示YEAR,范围为1~99。1~69和70~99范围分别转换为2001~2069和1970~1999范围的YEAR值。

             (2)time类型用在记录时间信息的值。需要3个字节来存储:a.‘D HH:MM:SS’格式的字符串,也可以使用一下任何一种‘非严格’的语法如‘HH:MM:SS’、‘HH:MM’、‘D HH:MM’、‘D HH’或‘SS’,其中D表示日,取值范围为0~34。再插入数据库时,D被转换为小时保存,格式为‘D*24+HH’。b.‘HHMMSS’格式的、没有分隔符的字符串或HHMMSS格式的数值,假定时间是有意义。不合法的时间被存储为00:00:00。

             (3)date类型用在仅需要存储日期值的时候,不存储时间,存储需要3个字节。常用格式:1:'YYYY-MM-DD'或者'YYYYMMDD'格式的字符串;2:‘YY-MM-DD’或者'YYMMDD'字符串格式表示日期;3:以YYMMDD数值格式表示日期。可以使用CURRENT_DATE或者NOW()表示系统的当前时间。YY表示年是在输入70-99时被理解为1970-1999年;在00-69时被理解为2000-2069;

              (4)datetime类型同时包含日期和时间信息,存储需要8个字节。常用格式:1:'YYYY-MM-DD HH:MM:SS'或者‘YYYYMMDDHHMMSS’字符串格式表示日期时间;2:'YY-MM-DD HH:MM:SS'或者'YYMMDDHHMMSS'字符串格式表示日期时间,YY含义和上面相同;3:以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数值格式表示日期时间。()Mysql允许不严格的时间插入,任何标点符号都可以用作日期部分或时间部分的时间间隔。

              (5)timestamp的显示格式与DATETIME相同,显示宽度固定在19字符。

      Mysql的运算符:mysql中的运算符有:算术运算符、比较运算符、逻辑运算符、位操作运算符。

                  算术运算符:+、-、*、/、%求余;

                  比较运算符:>、<、=、>=、<=、!=、in、between and、is null、greatest(进行大小判断)、least、regexp

                  逻辑运算符:逻辑非(not 或者 !)、逻辑与(and 或者 &&)、逻辑或(OR或者||)、逻辑异或(XOR)

                  位操作运算符:&、|、~、^、<<、>>

       mysql中也有许多函数,感兴趣的可以查阅mysql的API文档进行学习。这里有不一一说明了,这就是我初学mysql的所有东西,当然了一些高级的深入的东西我也还在学习当中,比如mysql备份,恢复,复制,日志管理,分布式应用,缓存的配置与使用等等,我会在后面阶段学习后来给大家说一说,以上的博客就是我的初学Mysql数据库的经验。

                 

              

             

             

     

0 0