`

mysql的varchar(N)和int(N)的含义及其与char区别

 
阅读更多

转自:http://blog.itpub.net/15480802/viewspace-1330966/ 

 

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这样设计?
对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和计算均一样;

分享到:
评论

相关推荐

    对比MySQL中int、char以及varchar的性能

    总的来说,MySQL中的int、char和varchar在性能上的差异并非显著到足以成为决定性因素。开发者应根据实际需求,如数据的类型、大小、预期的增长、是否需要索引以及对可读性和可维护性的要求,来综合考虑选择哪种数据...

    Mysql varchar大小长度问题介绍

    本文将深入探讨VARCHAR类型的大小长度问题及其在不同版本和编码下的限制。 首先,VARCHAR字段的长度限制主要受以下三个因素影响: 1. **存储限制**:VARCHAR字段的长度不能超过65535字节。这是因为每个VARCHAR字段...

    Mysql数据库中把varchar类型转化为int类型的方法

    在上篇文章给大家讲了MySQL数据库中把int转化varchar引发的慢查询,本文给大家介绍Mysql数据库中把varchar类型转化为int类型的方法,一起看看吧! mysql为我们提供了两个类型转换函数:CAST和CONVERT,现成的东西...

    MySQL数据库中把int转化varchar引发的慢查询

    1. **数据类型**:数值类型的索引(如`int`)通常比字符串类型的索引(如`varchar`)更快,因为它们在存储和比较时占用更少的空间。 2. **排序顺序**:对于字符串类型,索引的排序基于字符集,可能需要更多计算来...

    mysql实现char类型主键自增长

    然而,这种自增长通常与整型数据类型(如INT)关联,而较少见于字符型数据(如CHAR)。本文将深入探讨如何在MySQL中利用触发器实现CHAR类型主键的自增长功能,这将为我们提供一种灵活且独特的主键生成策略。 ### ...

    oracle和MySQL区别手册

    - **MySQL**: 使用`VARCHAR(n)`来定义可变长度的字符串类型,与Oracle类似,这里的`n`同样表示最大字符数。 ##### 日期类型 - **Oracle**: 使用`DATE`类型来存储日期和时间信息(包括年、月、日、小时、分钟和秒)...

    sqlserver中将varchar类型转换为int型再进行排序的方法

    还有关于SQL多条件多字段排序、根据数字型字段对字符型字段排序、基于经纬度的距离排序、以及MySQL的排序规则utf8_unicode_ci和utf8_general_ci的区别,这些都是数据库管理和查询优化中非常重要的知识点。...

    MySQL数据库varchar的限制规则说明

    - 示例b:创建一个包含一个整型、一个固定长度的`CHAR`列和一个`VARCHAR`列的表,如`CREATE TABLE t4 (c INT, c2 CHAR(30), c3 VARCHAR(N)) CHARSET=utf8;`,`N`的最大值是`(65535 - 1 - 2 - 4 - 30 * 3) / 3 = ...

    mysql头文件引用.rar

    在MySQL C API中,它可能包含关于数据类型定义和转换函数的信息,使得C++程序可以更好地与MySQL中的各种数据类型(如INT, VARCHAR, DATE等)进行交互。 2. **my_list.h**:这个头文件通常涉及到MySQL内部的数据结构...

    Java中数据类型和MYSQL中数据类型的对比

    3. 字符串类型:MySQL 的字符串类型主要包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET。CHAR 和 VARCHAR 用于存储非二进制文本,其中 VARCHAR 更适合存储可变长度的字符串。BINARY 和 VARBINARY ...

    mysql上机试题和答案.zip

    MySQL上机操作 1.创建数据库,名称为MyBank 2.创建数据表customer(客户)、deposite(存款)、bank(银行),表结构如下: customer的表结构 属性名称 类型与长度 中文含义 备注 c_id char(6) 客户标识 主键,非空 ...

    mysql与oracle差异总结

    MySql与Oracle是两个最流行的关系数据库管理系统,它们之间存在一些差异,了解这些差异对于开发者和数据库管理员都是非常重要的。下面是 MySql 与 Oracle 差异总结: 1. 创建函数语法 在 MySql 中,创建函数的...

    mysql基础知识和mysql优化整理

    2. 数据类型:MySQL支持多种数据类型,如整数类型(TINYINT、INT、BIGINT)、浮点类型(FLOAT、DOUBLE)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)等。 3. SQL语言...

    MySQL.docx

    表的定义包括数据字段及其数据类型,如Char(n)用于存储固定长度的字符串,Varchar(n)则用于存储可变长度的字符串。数值类型包括tinyint、smallint、int、bigint、float和double。此外,还有Blob和Text类型用于存储...

    mysql_test_c__by_wy.rar_MYSQL_mysql api_mysql c++

    const char* create_table_sql = "CREATE TABLE IF NOT EXISTS students (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT)"; if (mysql_query(conn, create_table_sql)) { fprintf(stderr, "%s\n",...

    简单了解mysql存储字段类型查询效率

    - INT(N)中的N并不影响存储,只影响显示宽度,不影响实际存储和计算。 2. **字符类型**: - CHAR是定长字符串,存储效率较低,但查询较短数据时可能更快,适合存储长度固定的值,如MD5。 - VARCHAR是变长字符串...

    C操作mysql数据库

    mysql> create table children (childno int not null unique, fname varchar(20), age int); ``` ### 二、插入数据 插入数据可以通过MySQL客户端执行SQL语句完成,也可以通过C语言程序实现。 ```sql mysql> insert...

    mysql面试题100题

    - 字符串类型:VARCHAR、CHAR、TEXT 和 BLOB,其中 VARCHAR 和 CHAR 区别在于 VARCHAR 变长,CHAR 定长。 - 日期和时间类型:DATETIME、DATE 和 TIMESTAMP,建议优先使用 TIMESTAMP,因为它在空间效率上优于 ...

    Oracle和MySQL语句区别.doc

    例如,Oracle支持的数据类型有CHAR、VARCHAR2、NUMBER、DATE、TIMESTAMP等,而MySQL则支持的数据类型有CHAR、VARCHAR、INT、DATE、TIMESTAMP等。此外,Oracle的NUMBER类型可以表示数字、整数和浮点数,而MySQL的INT...

Global site tag (gtag.js) - Google Analytics