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字节 | 一般整数 | 适用于日期 
  | 
||
| 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字节 | 一般整数 | 适用于日期 
  | 
||
| 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年。  | 
MySQL数据类型概念的更多相关文章
- 详解MySQL数据类型
		
原文地址http://www.cnblogs.com/xrq730/p/5260294.html,转载请注明出处,谢谢! 前言 很久没写文章,也有博友在我的有些文章中留言,希望我可以写一些文章,公司项 ...
 - MySQL数据类型以及基本使用详解
		
MySQL数据类型以及基本使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL服务器的主要组件 我们知道MySQL的主要组件主要是由服务端(mysqld)和客户端 ...
 - Mysql数据类型最细讲解
		
文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 数据库中事务是最重要的概念之一,所以上篇着重谈了谈数据库中事务的使用,并且举了实例如何在实际开发中去使用事务进 ...
 - mysql 数据类型
		
1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) ...
 - MySQL 数据类型 详解
		
MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...
 - MySQL数据类型的验证
		
CHAR char (M) M字符,长度是M*字符编码长度,M最大255. 验证如下: mysql)) default charset=utf8; ERROR (): ); use BLOB or T ...
 - MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题
		
MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...
 - 浅谈MySQL数据类型
		
MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 一.数值类型 MySQL支持所有标 ...
 - MySql基本概念(一)
		
MySQL基本概念 一. 数据库系统概述: mysql是数据库系统的一种,下面是所有数据库系统中主要的组件. 数据库系统由硬件部分和软件部分构成,硬件主要用于存储数据库中的数据,包括计算机.存储设备. ...
 
随机推荐
- CSS中的定位与浮动
			
CSS中的定位与浮动 本文主要讲述CSS中的三种定位样式static.relative和absolute的区别以及浮动元素的特征. 定位样式 CSS中定位样式position的取值有三个,默认值:st ...
 - java如何获取一个对象的大小
			
When---什么时候需要知道对象的内存大小 在内存足够用的情况下我们是不需要考虑java中一个对象所占内存大小的.但当一个系统的内存有限,或者某块程序代码允许使用的内存大小有限制,又或者设计一个缓存 ...
 - Laravel5中使用阿里大于(鱼)发送短信验证码
			
在做用户注册和个人中心的安全管理时,我实现借助第三方短信平台(阿里大于(鱼))在Laravel框架中进行手机验证的设置:阿里大于,是阿里通信旗下优质便捷的云通信服务平台,整合了三大运营商的通信能力,为 ...
 - (实例篇)LNMP 1.4一键安装包,安装教程
			
http://mp.weixin.qq.com/s/l6ijKBwD6tt8jkZytWEIsw https://lnmp.org/download.html 2017-09-11 学习与分享 PHP ...
 - 【编程技巧】java不使用第三个变量处理两个变量的交换
			
public class SwapNum {public static void main(String[] args) {doSwapNum();}public static void doSwap ...
 - Vue.js的坑
			
参考网址:http://cn.vuejs.org/v2/guide/components.html 1.camelCase vs. kebab-case HTML 特性不区分大小写.当使用非字符串模版 ...
 - 【笔记】css 实现宽度自适应屏幕 高度自适应宽度
			
如果说宽高自适应屏幕尺寸那么大家可能会想到 div{ width: 100%; height: 100% } 但是如果我要自适应屏幕尺寸的同时还要变成正方形呢?(高度和宽度相等而高度不能写死) 那就要 ...
 - linux_目录结构
			
目录的作用是什么? 1. 归档和分类 2. 区分同名文件 什么是FHS? 目录层次标准,linux目录规范标准 linux系统目录有哪些特点? 1. 逻辑上所有目录都在 / 目录下,根目录是所有目录的 ...
 - scrapy_items
			
为什么要items? 当数据量多的时候,没有统一的数据管理,统一格式化麻烦 items中除了能添加字段,还能做什么? 1. 进行预先处理 2. 对从items出去的数据进行处理 3. 写上sql语句逻 ...
 - CDuiString和String的转换
			
很多时候 难免用到CDuiString和string的转换. 我们应该注意到,CDuiString类有个方法: LPCTSTR GetData() const; 可以通过这个方法,把CDuiStrin ...