你的位置:首页 > 软件开发 > 数据库 > MySQL学习笔记之数据类型

MySQL学习笔记之数据类型

发布时间:2015-09-29 14:00:06
数据类型在所有的数据库使用当中,都是避免不了的部分。以前每次写SQL语句,对于定义成哪种数据类型总是迷迷糊糊,今天就来彻底弄清。以下介绍仅针对MySQL 5.5以上版本。一、字符串类型1、char和varchar  以前在建表语句中,定义到字符串类型只会用varchar,但是它后 ...

  数据类型在所有的数据库使用当中,都是避免不了的部分。以前每次写SQL语句,对于定义成哪种数据类型总是迷迷糊糊,今天就来彻底弄清。以下介绍仅针对MySQL 5.5以上版本。

一、字符串类型

1、char和varchar

  以前在建表语句中,定义到字符串类型只会用varchar,但是它后面要指定一个数字,这个数字具体代表什么一知半解。char和varchar两个类型后面都要跟上一个数字,例如char(10),varchar(20)。

  看过官方文档后发现,这里的数字表示的是最大字符个数,注意是字符数,而不是字节数!在严格的SQL模式下,插入的字符串数据如果字符数超过这个值,分两种情况:

  ①如果尾部超出部分全都是空格,则截去超出部分后插入,产生一个警告;

  ②如果尾部超出部分含非空格字符,插入失败,直接报错。

  在非严格SQL模式下,两种情况都会直接截去超出部分后插入。

  

  括号里面的数字究竟能设为多大呢?官方说明是,char的可以设为0~255,varchar的可以设为0~65535。对于char没有任何问题,但对于varchar,经过实际操作发现没那么简单。

  MySQL不管对于什么样的存储引擎,有一个统一的设定,那就是一行数据的总字节数,不能超过65535。而字符有英文字符,有中文字符,还有其他语言的字符,而且各种编码下,有的字符一个占1字节,有的字符一个占2个或3个字节。而MySQL的默认编码类型是utf-8,一个中文字符占到3个字节,如果某个字段指定为varchar(65535),那么单这一个字段,最大字节数就可能达到65535*3,远远超出了一行数据的最大设定65535字节。比如执行如下语句:

create table t_planet(  name varchar(65535));

原标题:MySQL学习笔记之数据类型

关键词:MYSQL

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。