mysql的varchar(N)和int(N)的含义及其与char区别
来源:互联网 发布:js 替换某个标签 编辑:程序博客网 时间:2024/06/05 00:46
1)varchar与char的区别
Varchar存储可变长字符串,小于255字节时需要1个额外字节(大于255需要2个额外字节)存储长度,最大长度为65532字节(所有列总和);
char存储定长(right padding),读取时会截断末尾空格,长度最大为255字符;
2)varchar(30)中30的涵义
最大存储30个字符;varchar(5)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)
For example, a VARCHAR(255) column can hold a string with a maximum length of 255 characters(字符而非字节). 对于latin1,’abcd’的L为4,存储需要5个字节;对于ucs2(双字节字符),则需要10个字节存储(最大长度为510>255,故需要额外2个字节)
3)int(20)中20的涵义
20表示最大显示宽度为20,但仍占4字节存储,存储范围不变;
create table int_test(a int zerofill NOT NULL auto_increment, PRIMARY KEY (a));
create table int_test_4(a int(4) zerofill NOT NULL auto_increment, PRIMARY KEY (a));
select * from int_test;
+------------+
| a |
+------------+
| 0000000001 |
| 0000000002 |
| 0000000003 |
| 2147483648 |
+------------+
select * from int_test_4;
+------------+
| a |
+------------+
| 0001 |
| 0002 |
| 0003 |
| 2147483648 |
+------------+
4)为什么MySQL这样设计?
Varchar存储可变长字符串,小于255字节时需要1个额外字节(大于255需要2个额外字节)存储长度,最大长度为65532字节(所有列总和);
char存储定长(right padding),读取时会截断末尾空格,长度最大为255字符;
2)varchar(30)中30的涵义
最大存储30个字符;varchar(5)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)
Data Type
Storage Required
CHAR(M)
M × w bytes, 0 <= M <= 255, where w is the number of bytes required for the maximum-length character in the character set. See<span color:#015a84;"="" style="word-wrap: break-word; font-size: 10pt;">Section 14.5.13.6, “Physical Row Structure” for information about CHARdata type storage requirements for InnoDB tables.
BINARY(M)
M bytes, 0 <= M <= 255
VARCHAR(M), VARBINARY(M)
L + 1 bytes if column values require 0 – 255 bytes, L + 2 bytes if values may require more than 255 bytes
For example, a VARCHAR(255) column can hold a string with a maximum length of 255 characters(字符而非字节). 对于latin1,’abcd’的L为4,存储需要5个字节;对于ucs2(双字节字符),则需要10个字节存储(最大长度为510>255,故需要额外2个字节)
3)int(20)中20的涵义
20表示最大显示宽度为20,但仍占4字节存储,存储范围不变;
create table int_test(a int zerofill NOT NULL auto_increment, PRIMARY KEY (a));
create table int_test_4(a int(4) zerofill NOT NULL auto_increment, PRIMARY KEY (a));
select * from int_test;
+------------+
| a |
+------------+
| 0000000001 |
| 0000000002 |
| 0000000003 |
| 2147483648 |
+------------+
select * from int_test_4;
+------------+
| a |
+------------+
| 0001 |
| 0002 |
| 0003 |
| 2147483648 |
+------------+
4)为什么MySQL这样设计?
对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和计算均一样;
此文章转载于http://blog.itpub.net/15480802/viewspace-1330966/
0 0
- mysql的varchar(N)和int(N)的含义及其与char区别
- 关于mysql中的int(N)、char(N)和varchar(N)类型的简单说明
- oracle中varchar(N)和varchar(N char)的区别
- MySQL数据库数据类型(char(n),varchar(n),nchar(n),nvarchar(n)的区别)
- 浅谈mysql中varchar(m)与char(n)的区别与联系
- 浅谈mysql中varchar(m)与char(n)的区别与联系
- oracle中n/varchar、n/varchar2、n/char几种类型的区别与使用
- mysql中char(n)和varchar(n)在数据存入的时候关于是否丢弃最后的空格的区别
- int n与int... n的区别
- mysql中char与varchar的区别
- mysql中char与varchar的区别
- MySQL-----Char与VARCHAR的区别
- mysql中varchar与char的区别
- Mysql char与varchar的区别
- MySQL中char与varchar 的区别
- MySql中Char与Varchar的区别
- 关于MySQL数据类型定义的几个细节-INT(N)/VARCHAR(N)/DECIMAL(M,N)
- mysql中varchar和char的区别
- HTML5 JQueryMobile页面跳转参数的传递解决方案
- ubuntu下安装程序的三种方法
- AP与交换机结合无缝覆盖
- Python核心编程--执行环境
- jmeter中文文档之导读
- mysql的varchar(N)和int(N)的含义及其与char区别
- Java利用反射实现对象之间相同属性复制
- [WC 2015复习](三)图论算法与经典模型
- ActionBar中的下拉菜单操作
- Eclipse Plug-in Project中使用jxl.jar
- UIProgressView的使用
- Masonry的简单使用
- Android BitTube 学习
- HDU2024 C语言合法标识符