MySQL入门,第二部分,必备基础知识点
一、数据类型
日期和时间数据类型 |
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入门,第二部分,必备基础知识点的更多相关文章
- MySQL入门(1)——基础操作
MySQL入门(1)--基础操作 创建数据库 创建基本数据库: create database db_admin; 创建基本数据库(等价于CREATE DATABASE): create schema ...
- java必备基础知识点
Java基础 1. 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等 2. 简单写出 ...
- MySQL入门第二天——记录操作与连接查询
常见SQL语法,请参见w3school:http://www.w3school.com.cn/sql/sql_distinct.asp 易百教程:http://www.yiibai.com/sql/f ...
- Python快速编程入门,打牢基础必须知道的11个知识点 !
Python被誉为全世界高效的编程语言,同时也被称作是“胶水语言”,那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. Python 简介 ...
- Python爬虫入门有哪些基础知识点
1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...
- Java入门基础知识点总结(详细篇)
Java入门基础知识点总结(详细篇)~~~~~目录 1.1 图解 1.1.1 Java基础知识点 1.1.2 Java基础语法的相关内容 1.2 关键字 1.3 标识符 1.3.1 标识符概念 1.3 ...
- 第二章 MySQL入门篇
第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...
- vue入门基础知识点测试
vue入门基础知识点测试 1.文本(值绑定){{var}}----控制<div></div>的值显示当前时间,且1秒更新一次.(可查阅 setinterval 函数,时间Dat ...
- 整合SSM框架必备基础—SpringMVC(下)
在上一篇文章<整合SSM框架必备基础-SpringMVC(上)>中,胖达介绍了关于SpringMVC的诞生.优势以及执行流程等理论知识点,这篇文章打算在实操中加深一下对SpringMVC的 ...
随机推荐
- 为什么vue中的data用return返回呢?
不使用return包裹的数据会在项目的全局可见,会造成变量污染:使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件. 当一个组件被定义, data 必须声明为返回一个初始数据对象的函 ...
- go入门二
一.流程控制 1.选择结构 if-else: package main import ( "io/ioutil" "fmt" ) func main(){ co ...
- 数据挖掘算法——K-means算法
k-means中文称为K均值聚类算法,在1967年就被提出 所谓聚类就是将物理或者抽象对象的集合分组成为由类似的对象组成的多个簇的过程 聚类生成的组成为簇 簇内部任意两个对象之间具有较高的相似度,不 ...
- 数据库事务ACID详解(转载)
转载自:http://blog.csdn.net/shuaihj/article/details/14163713 谈谈数据库的ACID 一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行 ...
- EPX Studio开发平台简介
大家问我最多的问题就是“EPX 是什么?”“EPX 能够用来做什么?”“EPX 有什么优势?”“EPX 与其它开发平台的区别是什么?” 问题林林总总,总也回答不完,希望通过正文前面的这段文字,来简要回 ...
- 《Python学习手册 第五版》 -第17章 作用域
上一章的是函数的基础,因为函数在运用过程中,是可以嵌套的,函数中是会涉及到变量的,为了明确各自变量的使用范围,系统是有一套规则或者原则的,这就是作用域的概念 本章重点内容 1.作用域:作用域的概念 2 ...
- nested exception is java.lang.StackOverflowError解析
背景介绍: 项目是微服务的,使用docker容器,使用jenkins部署.测试环境有个公共服务一直以来都能正常发布,突然有一天不行了,经常发布失败,然后多发布几次就好了. 报错如下: 是栈溢出了,一般 ...
- Eclipse新建项目介绍
最近在用Eclipse,对于一个新手来说,新建项目时出现五花八门的名字,该选择哪个进行创建呢?今天小编抱着学习的态度,顺便整理分享给大家. 选择File->New->Project... ...
- angular自启动过程
angularJS的源代码整体上来说是一个自执行函数,在angularJS加载完成后,就会自动执行了. 即,在window上暴露一个唯一的全局对象angular, 如果window.angular已经 ...
- MySQL----DML(增删改表中数据)
##DML:增删改表中的数据 1.添加数据 *语法: * insert into 表名(列名1,列名2,...列名n) values (值1,值2,...值n); *注意: 1.列名和值要一一对应. ...