一、数据类型

日期和时间数据类型

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

两个字节

两个字节

MySQL入门,第二部分,必备基础知识点的更多相关文章

  1. MySQL入门(1)——基础操作

    MySQL入门(1)--基础操作 创建数据库 创建基本数据库: create database db_admin; 创建基本数据库(等价于CREATE DATABASE): create schema ...

  2. java必备基础知识点

    Java基础 1. 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等 2. 简单写出 ...

  3. MySQL入门第二天——记录操作与连接查询

    常见SQL语法,请参见w3school:http://www.w3school.com.cn/sql/sql_distinct.asp 易百教程:http://www.yiibai.com/sql/f ...

  4. Python快速编程入门,打牢基础必须知道的11个知识点 !

    Python被誉为全世界高效的编程语言,同时也被称作是“胶水语言”,那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. Python 简介 ...

  5. Python爬虫入门有哪些基础知识点

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

  6. Java入门基础知识点总结(详细篇)

    Java入门基础知识点总结(详细篇)~~~~~目录 1.1 图解 1.1.1 Java基础知识点 1.1.2 Java基础语法的相关内容 1.2 关键字 1.3 标识符 1.3.1 标识符概念 1.3 ...

  7. 第二章 MySQL入门篇

    第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...

  8. vue入门基础知识点测试

    vue入门基础知识点测试 1.文本(值绑定){{var}}----控制<div></div>的值显示当前时间,且1秒更新一次.(可查阅 setinterval 函数,时间Dat ...

  9. 整合SSM框架必备基础—SpringMVC(下)

    在上一篇文章<整合SSM框架必备基础-SpringMVC(上)>中,胖达介绍了关于SpringMVC的诞生.优势以及执行流程等理论知识点,这篇文章打算在实操中加深一下对SpringMVC的 ...

随机推荐

  1. 谈谈SQL优化

    写SQL是学习数据库必须掌握的非常重要的技能之一.在学习过程当中,我们会尝试写各种各样满足需求的SQL语句.在实际项目中,优秀的SQL语句和普通的SQL语句的执行速度差别非常大.对于一个数据量很大的系 ...

  2. XiaoQi.Study项目(二)

    一.EF Core 使用的补充 1) 创建 接口 IEFCoreService 2)   实现 接口 EFCoreService 3) 在Startup.cs 中注册 ef 服务 并在控制器中注入使用 ...

  3. 深入理解requestAnimationFrame并实现相册组件中的切换动画

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/12529885.html,多谢,=.=~ (如果对你有帮助的话请帮我点个赞啦) 通常情况下,我们利 ...

  4. Altium Designer 20下载与安装教程

    目录 一.Altium Designer 20下载 二.Altium Designer 20安装 三.Altium Designer 20破解 四.Altium Designer 20汉化 作者:st ...

  5. Linux进程间通信-eventfd

    Linux进程间通信-eventfd eventfd是linux 2.6.22后系统提供的一个轻量级的进程间通信的系统调用,eventfd通过一个进程间共享的64位计数器完成进程间通信,这个计数器由在 ...

  6. 2016 Multi-University Training Contest 1 T4

    http://acm.hdu.edu.cn/showproblem.php?pid=5726 求不修改区间gcd可以用线段树或者倍增. 求l-n的我们注意观察gcd(a​l​​,a​l+1​​,... ...

  7. webpack,Babel,babel-loader的关系

    本文将要介绍 webpack,Babel,babel-loader 的关系.理清楚他们各自做了什么事情. 通常我们新建一个项目,会先配置webpack,然后配置babel:babel是一个编译工具,实 ...

  8. drf 权限认证

    目录 复习 前期准备 三大认证简介 AbstracUser源码分析 自定义User下的权限六表 models.py 到settings.py中注册 注意点: 执行数据迁移的俩条命令 创建超级用户 t_ ...

  9. 玩转控件:对Dev中GridControl控件的封装和扩展

    又是一年清明节至,细雨绵绵犹如泪光,树叶随风摆动.... 转眼间,一年又过去了三分之一,疫情的严峻让不少企业就跟清明时节的树叶一样,摇摇欲坠.裁员的裁员,降薪的降薪,996的996~~说起来都是泪,以 ...

  10. TensorFlow v2.0实现Word2Vec算法

    使用TensorFlow v2.0实现Word2Vec算法计算单词的向量表示,这个例子是使用一小部分维基百科文章来训练的. 更多信息请查看论文: Mikolov, Tomas et al. " ...