数据库 之 数据类型 介绍

1  概述

数据类型

.数据长什么样?

.数据需要多少空间来存放?如整数有不同的类型,存储的空间不一样

.系统内置数据类型和用户定义数据类型

.MySql支持多种列类型:(内置数据类型)

.数值类型

.日期/时间类型

.字符串(字符)类型

.选择正确的数据类型对于获得高性能至关重要,三大原则:

.更小的通常更好,尽量使用可正确存储数据的最小数据类型,原则是够用就好

.简单就好,简单数据类型的操作通常需要更少的CPU周期,复杂的话会消耗额外的资源

.尽量避免NULL,如果包含为NULL的列,对MySQL更难优化

2 数据类型

1  整型

.tinyint(m)  1个字节范围(-128~127)

.smallint(m)2个字节范围(-32768~32767)

.mediumint(m)3个字节范围(-8388608~8388607)

.int(m)4个字节范围(-2147483648~2147483647)

.bigint(m)8个字节范围(+-9.22*10的18次方)

取值范围如果加了unsigned,那么最大值就会翻倍,如tinyint  unsigned的取值范围为(0~255),表示正整数

int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,

在int(M)中,M的值跟int(M)所占多少存储空间并无任何关系。int(3)、int(4)、int(8)在磁盘上都是占用4 btyes的存储空间。说白了,除了显示给用户的方式有点不同外,int(M)跟int数据类型是相同的。

“(M)”指定了int型数值显示的宽度,如果字段数据类型是int(4),则:当显示数值10时,在左边要补上“00”;当显示数值100是,在左边要补上“0”;当显示数值1000000时,已经超过了指定宽度“(4)”,因此按原样输出。

MySQL可以为整型类型指定宽度(这里是表示显示的宽度),例如Int(11),对绝大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了MySQL的一些交互工具(例如MySQL命令行客户端)用来显示字符的个数。对于存储和计算来说,Int(1)和Int(20)是相同的

2  浮点型(float和double),近似值

.float(m,d)单精度浮点型8位精度(4字节) m总个数(88.66,则m为4个数,d为2为小数),d小数位

.double(m,d)双精度浮点型16位精度(8字节) m总个数,d小数位

.设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位

这里和awk不一样,awk把小数点也算作一位,但是这里定义的小数,小数点不算一位数。

3  定点数

.在数据库中存放的是精确值,存为十进制

.decimal(m,d)参数m<65是总个数,d<30且d

.MySQL5.0和更高版本将数字打包保存到一个二进制字符串中(每4个字节存9个数字)。例如,decimal(18,9)小数点两边将各存储9个数字,一共使用9个字节:小数点前的数字用4个字节,小数点后的数字用4个字节,小数点本身占1个字节

定点数一般用来存放财务数据

.浮点类型在存储同样范围的值时,通常比decimal使用更少的

空间。float使用4个字节存储。double占用8个字节

.因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时才使用decimal——例如存储财务数据。但在数据量比较大的时候,可以考虑使bigint代替decimal

4  字符串(char,varchar,_text)

.char(n)固定长度,最多255个字符,如定义20字节,允许短,如实际只有3字节,但是实际在内存或磁盘中存储占用20个字节

.varchar(n)可变长度,最多65535个字符,根据实际位数暂用空间

.tinytext可变长度,最多255个字符

.text可变长度,最多65535个字符

.mediumtext可变长度,最多2的24次方-1个字符

.longtext可变长度,最多2的32次方-1个字符

.BINARY(M)固定长度,可存二进制或字符,允许长度为0-M字节,

.VARBINARY(M)可变长度,可存二进制或字符,允许长度为0-M字节,如存储图片或二进制内容

.内建类型:ENUM枚举, SET集合

.char和varchar:

.1.char(n)若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。

.2.char(n)固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(最后可能有一个结束符字符)(n< n>255),所以varchar(4),只存入3个字符也将占用4个字节。

.3.char类型的字符串检索速度要比varchar类型的快

.varchar和text:

.1.varchar可指定n,text不能指定,内部存储varchar是存入的实

际字符数+1个字节(n< n>255),text是实际字符数+2个字节。

.2.text类型不能有默认值

.3.varchar可直接创建索引,text创建索引要指定前多少个字符。

varchar查询速度快于text

除非是写一篇文章或者小短文,考虑用text,如果是普通的字符串,就直接用varchar就可以

5  二进制数据:BLOB

.BLOB和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写

.BLOB存储的数据只能整体读出

.TEXT可以指定字符集,BLOB不用指定字符集

6  日期时间类型

.date日期'2008-12-2'

.time时间'12:25:36'

.datetime日期时间'2008-12-222:06:44'

.timestamp自动存储记录修改时间,时间戳,只要表里的任意字段被改动,这个时间戳就会自动变化,这里的日期格式是和datetime一样,如日期时间'2008-12-222:06:44'

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,这个数据类型的字段可以存放这条记录最后被修改的时间

例子如下

创建一张表

如下

create table datetb (idint(3) not null,t1 date not null,t2 time not null,t3 datetime,t4timestamp,primary key (id));

往表里插入一条记录,如下

insert into datetb values(1,"2017-09-09","12:53:12","2017-09-0910:10:08","2017-09-09 10:10:09");

修改记录t2的值如下

update datetb sett2="01:02:03" where id=1;

实验结果是,timestamp这个字段t4的值会自动变更为当前系统的时间

.YEAR(2), YEAR(4):年份

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容