MySQL数据类型概念

关系型数据库的特点

1,数据以表格的形式出现

2,每行为各种记录的名称

3,每列为数据名称所对应的数据域

4许多的行和列组成一张table

5若干的表单组成databases

术语

数据库:关联表的集合

数据表::表是数据的矩阵

列:数据元素,包含相同的数据

行:元组或者记录,一组相关的数据

冗余:存储两倍数据,降低了性能,但提高数据安全性(频繁切换两张表,可以把表1的内容添加到表2)

主键:主键是唯一的.可以使用主键来查询数据

外键:用于关联两张表

复合键:将多个列作为一个索引键

索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。

参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性

数据类型

数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则

实际编程中,选择列的基本类型时的基本原则是:可以满足数据的最小类型

字符串数据类型:

定长串其长度是创建table时指定的,不允许多于指定的字符数据长度,实际存储的空间和指定的一样多,char属于定长串

变长串存储长度可变的文本,只按照指定的数据保存,text属于变长串

比较:变长串数据类型灵活,定长串数据类型高效,MySQL不允许对变长串(或一个列的可变部分)进行索引

数据类型 说明 主要用途
Char 1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR(1) Char(n=1~255)

char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。

主要用于标题,作者等数据量小的数据类型
Varchar 可变长度,最多不超过255字节,如在创建时指定VARCHAR(n),则可存储0~n个字符的变长串。

存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为
VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这一个字节用于保存实际使用了多大的长度。

从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

主要用于不确定的长度,例如:路径,文章内容(Varchar(800))等
text 最大长度为64K的变长文本 常规大小的Text字段。 文章内容
TINYTEXT 同TEXT,最大长度为255字节
MEDUIMTEXT 同TEXT,最大长度为16K
LONGTEXT 同Text,最大长度为4GB(纯文本,一般不会到4G)
Blob text 区分大小写,二blob不区分,其他相同。 二进制类型可存储任何数据,如文字、图像、多媒体等。还包括TITYBLOB,MEDIUMBLOB,LongBlob
两种特殊类型
ENUM 接受最多64K个串组成的预定义集合的某个串 枚举,该类型的列只可以容纳所列值之一或者为null
SET 接受最多64K个串组成的预定义集合的零个或多个串 指定列中的值必须来自一个特定的集合中的指定值,例如:set(‘c‘, ‘h‘, ‘p‘, ‘f‘, ‘s‘, ‘j‘, ‘a‘, ‘b‘)

注意:不管任何形式的串数据类型,串值都必须在引号内(通常单引号更好);如果数值是计算中使用的数值,则应存储在数值数据类型列中,如果作为字符串使用(如电话号码、邮政编码)则应保存在串数据类型列中。

数值类型:(整型和浮点型)

整型

数据类型 取值范围 存储空间 描述 主要用途
tinyint[(m)]
有符号值:-128 到127(- 2^7 到2^7 – 1)

无符号值:0到255(0 到2^8 – 1)

1字节 非常小的整数 人员年龄或兄弟姐妹数,则tinyint最合适
smallint[(m)]
有符号值:-32768 到32767(- 2^15 到2^15 – 1)

无符号值:0到65535(0 到21 6 – 1)

2字节 小型整数

用于分类id,栏目smallint(5)

mediumint[(m)]
有符号值:-8388608 到8388607(- 2^23 到2^23 – 1 )

无符号值:0到16777215(0 到2^24 – 1)

3字节 中型整数

【适用于文章id 】mediumint能够表示数百万的值并且可用于更多类型的值,但存储代价较大 

int[(m)]
有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1)

无符号值:0到4294967295(0 到2^32 – 1)

4字节 一般整数

适用于日期

pubdate
bigint[(m)]
有符号值:-9223372036854775808 到9223373036854775807(- 2^63到2^63-1)

无符号值:0到18446744073709551615(0到2^64 – 1)

8字节 大型整数

浮点型

数据类型 取值范围 存储空间 描述 主要用途
float
取决于精度

可变 用于指定单精度或双精度浮点数 double占用float的两倍空间。除非特别需要高精度或范围极大的值,一般应使用只用一半存储代价的float型来表示数据。
float[(m, d)]
最小非零值:±1.175494351e – 38

4字节 单精度浮点数 等同于Float(4),但是指定显示宽度和小数点位数
double[(m, d)]
最小非零值:±2.2250738585072014e – 308

8 字节 双精度浮点数

等同于Float(8),但是指定显示宽度和小数点位数

decimal (m, d)
有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1)

无符号值:0到4294967295(0 到2^32 – 1)

4字节 一般整数

适用于日期

pubdate
bigint[(m)]
m字节(mysql < 3.23),m+2字节(mysql > 3.23 )

M+2 可变;其值的范围依赖于m 和d

浮点数,以char存储,范围取决于显示宽度M

日期和时间


数据类型


存储字节数


取值范围


描述


DATE


4


1000-01-01——9999-12-31


以YYYY-MM-DD格式来显示,如果我们想插入当前系统的时间,则可以插入CURRENT_DATE或者NOW()。


TIME


3


-838:59:59——838:59:59


尽管小时范围一般是0~23,但是为了表示某些特殊时间间隔,MySQL将TIME的小时范围扩发了,而且支持负值。对TIME类型赋值,标准格式是‘HH:MM:SS‘,但不一定非要是这种格式。

如果插入的是‘D HH:MM:SS‘格式,则类似插入了‘(D*24+HH):MM:SS‘。比如插入‘2 23:50:50‘,相当于插入了‘71:50:50‘。如果插入的是‘HH:MM‘或‘SS‘格式,则效果是其他未被表示位的值赋为零值。比如插入 ‘30‘,相当于插入了‘00:00:30‘;如果插入‘11:25‘,相当于插入了‘11:25:00‘。在MySQl中,对于‘HHMMSS‘格式, 系统能够自动转化为标准格式。


DATETIME


8


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


以YYYY-MM-DD HH:MM:SS格式来显示


TIMESTAMP


4


19700101080001——20380119111407


TIMESTAMP的取值范围比较小,没有DATETIME的取值范围大,因此输入值时一定要保证在TIMESTAMP的范围之内。它的插入也与插入其他 日期和时间数据类型类似。那么TIMESTAMP类型如何插入当前时间?第一,可以使用CURRENT_TIMESTAMP;第二,输入NULL,系统自 动输入当前的TIMESTAMP;第三,无任何输入,系统自动输入当前的TIMESTAMP。 另外有很特殊的一点:TIMESTAMP的数值是与时区相关。


YEAR


1


1901——2155


给YEAR类型复制可以有三种方法: 第一种是直接插入4位字符串或者4位数字; 第二种是插入2位字符串,这种情况下如果插入‘00‘~‘69‘,则相当于插入2000~2069;如果插入‘70‘~‘99‘,则相当于插入 1970~1999。第二种情况下插入的如果是‘0‘,则与插入‘00‘效果相同,都是表示2000年; 第三种是插入2位数字,它与第二种(插入两位字符串)不同之处仅在于:如果插入的是一位数字0,则表示的是0000,而不是2000年。所以在给YEAR 类型赋值时,一定要分清0和‘0‘,虽然两者相差个引号,但实际效果确实相差了2000年。

原文地址:https://www.cnblogs.com/sunlizhao/p/8452178.html

时间: 2024-11-02 10:36:12

MySQL数据类型概念的相关文章

21分钟 MySQL 入门教程 &amp;&amp; mysql数据类型

转自:http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#c1 http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html 21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据类型 五.使用MySQL数据库 登录

mysql数据类型整理

mysql 数据类型的概念 定义数据类型的本质上是定义列 类似于描述列 数据分类的意义 分配合适的存储空间 采用不同的操作方法 对应不同的需求 整数类型 正负0 造成 负数多一个 tinyint 1byte 0-255 -128 ~ 127 smallint 2b 0~65535 mediumt 3b int 4b bigint 8b 带小数的类型 float 4b 0,(3.4) double 8b decimal M>D M+2 M<D D+2 decimal 最大支持 (65,30) 默

详解MySQL数据类型

原文地址http://www.cnblogs.com/xrq730/p/5260294.html,转载请注明出处,谢谢! 前言 很久没写文章,也有博友在我的有些文章中留言,希望我可以写一些文章,公司项目一直很忙,但是每天也尽量腾出一些时间写一些东西,主要针对工作中一些常用的知识点系统性的梳理(可能我们在工作中只是纯粹的使用而已,不会去进行总结.归纳). 本文写的内容是MySQL数据类型,之前写MySQL系列文章的时候一直忽略的一个知识点,现在想来,我们学习一门语言,无非从两个方面入手: 基本语法

(转)mysql数据类型

1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节  范围(-8388608~8388607) int(m) 4个字节  范围(-2147483648~2147483647) bigint(m) 8个字节  范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为

MySQL 数据类型(转)

MySQL 数据类型 在 MySQL 中,有三种主要的类型:文本.数字和日期/时间类型. Text 类型: 数据类型 描述 备注 CHAR(size) 保存固定长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的长度.最多 255 个字符.   VARCHAR(size) 保存可变长度的字符串(可包含字母.数字以及特殊字符).在括号中指定字符串的最大长度.最多 255 个字符. 注释:如果值的长度大于 255,则被转换为 TEXT 类型.   TINYTEXT 存放最大长度为 25

跟王老师学MySQL:MySQL数据类型之小数类型

跟王老师学MySQL:MySQL数据类型之小数类型 主讲教师:王少华   QQ群号:483773664 学习内容 小数类型有哪些以及它们的取值范围 定义语法中的M和D的含义 定点型和浮点型的区别 一.简介 MySQL中使用浮点数类型和定点数类型来表示小数. 浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型). 定点数类型就是DECIMAL型. 二.字节数.取值范围 三.定义语法 1 类据类型 (M,D) M:精度,数据的总长度 D:标度,小数点后的长度 注: 小数点不占长

跟王老师学MySQL:MySQL数据类型之字符类型

跟王老师学MySQL:MySQL数据类型之字符类型 主讲教师:王少华   QQ群号:483773664 学习内容: 字符串类型的种类及其特点 char和varchar的异同 字符串类型是在数据库中存储字符串的数据类型. 字符串类型包括 CHAR. VARCHAR BLOB TEXT 一.char和varchar (一)定义语法 1 字符串类型 (M) 注: 字符串类型:char或varchar M:指定了该字符串最大长度 (二)二者不同之处 char类型长度是固定的,即在创建表时就指定了,其长度

跟王老师学MySQL:MySQL数据类型之日期与时间类型

跟王老师学MySQL:MySQL数据类型之日期与时间类型 主讲教师:王少华   QQ群号:483773664 学习内容 YEAR类型的特点及使用 TIME类型的特点及使用 DATE类型的特点及使用 DATETIME类型的特点及使用 TIMESTAMP类型的特点及使用 MySQL表示日期和时间的数据类型有以下几种: 1.YEAR类型 2.TIME类型 3.DATE类型 4.DATETIME类型 5.TIMESTAMP类型 一.Year类型 (一)简介 year使用一个字符串来表示年份 MySQL中

跟王老师学MySQL:MySQL数据类型常见问题及解答

跟王老师学MySQL:MySQL数据类型常见问题及解答 主讲教师:王少华   QQ群号:483773664 学习内容 整数类型和浮点类型的异同 浮点数类型和定点数类型的异同 char和varchar类型的异同 时间和日期类型的异同 text和blob的异同 存储路径字符串的注意事项 mysql如何存储boolean类型 null的处理 在MySQL中创建表时,需要考虑为字段选择哪种数据类型是最合适的.选择了合适的数据类型,会提高数据库的效率. 一.整数类型和浮点类型 整数类型和浮点类型最大区别是