zoukankan      html  css  js  c++  java
  • mysql数据类型和使用方法

    版权声明:本文为博主原创文章。未经博主同意不得转载。

    https://blog.csdn.net/u011729265/article/details/25086957

            MySQL支持多种列类型:数值类型、日期/时间类型和字符串(字符)类型。

    本章首先对这些列类型进行了概述。然后更加具体地描写叙述了各种列的类型。以及列类型存储需求的总结。概述非常easy。关于具体列类型的具体信息应查阅具体的描写叙述,比如指定值时同意使用的格式。

    MySQL支持处理空间数据的扩展名。

    几种列类型描写叙述使用了下述惯例:

    M:表示最大显示宽度。最大有效显示宽度是255

    M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包括的值的范围无关。

    D:适用于浮点和定点类型,并表示小数点后面的位数。

    最大可能的值是30,但不应大于M-2

    方括号(‘[’‘]’)表示可选部分。

    假设为一个数值列指定ZEROFILLMySQL自己主动为该列加入UNSIGNED属性。

    SERIALBIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的一个别名。

    在整数列定义中,SERIAL DEFAULT VALUENOT NULL AUTO_INCREMENT UNIQUE的一个别名。

     

    BIT[(M)]

    位字段类型。

    M表示每一个值的位数,范围为从164。假设M被省略,默觉得1

    TINYINT[(M)] [UNSIGNED] [ZEROFILL]

    非常小的整数。带符号的范围是-128127

    无符号的范围是0255

    BOOLBOOLEAN

    TINYINT(1)的同义词。zero值被视为假。非zero值视为真。

     

    INT[(M)] [UNSIGNED] [ZEROFILL]

    普通大小的整数。带符号的范围是-21474836482147483647。无符号的范围是04294967295

    BIGINT[(M)] [UNSIGNED] [ZEROFILL]

    大整数。

    带符号的范围是-92233720368547758089223372036854775807。无符号的范围是018446744073709551615

     

    作为SQL标准的扩展,MySQL也支持整数类型TINYINTMEDIUMINTBIGINT。以下的表显示了须要的每一个整数类型的存储和范围。

    类型

    字节

    最小值

    最大值

     

     

    (带符号的/无符号的)

    (带符号的/无符号的)

    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

     

    CHARVARCHAR类型

    CHARVARCHAR类型相似。但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大写和小写转换。

    CHARVARCHAR类型声明的长度表示你想要保存的最大字符数。比如,CHAR(30)能够占用30个字符。

    CHAR列的长度固定为创建表时声明的长度。长度能够为从0255的不论什么值。当保存CHAR值时。在它们的右边填充空格以达到指定的长度。

    当检索到CHAR值时,尾部的空格被删除掉。

    在存储或检索过程中不进行大写和小写转换。

    VARCHAR列中的值为可变长字符串。长度能够指定为065,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。

    总体最大长度是65,532字节)。

    CHAR对照,VARCHAR值保存时仅仅保存须要的字符数,另加一个字节来记录长度(假设列声明的长度超过255,则使用两个字节)

    VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留。符合标准SQL

    假设分配给CHARVARCHAR列的值超过列的最大长度。则对值进行裁剪以使其适合。

    假设被裁掉的字符不是空格,则会产生一条警告。

    假设裁剪非空格字符。则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入。參见5.3.2节,“SQLserver模式

    以下的表显示了将各种字符串值保存到CHAR(4)VARCHAR(4)列后的结果,说明了CHARVARCHAR之间的区别:

    CHAR(4)

    存储需求

    VARCHAR(4)

    存储需求

    ''

    '    '

    4个字节

    ''

    1个字节

    'ab'

    'ab  '

    4个字节

    'ab '

    3个字节

    'abcd'

    'abcd'

    4个字节

    'abcd'

    5个字节

    'abcdefgh'

    'abcd'

    4个字节

    'abcd'

    5个字节

    请注意上表中最后一行的值仅仅适用不使用严格模式时;假设MySQL执行在严格模式,超过列长度不的值保存,而且会出现错误。

    CHAR(4)VARCHAR(4)列检索的值并不总是同样,由于检索时从CHAR列删除了尾部的空格。

    通过以下的样例说明该区别:

    mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));

    Query OK, 0 rows affected (0.02 sec)

     

    mysql> INSERT INTO vc VALUES ('ab  ', 'ab  ');

    Query OK, 1 row affected (0.00 sec)

     

    mysql> SELECT CONCAT(v, '+'), CONCAT(c, '+') FROM vc;

    +----------------+----------------+

    | CONCAT(v, '+') | CONCAT(c, '+') |

    +----------------+----------------+

    | ab  +          | ab+            |

    +----------------+----------------+

    1 row in set (0.00 sec)

    依据分配给列的字符集校对规则对CHARVARCHAR列中的值进行排序和比較。

    请注意全部MySQL校对规则属于PADSPACE类。这说明在MySQL中的全部CHARVARCHAR值比較时不须要考虑不论什么尾部空格。

    比如:

    mysql> CREATE TABLE names (myname CHAR(10), yourname VARCHAR(10));

    Query OK, 0 rows affected (0.09 sec)

     

    mysql> INSERT INTO names VALUES ('Monty ', 'Monty ');

    Query OK, 1 row affected (0.00 sec)

     

    mysql> SELECT myname = 'Monty  ', yourname = 'Monty  ' FROM names;

    +--------------------+----------------------+

    | myname = 'Monty  ' | yourname = 'Monty  ' |

    +--------------------+----------------------+

    |                  1 |                    1 |

    +--------------------+----------------------+

    1 row in set (0.00 sec)

    请注意全部MySQL版本号均如此。而且它不受SQLserver模式的影响。

    对于尾部填充字符被裁剪掉或比較时将它们忽视掉的情形,假设列的索引须要唯一的值,在列内插入一个仅仅是填充字符数不同的值将会造成复制键值错误。

    CHAR BYTECHAR BINARY的别名。这是为了保证兼容性。

    ASCII属性为CHAR列分配latin1字符集。UNICODE属性分配ucs2字符集。

     

    转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/25086957

     

  • 相关阅读:
    020-请你说一说app测试的工具
    栈的压入、弹出序列
    包含min函数的栈
    顺时针打印矩阵
    二叉树的镜像
    树的子结构
    链表中倒数第k个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    矩形覆盖
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10706981.html
Copyright © 2011-2022 走看看