一,数据类型

       1>>  整数类型    int(5)        5指的是显示宽度(显示的数字个数,不是取值范围)     

类型名称

说明

存储需求

取值范围

有符号

取值范围

无符号

tinyint

 很小的整数

1字节

-128~127

0~255

smallint

小的整数

2字节

-32768~32767

0~65535

mediumint

中等大小的整数

3字节

-8388608~8388607

0~16777215

int

普通大小的整数

4字节

-2147483648~2147483647

0~4294967295

bigint

大整数

8字节

-9223372036854775808~

9223372036854775807

0-18446744073709551615

      2>> 浮点数类型和定点数类型

类型名称

说明

存储需求

float

 单精度浮点数

4字节

double

双精度浮点数

8字节

decimal(M,D)

定点数

M+2字节

           DECIMAL 的存储空间并不是固定的,而由精度值 M 决定,占用 M+2 个字节,

           浮点类型和定点类型都可以用(M, D)来表示,其中M称为精度,表示总共的位数;D称为标度,表示小数的位数。
           浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。DECIMAL 的默认 D 值为 0、M 值为 10

            提示:不论是定点还是浮点类型,如果用户指定的精度超出精度范围,则会四舍五入进行处理。

            在 MySQL 中,定点数以字符串形式存储,在对精度要求比较高的时候(如货币、科学数据),使用 DECIMAL 的类型比较好,另外两个浮点数进行减法和比较运算时也容易出问题,所以在使用浮点数时需要注意,并尽量避免做浮点数比较。

     3 >> 日期与时间类型          

类型名称

日期格式

 存储需求

日期最大范围

year

YYYY

1字节

1901~2155

time

HH:MM:SS

3字节

838:59:59

date

YYYY-MM-DD

3字节

9999-12-31

datetime

YYYY-MM-DD HH:MM:SS

8字节

9999-12-31 23:59:59

timestamp

YYYY-MM-DD HH:MM:SS

4字节

2038-01-19  03:14:07

         1> year  格式的指定

              1)以4位字符串或4位数字表示year ,不管是 '2010'  还是2010 ,数据库插入都是2010。

              2)以2位字符串表示year,范围 '00'  到 '99'。'00'~'69'  被转换为2000~2069,'70'~'99' 被转换为1970~1999,'0'  和 '00' 作用相同。插入超过取值范围的值将被转换为2000。

              3)以2位数字表示的year,取值范围 1~99 。1~69  被转换为2001~2069 ,70~99  被转换为 1970~1999 ,这里0将被转换为0000而不是2000, 所以2000年要用字符串‘0’ 或‘00’  表示

         2 > time  格式表示

               1)'D HH:MM:SS' 格式字符串在插入数据库时,D被转换为小时保存,格式为 'D*24+HH'

               2)'HHMMSS'  格式或 HHMMSS   格式的数值假定是有意义的时间,且最右边的两位表示秒。如 1112 表示00:11:12秒,这种表示要合法,不合法的将存储为00:00:00 。如117012 

         3 > date 类型

               1)以'YYYY-MM-DD' 或者'YYYYMMDD' 字符串格式表示日期,插入数据库都是2012-12-31这种格式

               2)以'YY-MM-DD' 或者'YYMMDD' 字符串格式表示日期,YY表示的是年值,取值与year 一致,范围 '00'  到 '99','00'~'69'  被转换为2000~2069,'70'~'99' 被转换为1970~1999

               3)以YY_MM_DD 或者YYMMDD数字格式表示的日期,00~69范围的年值转换为2000~2069;70~99范围的年值转换为1970~1999。如12-12-31库里存的2012-12-31,78-12-31库里存的1978-12-31

               4)使用current_date   或者 now()   插入当前系统日期,current_date 返回当前日期值,不包括时间部分,now() 返回日期和时间值,落库时只保留日期部分。

         4> datetime  类型

               1)以'YYYY-MM-DD HH:MM:SS' 或者'YYYYMMDDHHMMSS' 字符串格式表示日期 时间,插入数据库都是2012-12-31 05:05:05这种格式

                2) 以'YY-MM-DD HH:MM:SS' 或者'YYMMDDHHMMSS' 字符串格式表示日期 时间,YY表示的是年值,取值与year 一致,范围 '00'  到 '99','00'~'69'  被转换为2000~2069,'70'~'99' 被转换为1970~1999,如‘980515121214’   插入数据库的值为1998-05-15 12:12:14。

               3)以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期时间,都以2010-10-12 05:14:14 格式存在库里。2位的年值取值与year 一致,范围 '00'  到 '99','00'~'69'  被转换为2000~2069,'70'~'99' 被转换为1970~1999,如‘980515121214’   插入数据库的值为1998-05-15 12:12:14。·

          5>  timestamp  类型

               timestamp  的显示格式与 datatime   相同,但取值范围不同  。

               timestamp  存储时间是以UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,读取时转换为当前时区,根据时区的不同显示不同的时间。

              设置时区    set time_zone = '+10:00'   #设置当前时区为东10区

   4>>  文本字符串类型

         1> char 和 varchar  类型

              char(M)   固定长度字符串  M的范围0~255, 不够长度以空格填充,检索时,末尾的空格被删除,适合MyISAM 存储引擎

              varchar(M)  变长字符串,M的范围0~65535, 实际长度为字符串长度+1,保存和检索时尾部的空格仍然保留,适合InnoDB  存储引擎

          2> text   类型

               text  保存非二进制字符字符串,如文章内容,评论等,保存和查询时,不删除尾部空格。只能存储纯文本文件

               text  有4种类型:tinytext  text   mediumtext  longtext ,存储空间和数据长度都不同

          3 > enum 类型

                enum   是一个字符串对象,其值为表创建时在列规定中枚举的一列值。 一次取一个且只能取在列表中的值,不在列表中的值插入时会提示错误信息。

                语法:  字段名  enum(' 值1',' 值2',' 值3' ,..... '值n')   n  的取值1~65535

                  create table test1(soc  int, level enum('excellent','good','bad'));

                  insert  into test1  values(70,'good'),(90,1),(75,2),(50,3);

            4> set 类型

                  set  是一个字符串对象,有零个或多个值,最多有64个,值为创建表时规定的一列值。在插入表时,可插入定义的列表中的多个字符的组合,自动去除重复, 插入set 列不支持的值,错误提示。

                    语法: set(' 值1',' 值2',' 值3' ,..... '值n')      尾部空格自动删除

                    create table test2(s  set('a','b','c','d'));

                    insert into test2  values('a'),('a,b,a'),('c,a,d');

    5>>  二进制字符串类型          

          1> bit  类型

                bit  类型是位字段类型,bit(M)  M 表示每个值的位数,范围1~64,省略默认为1,如果分配长度小于M,左边用0补齐,如bit(6)  b'000101'。

                bin()  函数将数字转换为二进制,bin(M+0) 将二进制的结果转换为对应的数字值

           2> binary  和varbinary 类型

               binary 和 varbinary  类型类似与char  和varchar,  binary 为固定长度,不足右边用0补齐,varbinary 为变长,存储长度为实际存储字符串长度+1,包含二进制字节字符串

           3> blob  类型

                blob  是一个二进制大对象,存储可变数据,有4种类 型tinyblob,blob,mediumblob,longblob,blob 存储的是二进制字符串(字节字符串),text 存储的是非二进制字符串(字符字符串),blob 列没有字符集,排序和比较基于列字节的数值,text 列有一个字符集,根据字符集排序和比较。适合存储图片,音频信息

二,运算符

    1>>算数运算符       

运算符

作用

+

  加法运算

-

  减法运算

×

  乘法运算

/

  除法运算,返回商

%

  求余运算,返回余数

    2>>比较运算符                     

运算符

作用

取值

返回结果

=

  等于

1,一个或俩个参数为null

2,俩个都是字符串

3,俩个都是整数

4,字符串和数字比较

1,null

2,按字符串比较

3,按整数比较

4,字符串自动转换为数字比较

<=>

  安全的等于

1,和等于作用相似

2,俩个参数都为null

3,一个参数为null

2, 返回1

3,返回0

<> 或 !=

  不等于

1, 判断数字,字符串,表达式

2,不能用于判断空值null

1,不相等返回1, 相等返回0

2,返回null

<=

  小于等于

1,  左边小于等于右边

2,不能用于判断空值null

1,返回1, 否则返回0

2,返回null

>=

  大于等于

1,  左边大于等于右边

2,不能用于判断空值null

1,返回1, 否则返回0

2,返回null

>

  大于

1,  左边大于右边

2,不能用于判断空值null

1,返回1, 否则返回0

2,返回null

<

  小于

1,  左边小于右边

2,不能用于判断空值null

1,返回1, 否则返回0

2,返回null

is  null  或 isnull

  判断一个值是否为NULL

值为NULL

返回1, 否则返回0

is not null

   判断一个值是否不为NULL

值非NULL

返回1, 否则返回0

least

  在有俩个或多个参数时,返回最小值

1,语法:least( 值1,值2,值n)

2,  有一个值为NULL

1,返回最小值

2,返回NULL

greatest

  当有俩个或多个参数时,返回最大值

1,greatest( 值1,值2,值n)

2,  有一个值为NULL

1,返回最大值

2,返回NULL

between  and

  判断一个值是否在俩个值之间

值在区间内

返回1, 否则返回0

in

判断一个值是 in 列表中的任意一个值

1,判断值是否在 IN 列表中

2,NULL in ()

3,  2 in (1,3,NULL)

1,在返回1,否则返回0

2,   返回NULL

3,返回NULL

not in 

判断一个值 不是 in 列表中的任意一个值

判断值是否在 IN 列表中

不在返回1,否则返回0

like

 通配符匹配

1,'%' 匹配任何数目的字符

2,'-'  匹配一个字符

3,匹配字符或匹配条件为NULL

匹配成功返回1,否则返回0

3,返回NULL

regexp

  正则表达式匹配

1,语法:expr  regexp  匹配条件

2,'^' 匹配以匹配字符开头的字符串

3,'$' 匹配以匹配字符结尾的字符串

4,'.' 匹配任何一个单字符

5,'*' 匹配任何数量的任何字符

6,[...] 匹配括号内的任何字符

7,expr 或匹配条件为NULL

1,匹配成功返回1,否则返回0

7,返回NULL

    3>> 逻辑运算符

运算符

作用

取值

返回结果

not 或者 !

 逻辑非

!0,!10,!NULL

1,0,NULL

and 或者 &&

逻辑与

 1&&10,1&&0,1&&null

 1,0,NULL

or   或者 ||

逻辑或

1 or 0,1 or NULL,0 or NULL,NULL  or NULL,0 or 0

1,1, NULL,NULL,0

xor

 等价 a and (not  b)

逻辑异或

NULL xor NULL,1  xor 1 , 

0 xor 0,  1  xor  0    

NULL,0 ,0 ,1

    4>> 位运算符     (二进制计算)

运算符

作用

取值

返回结果

|

位或

对应的位都是0时,

0,否则为1

&

位与

对应的位都是1时

 1,否则为0

^

位异或

对应的位同时为1或0时

0,否则为1

<<

位左移

0001<<2    ( 位移都是按二进制数据位移),

0100

>>

位右移

1000>>3    ( 位移都是按二进制数据位移)

0001

~

位取反

~1000    (取反都是按二进制取反的)

0001