MySQL入门,第二部分,必备基础知识点

一、数据类型

日期和时间数据类型

 

date

3字节

日期,格式:2014-09-18

日期和时间数据类型

 

time

3字节

时间,格式:08:42:30

日期和时间数据类型

 

datetime

8字节

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

日期和时间数据类型

 

timestamp

4字节

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

日期和时间数据类型

 

year

1字节

年份, 格式:2009

数值数据类型

整型

tinyint

1字节

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

数值数据类型

整型

smallint

2字节

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

数值数据类型

整型

mediumint

3字节

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

数值数据类型

整型

Int(integer)

4字节

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

无符号(0~4294967295)

数值数据类型

整型

bigint

8字节

有符号范围(-9223372036854775807~

9223372036854775807),

无符号(0~18446744073709551615)

数值数据类型

浮点型

float(m, d)

4字节

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

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

数值数据类型

浮点型

numeric(m,d)

4字节

m总个数,d小数位

数值数据类型

浮点型

double(m, d)

8字节

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

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

数值数据类型

浮点型

decimal(m, d)

 

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

字符串数据类型

 

char(n)

255字节

固定长度

每个汉字3字节

字符串数据类型

 

varchar(n)

65535字节

5.0以上版本

可变长度

每个汉字3字节

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

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

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

字符串数据类型

 

tinytext

255字节

可变长度

字符串数据类型

 

text

65535字节

 

可变长度

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

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

text没有默认值

字符串数据类型

 

mediumtext

16M

可变长度

字符串数据类型

 

longtext

4G

可变长度

字符串数据类型

二进制形式

TinyBlob

255字节

可变长度

字符串数据类型

二进制形式

blob

65535字节

可变长度

字符串数据类型

二进制形式

mediumblob

16M

可变长度

字符串数据类型

二进制形式

longblob  

4G

可变长度

其它类型

 

enum(“1″, “2″)

最大65535

不同的枚举值

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

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

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

 

其它类型

 

set(“1”, “2″,)

最大64

不同的值

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个字节

依赖于MD

依赖于MD的值

M的有效范围

[165]

D的有效范围

[030],且 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

3

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3

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

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

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

YYYY-MM-DD HH:MM:SS

混合日期和时间值

TIMESTAMP

4

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

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038119日 凌晨 03:14:07

YYYYMMDD HHMMSS

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

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

编码

英文字符

汉字(含繁体)

ASCII

一个字节

两个字节

UTF-8

一个字节

三个字节

Unicode

两个字节

两个字节

发布了304 篇原创文章 · 获赞 74 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/ITlanyue/article/details/104781417