转自:http://blog.csdn.net/phpwish/article/details/7845921
今天看项目的数据库结构设计,发现一个奇怪的地方。
`xxx_detail` `delflag` int(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
`xxx_category` `delflag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标记',
问题:int(1) 和 tinyint(1) 有什么区别呢?
像这样的设计,反正我是不会写int(1)的。
查了下,mysql中设置了储存类型后,储存是定长的,也就是说,int(1) 和 int(4) 在硬盘中所占的字节数都是一样的。
我们知道,int类型占4个字节,tinyint占1个字节。int(1) 和 int(4) 从本身长度还是存储方式上都是一样的,区别就是显示的长度不同,但是要设置一个参数:如果列制定了zerofill 就会用0填充显示,int(4)指定后就会显示为0002。
int(1)和tinyint(4) 相比,肯定int 大。
注意数字类型后面括号中的数字,不表示长度,表示的是显示宽度,这点与 varchar、char 后面的数字含义是不同的。
也就是说不管 int 后面的数字是多少,它存储的范围始终是 -2^31 到 2^31 - 1。
综上整型的数据类型括号内的数字不管是多少,所占的存储空间都是一样
tinyint一个字节 smallint 两个字节 MEDIUMINT三个字节
显而易见,int(1) 和 tinyint(1) ,在设计数据库的时候应该选择tinyint(1)。所占的储存空间越少越好,当然要够用才行。像这样储存一个 个位数的字段,还是用tinyint(1)的好。
总结:
1.规定类型之后,存储是定长的,int(1)和int(4)从本身长度还是存储方式上都是一样的。mysql里,int(1)和int(4)的区别就是显示的长度,但是要设置一个参数:如果列制定了zerofill 就会用0填充显示,如2 int(3)指定后就会显示为002
2.int 存储占4个字节, tinyint 存储占1个字节,存储长度决定了他们表示的数字范围不同。int表示的数字范围是:从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。tinyint 表示的范围是0-255之间的数字。
3.tinyint(1),和tinyint(3)没什么区别,存123都能存的下,而如果tinyint(3) zerofill 的话,插入值 12,会存储012,zerofill自动左边补零,这才是限制显示长度。
上面总结的有点乱。下面精简总结:
tinyint(1) 和 tinyint(3) 没什么区别,占用字节都是一位,存储范围都是一样的
tinyint(3) zerofill ,当插入的数据少于3位的时候,左边自动补零,这才是限制显示长度
int(1) 和 tinyint(1) ,够用的情况下,优先选择tinyint(1),因为占字节少、节省空间。
tinyint一个字节 smallint 两个字节 MEDIUMINT三个字节 int 4个字节 BIGINT 8个字节。
但是,varchar(5) 这里的5 限制的是储存字符的个数,字符不分贵贱(不分 中文、英文、数字...)。
相关推荐
MySQL数据库设计与优化是数据库管理中的重要环节,它关乎到系统的性能、稳定性和可扩展性。本讲座由叶金荣分享,主要涵盖了多个关键方面,包括规范、基础规范、命名规范、库表规范、字段规范、索引规范以及开发环境...
MYSQL数据库命名及设计规范是数据库设计的重要组成部分,它们决定了数据库的性能、扩展性和数据完整性。本文将详细介绍MYSQL数据库命名及设计规范的重要性和实现方法。 设计原则 MYSQL数据库设计的设计原则是遵守 ...
MySQL数据库是一种广泛应用于Web应用程序的关系型数据库管理系统(RDBMS),以其高效、稳定和易用性而备受青睐。本文将深入探讨MySQL的基本概念、特点、SQL数据类型以及约束机制。 一、基本概念 1. 数据库服务器:...
### MySQL 数据库设计实践 ...通过对MySQL数据库的设计实践进行深入探讨,我们可以更好地理解如何构建高效、稳定且易于维护的数据库系统。这不仅有助于提高数据处理能力,还能为用户提供更好的服务体验。
在PHP和MySQL数据库编程中,理解数据类型和MySQL常用命令是至关重要的。PHP是一种流行的服务器端脚本语言,常用于动态网页开发,而MySQL则是一个关系型数据库管理系统,两者结合可以构建高效的数据驱动应用程序。 ...
MySQL数据库是一种广泛使用的开源关系型数据库管理系统,以其高效、可靠和易于使用而闻名。这份“mysql数据库的学习资料”包含了深入理解和掌握MySQL所需的关键知识点。以下是对这些知识点的详细阐述: 1. **数据库...
MySQL数据库设计规范是确保数据库高效、稳定和易于维护的关键因素。以下是一些核心要点: **一、表设计规范** 1. **命名规范**:库名、表名、字段名应使用小写字母,并以下划线(_)分隔,如`db_name`、`table_name`...
作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。 表的字段类型 数值类型 表的字段类型 日期和时间类型 表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。 每个时间类型有...
- INT:整数类型,包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,用于存储整数值。 - VARCHAR:可变长度字符串,适用于存储长度不固定的文本。 - CHAR:固定长度字符串,存储长度固定的文本。 - FLOAT和DOUBLE:...
- 常见的数据类型有整型(TINYINT, INT, BIGINT)、浮点型(FLOAT, DOUBLE)、字符串型(CHAR, VARCHAR, TEXT)、日期和时间类型(DATE, DATETIME, TIMESTAMP)等。 4. **SQL语句基础**: - **DDL(Data ...
MySQL数据库设计技巧是数据库管理员和开发人员在构建高效、可靠且可扩展的数据库系统时必须掌握的核心技能。本文将深入探讨几个关键知识点,帮助你优化MySQL数据库的设计。 1. 正确选择数据类型:理解每种数据类型...
1. **LabVIEW MySQL驱动程序**:为了在LabVIEW中连接和操作MySQL数据库,首先需要安装支持MySQL的LabVIEW驱动程序,如“MySQL Database Toolkit”或“Database Connectivity Toolkit”。这些工具包提供了所需的接口...
MySQL数据库是一种广泛使用的开源关系型数据库管理系统,它具有丰富的功能和高效的性能。本教程主要涵盖了数据库管理系统的基本概念、MySQL 8.0的新特性、数据库体系结构、关系数据库的优缺点、MySQL服务的启动方法...
5. **数据类型**:MySQL支持多种数据类型,包括整数(INT, TINYINT等)、浮点数(FLOAT, DOUBLE)、字符串(VARCHAR, CHAR)、日期时间(DATE, DATETIME)等,选择合适的数据类型对于存储和处理数据至关重要。...
【MySQL数据库开发的36条原则】是一套实践总结出的数据库设计规范,旨在提高数据库性能、可维护性和稳定性。这些原则主要针对数据库开发者,强调了数据库设计的关键要素。 1. **尽量不在数据库做运算**:数据库的...
在PHP中,我们可以使用PDO(PHP Data Objects)或者mysqli扩展来连接和操作MySQL数据库。例如,插入新学生数据的PHP代码可能如下: ```php $servername = "localhost"; $username = "username"; $password = ...
MySQL数据库的命名与设计规范是构建高效、稳定和易于维护的数据库系统的关键。遵循这些标准可以确保数据的一致性、减少冗余,并提高系统的可扩展性。以下是关于MySQL数据库命名和设计的一些主要知识点: 1. **标准...
6. MySQL的binlog三种格式及区别:binlog用于记录MySQL数据库中所有对数据库进行修改的操作,包含statement、row和mixed三种格式。statement格式记录每一条会修改数据的SQL语句,row格式记录了每一行数据的改变,而...