一、数据类型

日期和时间数据类型

date

字节

日期,格式:2014-09-18

日期和时间数据类型

time

字节

时间,格式:08:42:30

日期和时间数据类型

datetime

字节

日期时间,格式:2014-09-18 08:42:30

日期和时间数据类型

timestamp

字节

自动存储记录修改的时间,格式:2009-09-18 08:42:30

日期和时间数据类型

year

字节

年份, 格式:2009

数值数据类型

整型

tinyint

字节

有符号范围(-128~127),无符号(0~255)

数值数据类型

整型

smallint

字节

有符号范围(-32768~32767),无符号(0~65535)

数值数据类型

整型

mediumint

字节

有符号范围(-8388608~8388607),无符号(0~16777215)

数值数据类型

整型

Int(integer)

字节

有符号范围 (-2147483648~2147483647),

无符号(0~4294967295)

数值数据类型

整型

bigint

字节

有符号范围(-9223372036854775807~

),

无符号(0~18446744073709551615)

数值数据类型

浮点型

float(m, d)

字节

单精度浮点型,m总个数,d小数位

单精度实数在内存中占32bit 有效数字为6~7位

数值数据类型

浮点型

numeric(m,d)

字节

m总个数,d小数位

数值数据类型

浮点型

double(m, d)

字节

双精度浮点型,m总个数,d小数位

双精度实数占内存单元为64bit 有效数字为15~16位

数值数据类型

浮点型

decimal(m, d)

decimal是存储为字符串的浮点数

字符串数据类型

char(n)

字节

固定长度

每个汉字3字节

字符串数据类型

varchar(n)

65535字节

5.0以上版本

可变长度

每个汉字3字节

varchar起始位和结束位占去了3个字节

varchar会使用1-3个字节来存储长度

varchar性能略逊char,当长度变化的时候,要重新分配内存

字符串数据类型

tinytext

字节

可变长度

字符串数据类型

text

字节

可变长度

存储的时候不会截断尾部的空格

text不会使用1-3个字节来存储长度

text没有默认值

字符串数据类型

mediumtext

16M

可变长度

字符串数据类型

longtext

4G

可变长度

字符串数据类型

二进制形式

TinyBlob

字节

可变长度

字符串数据类型

二进制形式

blob

字节

可变长度

字符串数据类型

二进制形式

mediumblob

16M

可变长度

字符串数据类型

二进制形式

longblob  

4G

可变长度

其它类型

enum(“1″, “2″)

不同的枚举值

enum数据类型就是定义了一种枚举,最多包含65535个不同的成员。

当定义了一个enum的列时,该列的值限制为列定义中声明的值。

如果列声明包含NULL属性,则NULL将被认为是一个有效值,并且是默认值。如果声明了NOT NULL,则列表的第一个成员是默认值。

其它类型

set(“1”, “2″,)

不同的值

set数据类型为指定一组预定义值中的零个或多个值提供了一种方法,这组值最多包括64个成员。

值的选择限制为列定义中声明的值。

二、数据库中的一些基本概念

数据库:按照数据结构来组织、存储和管理数据的仓库”

表:一个关系对应通常说的一张表。把数据库表示为关系的集合,每一个关系类似于一张二维表

属性:就是关系中各列,一列即为一个属性

关系:一个关系对应通常说的一张表。把数据库表示为关系的集合,每一个关系类似于一张二维表

元组:在表中,除了关系的标题栏以外,其它各行统称为“元组”

分量:元组的各个属性在该元组上的取值

关系的模式:关系名和关系的属性集称为关系的“模式”

域:每个属性有一个允许的值的集合,称为该属性的“域”,指定的域通常是一个特定的基本类型

超码(键)(super key):一个或者多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个实体

候选(键)码(candidate key):最小超码,它们的任意真子集都不能成为超码。即任意真子集都不能成为超码的最小超码

主属性:包含在任何一个候选键中的属性

非主属性:不包含在任何一个候选键中的属性

主(键)码(primary key):数据库设计人员选定的,用于唯一标识该关系元组的一个候选码;每一个关系有并且只有一主码,通常用较小的属性组合作为主键

外(键)码:表中的一个(或多个)属性,它引用某个其他表(特殊情况下,也可以是外键所在的表)的主键,当然,也可以是候选键,但多数情况下是主键

三、关系型数据库的特征

1.关系必须是规范化的,满足一定的规范条件最基本的规范条件:关系的每一个分量必须是一个不可分的数据项

2.关系模型的完整性约束

实体完整性:指一个表中的每一行必须是唯一的,即实体是可以唯一区分的 。若属性A是基本关系R的主键,则属性A不能取空值,另外不能存在属性A上分量相同的元组

参照完整性:在关系数据库中用外键(foreign key,或外码)来实现参照完整性

用户定义的完整性:此规则是针对某一应用环境的完整性约束条件,他反映了某一具体应用所涉及的数据应满足的要求。在实际系统中,这类完整性规则一般在建立库表的同时进行定义

3.关系数据库的数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合

四、关系模型的优缺点

优点

1.建立在严格的数学概念的基础上

2.概念单一。数据结构简单、清晰,用户易懂易用;实体和各类联系都用关系来表示。对数据的检索结果也是关系。

3.关系模型的存取路径对用户透明;具有更高的数据独立性,更好的安全保密性;简化了程序员的工作和数据库开发建立的工作

缺点

1.存取路径对用户透明导致查询效率往往不如非关系数据模型

2.为提高性能,必须对用户的查询请求进行优化增加了开发数据库管理系统的难度

五、MySQL数据库存储引擎

1.什么是存储引擎

存储引擎是数据库管理系统用来从数据库创建、读取和更新数据的软件模块。在5.5版本之前MySQL的默认存储引擎是MyISAM,不支持事务处理等。在5.5及更高版本之后,默认存储引擎是InnoDB,支持锁、事务处理等机制

2.MySQL默认存储引擎InnoDB

(1)结构特点

InnoDB 可以采用独立表空间来存储用户数据库,每一个表(关系)的存储文件有两种:

①.frm 是存储表的定义信息的文件

②.ibd 是表的数据和索引的文件

(2)共享表空间

InnoDB 采用共享表空间来存储系统的数据字典、临时表、事务状态等。系统的共享表空间对应于磁盘文件 idbdata1。对应的数据库是 information_schema

DBA可以通过修改配置文件、特权命令等多种办法对MySQL服务器进行包括共享表空间在内的管理,保证系统顺利运行

六、MySQL中的数据类型

1.整型

2.浮点数

类型

大小

范围(有符号)

范围(无符号)

用途

FLOAT

4 字节

(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度

浮点数值

DOUBLE

8 字节

(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度

浮点数值

3.十进制

类型

占用空间大小

范围(有符号)

范围(无符号)

用途

DECIMAL

对于DECIMAL(M,D) ,占用M+2个字节

依赖于M和D的值

依赖于M和D的值

M的有效范围

[1,65];

D的有效范围

[0,30],且 D<M 。

固定精度的十进制数

例如:

amount DECIMAL(6,2);

表示 名为amount的列最多可以存储6位数字,其中小数位数为2位; 因此,amount列的范围是从-9999.99到9999.99

4.文本类型

类型

大小

用途

CHAR

0-255字节

定长字符串

VARCHAR

0-65535 字节

变长字符串

TINYTEXT

0-255字节

短文本字符串

TEXT

0-65 535字节

长文本数据

MEDIUMTEXT

0-16 777 215字节

中等长度文本数据

LONGTEXT

0-4 294 967 295字节

极大文本数据

注意事项:

①varchar每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)

②按照查询速度: char最快,varchar次之,text最慢

③char(n),varchar(m),数字n,m表示字符数,不是字节数

5.二进制文本类型

类型名称 说明 存储需求
BIT(M) 位字段类型 大约 (M+7)/8 字节
BINARY(M) 固定长度二进制字符串 M 字节
VARBINARY (M) 可变长度二进制字符串 M+1 字节
TINYBLOB (M) 非常小的BLOB L+1 字节,在此,L<2^8
BLOB (M) 小 BLOB L+2 字节,在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字节,在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字节,在此,L<2^32

注意:

①二进制文本类型存储时不编码,直接以二进制进行存储(即01)

②Mysql的InnoDB存储引擎,对值比较大的BLOB与TEXT,使用专门的“外部”存储区域来进行存储。此时每个值在行内会采用1~4个字节存储指针,指向在外部存储区域存储的实际值。数据超大时,会在磁盘存储临时表,导致整体速度下降

6.其他常用数据类型

类型

大小
(字节)

范围

格式

用途

DATE

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

'-838:59:59'/'838:59:59'

HH:MM:SS

时间值或持续时间

YEAR

1901/2155

YYYY

年份值

DATETIME

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

YYYY-MM-DD HH:MM:SS

混合日期和时间值

TIMESTAMP

1970-01-01 00:00:00/2038

日 凌晨 03:14:07

YYYYMMDD HHMMSS

混合日期和时间值,时间戳

七、常见编码占用存储空间大小

编码

英文字符

汉字(含繁体)

ASCII

一个字节

两个字节

UTF-8

一个字节

三个字节

Unicode

两个字节

两个字节

最新文章

  1. Go - 数组 和 切片(array、slice)
  2. [学习笔记]四边形不等式优化DP
  3. Eclipse新增Web项目
  4. 第十三课:js操作节点的创建
  5. postgresql downgrade issue
  6. android refbase类
  7. UVa 10837 (欧拉函数 搜索) A Research Problem
  8. tomcat 虚拟目录与显示目录中文件列表
  9. Unicode 编码解码
  10. html-----020----事件
  11. svn2git使用小记
  12. POJ 1258-Agri-Net (Kruskal)
  13. box2d 已知bug
  14. MYSQL 主从复制---原理
  15. Matlab绘图基础——绘制向量图,二维三维(绘制参数曲线图)
  16. 通过模拟JDK中的动态代理,由浅入深讲解动态代理思想.
  17. PHP7.* AES的加密解密
  18. C#语言struct结构体适用场景和注意事项
  19. 浅谈AngularJS中的指令和指令间的相互通信
  20. Flutter常用组件(Widget)解析-Scaffold

热门文章

  1. Vue2.0 【第四季】第1节 实例入门-实例属性
  2. 一键配置openstack-cata版的在线yum源
  3. 通过CGAL将一个多边形剖分成Delaunay三角网
  4. 通过locust进行性能测试
  5. Android微信逆向--实现发朋友圈动态
  6. hdu3038加权(扩展)并查集
  7. Ruby使用记录
  8. 蓝桥杯——一步之遥,扩展gcd的应用
  9. 最通俗易懂的 HashMap 源码分析解读
  10. c#委托、泛型委托和匿名方法