一、数据类型

日期和时间数据类型

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. scrapydweb的初步使用(管理分布式爬虫)

    https://github.com/my8100/files/blob/master/scrapydweb/README_CN.md 一.安装配置 1.请先确保所有主机都已经安装和启动 Scrapy ...

  2. 神器cut基因剪

    cut cut 不就是切嘛,没错就是它--我给他起了一个外号基因剪刀 来我们学一下怎么使用这个命令 cut --help [root@ESProbe ~]# cut --help Usage: cut ...

  3. 数据库-第三章 关系数据库标准语言SQL-3.3 数据查询

    数据查询 例: 一.单表查询 1.定义 是指仅涉及一个表的查询 2.选择表中的若干列 查询指定列 例: 查询全部列 例: 查询经过计算的值 例: 3.选择表中的若干元组 消除取值重复的行 例: 查询满 ...

  4. 「 Offer收割机之JVM」:生存还是毁灭

    这两天,广州的天气又开始热了起来,又到了小动物交配的季节,啊呸,又到了一个收割 offer 的季节.年底将至,又到了面试的高峰期,JVM 作为Java 程序员面试绕不过的一道坎儿,它又来了,你准备好了 ...

  5. Python进制的转换

    Python整数能够以十六进制,八进制和二进制来编写,作为一般以10位基数的十进制计数法的补充. 一: 上面三种进制的常用表示  >>> 0o1, 0o20, 0o377 # 八进制 ...

  6. tarjan算法强连通分量的正确性解释+错误更新方法的解释!!!+hdu1269

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 以下内容为原创,转载请声明. 强连通分量SCC(Strongly Connected Compo ...

  7. 干货|漫画算法:LRU从实现到应用层层剖析(第一讲)

    今天为大家分享很出名的LRU算法,第一讲共包括4节. LRU概述 LRU使用 LRU实现 Redis近LRU概述 第一部分:LRU概述 LRU是Least Recently Used的缩写,译为最近最 ...

  8. Redis学习笔记2-redis管道(pipeline)

    redis的管道(Pipelining)操作是一种异步的访问模式,一次发送多个指令,不同步等待其返回结果.这样可以取得非常好的执行效率.这就是管道,调用方法如下: 来源:http://blog.csd ...

  9. SpringBoot 集成ehcache

    1, 项目实在springboot 集成mybatis 的基础上的: https://www.cnblogs.com/pickKnow/p/11189729.html 2,pom 如下,有的不需要加, ...

  10. nodejs使用express中静态资源托管(express.static())时遇到的bug

    如下:将test.html的页面挂载在服务器上, const express= require('express') const fs= require('fs') let app = express ...