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的 ...
随机推荐
- scrapydweb的初步使用(管理分布式爬虫)
https://github.com/my8100/files/blob/master/scrapydweb/README_CN.md 一.安装配置 1.请先确保所有主机都已经安装和启动 Scrapy ...
- 神器cut基因剪
cut cut 不就是切嘛,没错就是它--我给他起了一个外号基因剪刀 来我们学一下怎么使用这个命令 cut --help [root@ESProbe ~]# cut --help Usage: cut ...
- 数据库-第三章 关系数据库标准语言SQL-3.3 数据查询
数据查询 例: 一.单表查询 1.定义 是指仅涉及一个表的查询 2.选择表中的若干列 查询指定列 例: 查询全部列 例: 查询经过计算的值 例: 3.选择表中的若干元组 消除取值重复的行 例: 查询满 ...
- 「 Offer收割机之JVM」:生存还是毁灭
这两天,广州的天气又开始热了起来,又到了小动物交配的季节,啊呸,又到了一个收割 offer 的季节.年底将至,又到了面试的高峰期,JVM 作为Java 程序员面试绕不过的一道坎儿,它又来了,你准备好了 ...
- Python进制的转换
Python整数能够以十六进制,八进制和二进制来编写,作为一般以10位基数的十进制计数法的补充. 一: 上面三种进制的常用表示 >>> 0o1, 0o20, 0o377 # 八进制 ...
- tarjan算法强连通分量的正确性解释+错误更新方法的解释!!!+hdu1269
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 以下内容为原创,转载请声明. 强连通分量SCC(Strongly Connected Compo ...
- 干货|漫画算法:LRU从实现到应用层层剖析(第一讲)
今天为大家分享很出名的LRU算法,第一讲共包括4节. LRU概述 LRU使用 LRU实现 Redis近LRU概述 第一部分:LRU概述 LRU是Least Recently Used的缩写,译为最近最 ...
- Redis学习笔记2-redis管道(pipeline)
redis的管道(Pipelining)操作是一种异步的访问模式,一次发送多个指令,不同步等待其返回结果.这样可以取得非常好的执行效率.这就是管道,调用方法如下: 来源:http://blog.csd ...
- SpringBoot 集成ehcache
1, 项目实在springboot 集成mybatis 的基础上的: https://www.cnblogs.com/pickKnow/p/11189729.html 2,pom 如下,有的不需要加, ...
- nodejs使用express中静态资源托管(express.static())时遇到的bug
如下:将test.html的页面挂载在服务器上, const express= require('express') const fs= require('fs') let app = express ...