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

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

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

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

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

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

。显示宽度与存储大小或类型包括的值的范围无关。

,但不应大于M-2。

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

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

SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的一个别名。

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

 

BIT[(M)]

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

BOOL,BOOLEAN

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

 

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

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

 

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

类型

字节

最小值

最大值

 

 

(带符号的/无符号的)

(带符号的/无符号的)

TINYINT

-128

 

 

SMALLINT

-32768

 

 

MEDIUMINT

-8388608

 

 

INT

-2147483648

 

 

BIGINT

-9223372036854775808

 

 

 

CHAR和VARCHAR类型

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

个字符。

的不论什么值。当保存CHAR值时。在它们的右边填充空格以达到指定的长度。

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

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

到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。

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

,则使用两个字节)。

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

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

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

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

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

CHAR(4)

存储需求

VARCHAR(4)

存储需求

''

'    '

个字节

''

个字节

'ab'

'ab  '

个字节

'ab '

个字节

'abcd'

'abcd'

个字节

'abcd'

个字节

'abcdefgh'

'abcd'

个字节

'abcd'

个字节

请注意上表中最后一行的值仅仅适用不使用严格模式时;假设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)

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

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

比如:

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 BYTE是CHAR BINARY的别名。这是为了保证兼容性。

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

 

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

 

 

 

 

 

mysql数据类型和使用方法的更多相关文章

  1. MySQL数据类型(DATA Type)与数据恢复与备份方法

    一.数据类型(DATA Type)概述 MySQL支持多种类型的SQL数据类型:数字类型,日期和时间类型,字符串(字符和字节)类型以及空间类型 数据类型描述使用以下约定: M表示整数类型的最大显示宽度 ...

  2. MySQL 数据类型 详解

    MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...

  3. MySQL数据类型——数值类型

    1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...

  4. 【转】MySQL数据类型和常用字段属性总结

    来源:http://www.jb51.net/article/55853.htm 这里先总结数据类型.MySQL中的数据类型大的方面来分,可以分为:日期和时间.数值,以及字符串.下面就分开来进行总结. ...

  5. MySQL数据类型和常用字段属性总结

    前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.MySQL提供了一组可以赋给表中各个 ...

  6. MySQL数据类型总结

    MySQL中的数据类型大的方面来分,可以分为:日期和时间.数值,以及字符串.下面就分开来进行总结. 日期和时间数据类型 MySQL数据类型 含义 date 3字节,日期,格式:2014-09-18 t ...

  7. 转!!MYSQL数据类型

    这篇文章主要介绍了MySQL数据类型和常用字段属性总结,本文总结了日期和时间数据类型.数值数据类型.字符串数据类型等,需要的朋友可以参考下     前言 好比C++中,定义int类型需要多少字节,定义 ...

  8. MySQL数据类型和属性

    日期和时间数据类型 MySQL数据类型 含义 date 3字节,日期,格式:2014-09-18 time 3字节,时间,格式:08:42:30 datetime 8字节,日期时间,格式:2014-0 ...

  9. 详解MySQL数据类型

    原文地址http://www.cnblogs.com/xrq730/p/5260294.html,转载请注明出处,谢谢! 前言 很久没写文章,也有博友在我的有些文章中留言,希望我可以写一些文章,公司项 ...

随机推荐

  1. 构造用于1个方法在多线程环境下重复多次执行测试的通用方法 C#

    static void MultithreadsCycleTestWithSameMethod(int threadNumber, int cycleNumber, ThreadStart actio ...

  2. 二:Servlet

    一:servlet开端 1.servlet是什么? a.就是一个java类 b.服务器端的小程序 c.处理用户请求 2.servlet的实现: a.实现Servlet接口 b.继承GenericSer ...

  3. 第三节:我的第一个Java程序

    一.编写我的第一个Java程序流程: 1.新建一个文本文档:在电脑任意位置“右击”----->选择“新建”----->选择“文本文档”: 2.修改文档名与后缀名:“右击”新建的文本文档-- ...

  4. jQuery 遮盖层弹出后禁止页面滚动

    css部分 .ovfHiden{     overflow: hidden;     height: 100%; }     js部分 $(".btn1").click(funct ...

  5. Base64编码和解码实现

    function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr ...

  6. 从源码上分析ListView的addHeaderView和setAdapter的调用顺序

    ListView想要添加headerview的话,就要通过addHeaderView这个方法,然后想要为ListView设置数据的话,就要调用setAdapter方法了.但是,在调用addHeader ...

  7. maven 插件jetty/tomcat启动 web 应用

    tomcat <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomca ...

  8. Automate the Sizing of your SGA in Oracle 10g

    How much memory does each of the individual components of the SGA need? Oracle now has methods to de ...

  9. JQuery 简单表格验证

    <form action="{% url 'register' %}" method="post"> 用户名:<input id=" ...

  10. Django 开启显示查询语句log

    # 下面语句加到setti中 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': ...