Mysql的常用数据类型以及用途总结

数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则。在实际编程中,选择列的基本类型的时候,基本原则就是选择可以满足数据的最小类型。

① 字符串数据类型:分别为定长串和不定长串。

一. 定长串结束长度固定的字符,其长度是创建表是指定的,不允许多于指定的字符数据,它们分配的存储空间与指定的一样多,CHAR属于定长串类型。

二. 变长串存储长度可变的文本,有些变长数据类型具有最大的定长,而有些则是完全变长的,不管哪种只有指定的数据得到保存(不会添加额外的空格保存),TEXT属于变长串类型。

三.特点与比较:变长数据类型灵活,定长数据类型高效,Mysql处理定长数据类型比变长列快很多,Mysql不允许对变长列(或一个列的可变部分)进行索引,这会极大影响性能。

数据类型 说明 主要用途
Char 1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR(1) Char(n=1~255)

char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。

主要用于标题,作者等数据量小的数据类型
Varchar 可变长度,最多不超过255字节,如在创建时指定VARCHAR(n),则可存储0~n个字符的变长串。

存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这一个字节用于保存实际使用了多大的长度。

从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

主要用于不确定的长度,例如:路径,文章内容(Varchar(800))等
text 最大长度为64K的变长文本 常规大小的Text字段。 文章内容
TINYTEXT 同TEXT,最大长度为255字节  
MEDUIMTEXT 同TEXT,最大长度为16K  
LONGTEXT 同Text,最大长度为4GB(纯文本,一般不会到4G)  
Blob text 区分大小写,二blob不区分,其他相同。 二进制类型可存储任何数据,如文字、图像、多媒体等。还包括TITYBLOB,MEDIUMBLOB,LongBlob
两种特殊类型    
ENUM 接受最多64K个串组成的预定义集合的某个串 枚举,该类型的列只可以容纳所列值之一或者为null
SET 接受最多64K个串组成的预定义集合的零个或多个串 指定列中的值必须来自一个特定的集合中的指定值,例如:set(‘c‘, ‘h‘, ‘p‘, ‘f‘, ‘s‘, ‘j‘, ‘a‘, ‘b‘) dede的首页推荐 热门设置

注意:不管任何形式的串数据类型,串值都必须在引号内(通常单引号更好);如果数值是计算中使用的数值,则应存储在数值数据类型列中,如果作为字符串使用(如电话号码、邮政编码)则应保存在串数据类型列中。

② 数值类型:整型和浮点型

存储数值,每种类型具有不同的存储范围,支持取值范围越大,所需存储空间越多。所有数值类型(除BIT和Boolean外)都可以有符号或无符号,有符号数据列可存储正或负的数值,默认情况为有符号。

一.整数数据类型

数据类型 取值范围 存储空间 描述 主要用途
tinyint[(m)]
有符号值:-128 到127(- 2^7 到2^7 – 1)

无符号值:0到255(0 到2^8 – 1)

1字节 非常小的整数 人员年龄或兄弟姐妹数,则tinyint最合适
smallint[(m)]
有符号值:-32768 到32767(- 2^15 到2^15 – 1)

无符号值:0到65535(0 到21 6 – 1)

2字节 小型整数

用于分类id,栏目smallint(5)

mediumint[(m)]
有符号值:-8388608 到8388607(- 2^23 到2^23 – 1 )

无符号值:0到16777215(0 到2^24 – 1)

3字节 中型整数

【适用于文章id 】mediumint能够表示数百万的值并且可用于更多类型的值,但存储代价较大

int[(m)]
有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1)

无符号值:0到4294967295(0 到2^32 – 1)

4字节 一般整数

适用于日期

pubdate int(10)
bigint[(m)]
有符号值:-9223372036854775808 到9223373036854775807(- 2^63到2^63-1)

无符号值:0到18446744073709551615(0到2^64 – 1)

8字节 大型整数  

二.浮点数据类型

数据类型 取值范围 存储空间 描述 主要用途
float
取决于精度

可变 用于指定单精度或双精度浮点数 double占用float的两倍空间。除非特别需要高精度或范围极大的值,一般应使用只用一半存储代价的float型来表示数据。
float[(m, d)]
最小非零值:±1.175494351e – 38

4字节 单精度浮点数 等同于Float(4),但是指定显示宽度和小数点位数
double[(m, d)]
最小非零值:±2.2250738585072014e – 308

8字节 双精度浮点数

等同于Float(8),但是指定显示宽度和小数点位数

decimal (m, d)
有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1)

无符号值:0到4294967295(0 到2^32 – 1)

4字节 一般整数

适用于日期

pubdate int(10)
bigint[(m)]
m字节(mysql < 3.23),m+2字节(mysql > 3.23 )

M+2 可变;其值的范围依赖于m 和d

浮点数,以char存储,范围取决于显示宽度M

③ 日期和时间数据类型


数据类型


存储字节数


取值范围


描述


DATE


4


1000-01-01——9999-12-31


以YYYY-MM-DD格式来显示,如果我们想插入当前系统的时间,则可以插入CURRENT_DATE或者NOW()。


TIME


3


-838:59:59——838:59:59


尽管小时范围一般是0~23,但是为了表示某些特殊时间间隔,MySQL将TIME的小时范围扩发了,而且支持负值。对TIME类型赋值,标准格式是‘HH:MM:SS‘,但不一定非要是这种格式。

如果插入的是‘D HH:MM:SS‘格式,则类似插入了‘(D*24+HH):MM:SS‘。比如插入‘2 23:50:50‘,相当于插入了‘71:50:50‘。如果插入的是‘HH:MM‘或‘SS‘格式,则效果是其他未被表示位的值赋为零值。比如插入 ‘30‘,相当于插入了‘00:00:30‘;如果插入‘11:25‘,相当于插入了‘11:25:00‘。在MySQl中,对于‘HHMMSS‘格式, 系统能够自动转化为标准格式。


DATETIME


8


1000-01-01 00:00:00——9999-12-31 23:59:59


以YYYY-MM-DD HH:MM:SS格式来显示


TIMESTAMP


4


19700101080001——20380119111407


TIMESTAMP的取值范围比较小,没有DATETIME的取值范围大,因此输入值时一定要保证在TIMESTAMP的范围之内。它的插入也与插入其他 日期和时间数据类型类似。那么TIMESTAMP类型如何插入当前时间?第一,可以使用CURRENT_TIMESTAMP;第二,输入NULL,系统自 动输入当前的TIMESTAMP;第三,无任何输入,系统自动输入当前的TIMESTAMP。 另外有很特殊的一点:TIMESTAMP的数值是与时区相关。


YEAR


1


1901——2155


给YEAR类型复制可以有三种方法: 第一种是直接插入4位字符串或者4位数字; 第二种是插入2位字符串,这种情况下如果插入‘00‘~‘69‘,则相当于插入2000~2069;如果插入‘70‘~‘99‘,则相当于插入 1970~1999。第二种情况下插入的如果是‘0‘,则与插入‘00‘效果相同,都是表示2000年; 第三种是插入2位数字,它与第二种(插入两位字符串)不同之处仅在于:如果插入的是一位数字0,则表示的是0000,而不是2000年。所以在给YEAR 类型赋值时,一定要分清0和‘0‘,虽然两者相差个引号,但实际效果确实相差了2000年。

Mysql的常用数据类型以及用途总结

时间: 2024-08-07 04:31:02

Mysql的常用数据类型以及用途总结的相关文章

Mysql 之常用数据类型

数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则.Mysql的常用数据类型主要有: 串数据类型:最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串.定长串结束长度固定的字符,其长度是创建表是指定的,不允许多于指定的字符数据,它们分配的存储空间与指定的一样多,CHAR属于定长串类型.变长串存储长度可变的文本,有些变长数据类型具有最大的定长,而有些则是完全变长的,不管哪种只有指定的数据得到保存(不会添加额外的空格保存),TEXT属于变长串类型.变长数据类型灵活,定长数据类

Mysql学习笔记之常用数据类型 (转)

http://www.cnblogs.com/doit8791/archive/2012/05/11/2495319.html 数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则.Mysql的常用数据类型主要有: 串数据类型:最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串.定长串结束长 度固定的字符,其长度是创建表是指定的,不允许多于指定的字符数据,它们分配的存储空间与指定的一样多,CHAR属于定长串类型.变长串存储长度可变的文 本,有些变长数据类型具有最大的定长,

Mysql学习笔记之常用数据类型

数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则.Mysql的常用数据类型主要有: 串数据类型:最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串.定长串结束长度固定的字符,其长度是创建表是指定的,不允许多于指定的字符数据,它们分配的存储空间与指定的一样多,CHAR属于定长串类型.变长串存储长度可变的文本,有些变长数据类型具有最大的定长,而有些则是完全变长的,不管哪种只有指定的数据得到保存(不会添加额外的空格保存),TEXT属于变长串类型.变长数据类型灵活,定长数据类

MySQL约束和数据类型

约束条件 约束条件就是在给字段加一些约束,使该字段存储的值更加符合我们的预期. 常用约束条件如下: UNSIGNED :无符号,值从0开始,无负数 ZEROFILL:零填充,当数据的显示长度不够的时候,在数据前使用0填充至指定长度,字段会自动添加UNSIGNED NOT NULL:非空约束,表示该字段的值不能为空 DEFAULT:表示如果插入数据时没有给该字段赋值,那么就使用默认值 PRIMARY KEY:主键约束,表示唯一标识,不能为空,且一个表只能有一个主键.一般都是用来约束id AUTO_

Mysql常用数据类型归纳总结1

一直在用Mysql数据库,Mysql的数据类型也最常打交道的.但关于Mysql的一些常用数据类型了解程度仅限于一知半解,仅仅能满足满足于平时一些最简单的操作.而Mysql常用数据类型的定义以及规范理解的并不是特别的透彻,自己对于这些东西的理解有许多也是出于想当然,经不起推敲和较真.故有此文,帮助自己总结归纳,并加深理解. 整数型:TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 小数型:FLOAT, DOUBLE, DOUBLE, DECIMAL, REAL 字

百万年薪python之路 -- MySQL数据库之 常用数据类型

MySQL常用数据类型 一. 常用数据类型概览 # 1. 数字: 整型: tinyint int bigint 小数: float: 在位数比较短的情况下不精确 double: 在位数比较长的情况下不精确 0.000001230123123123 存成: 0.000001230000 decimal: (如果用小数,则推荐使用decimal) 精准 内部原理是以字符串形式去存 # 2. 字符串: char(10): 简单粗暴,浪费空间,存取速度快. root存成root000000 varcha

MySQL常用数据类型 length 专题

MySQL-data_type数据类型 1.查看数据类型 mysql> help data type    //通过help对数据进行查看,以及使用的方法 2.MySQL常见的数据类型 整数int.定点小数dec.浮点数float.字符串varchar.时间-时区.布尔bool.位 前言======================================== 在MySQL数据库中,进行数据存储时,难免会出现数据类型转换,其中就包括:隐式类型转换.显示类型转换 1.隐式类型转换:有害.无害

MYSQL数据库常用知识整理

Evernote Export MYSQL数据库常用知识整理 什么是MYSQL MYSQL的特性 MYSQL存储引擎的分类以及数据文件的介绍 MYSQL赋权 MYSQL备份与恢复 MYSQL的基本操作:增删查改 MYSQL的基本故障判断与处理 MYSQL的调优 MYSQL主主.主从复制的实现 MYSQL大数据备份和恢复 数据文件的损坏与修复 什么是MYSQL MySQL 是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被广泛地应用在Internet上的中

表操作和mysql支持的数据类型

表操作 表的基本操作 前提:先选取要操作的数据库 1)进入指定库 mysql>:use db1; 2)确定当前使用的数据库 mysql>:select database(); 3)查看当前数据库已有表 mysql>:show tables; 4)增加,创建表(字段1 类型, ..., 字段n 类型) mysql>:create table 表名(字段们); eg>: create table student(name char(16), age int); eg>: c