MySQL (二)-- 数据类型(列类型)、数值类型、 小数类型、 时间日期类型、 字符串类型 、 MySQL记录长度、列属性
1 数据类型(列类型)
- 所谓的数据类型:对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间。
- SQL中将数据类型分成了三大类:

2 数值类型
- 数值类型数据:都是数值。
- 系统将数值型分为整数类型和浮点数类型。
2.1 整数类型
- 在SQL中因为更多的要考虑如何节省磁盘空间,所以系统将整数类型又细分成了5类:
- tinyint 迷你整型,使用一个字节存储,表示的状态最多为256种。
- smallint 小整型,使用2个字节存储,表示的状态最多为65536种。
- mediumint 中整型,使用3个字节存储。
- int 标准整型,使用4个字节存储。
- bigint 大整型,使用8个字节存储。
- 创建一张整型表
create table my_int( int_1 tinyint, int_2 smallint, int_3 mediumint, int_4 int, int_5 bigint )charset utf8;

- 插入数据
-- 插入数据 ,,,,);

- 查看数据
select * from my_int;

- SQL中的数值类型全部都是默认有符号的:分正负。
- 有的时候,需要使用无符号数据,需要给数据类型限定为int unsigned;--无符号
- 给my_int表增加一个无符号类型。
alter table my_int add int_6 int unsigned;

- 插入无符号数据
);

- 如果插入的是负数

- 查看表结构的时候,发现每个字段的数据类型之后都会自带一个括号,里面有指定的数字

- 显示宽度:没有特别的含义,只是默认的告诉用户可以显示的形式而已,实际上用户是可以控制显示宽度,但是这种控制不会改变数据本身的大小。
- 增加一个int_7 int(1) 的字段
) unsigned ;

- 插入数据

- 显示宽度的意义:在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度,通常需要搭配一个前导0(zerofill:零填充,零填充会导致数值变成无符号)来增加宽度,不改变值大小。
) zerofill;

- 零填充+显示宽度的效果

- 零填充的意义:保证数据格式。
3 小数类型
- 小数型:带有小数点或者范围超出整数类型的数值类型。
- SQL中:将小数类型细分为两种:浮点型和定点型。
- 浮点型:小数点浮动,精度有限,会丢失精度。
- 定点型:小数点固定,精度固定,不会丢失精度。
3.1 浮点型
- 浮点型数据会因为超出范围之后,丢失精度(自动四舍五入)。
- 浮点型:理论上有两种精度。
- float:单精度,占用4个字节存储数据,精度范围大概在7位左右。
- double:双精度,占用8个字节存储和数据,精度范围大概在15位左右。
- 创建浮点数表:浮点的使用方式,直接float表示没有小数部分;float(M,D):M代表总长度,D代表小数部分长度,整数部分长度为M-D。
-- 浮点数表
create table my_float(
f1 float,
f2 ,),--10位在精度范围之外
f3 ,)--6位在精度范围之内
);

- 插入数据:可以直接小数,也可以科学计数法

3.2 定点型
- 定点型:绝对的保证整数部分不会被四舍五入(不会丢失精度),小数部分有可能。
4 时间日期类型

5 字符串类型
- 在SQL中,将字符串类型分成了6类:char,varchar,text,blob,enum和set。
- 定长字符串
- char:磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度。
- char(L):L代表length,可以存储的长度,单位为字符。最大长度值可以为255。char(4):在utf8环境下,需要4 * 3 = 12 个字节。
- 变长字符串
- varchar:在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少,是根据具体的数据来确定。
- varchar(L):L代表length,理论长度是65536个字符,但是会出处1到2个字节来确定存储的实际长度。varchar(10):在utf8环境下,存储10个汉字,需要10 * 3 + 1 = 31 字节。
- 注意的是,在实际开发中,如果字符的长度超过255个,我们会使用text或blob来代替varchar。
- 如何选择定长或变长字符串?
- 定长的磁盘空间比较浪费,但是效率高;换言之,如果数据基本上确定长度都一样,就使用定长,如身份证号码,电话号码,手机号码等。
- 变长的磁盘空间比较节省,但是效率低;换言之,如果数据不能确定长度(不同的数据,长度有变化),如姓名,地址等。
- 文本字符串
- 如果数据量非常大,通常超过255个字符,就会使用文本字符串。
- 文本字符串根据存储的格式进行分类:text和blob。
- text:存储文字。
- blob:存储二进制数据(通常不用)。
- 枚举字符串
- 枚举:enum,实现将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。
- 枚举的使用方式:
- 定义:enum(可能出现的元素列表);
- 如:enum('男','女','不男不女','妖')。
- 使用:存储数据,只能存储上面定义好的数据。
- 定义:enum(可能出现的元素列表);
- 集合字符串
- 集合和枚举很类似:实际存储的是数值,而不是字符串。
- 集合的使用元素:
- 使用:set(元素列表);
- 使用:可以使用元素列表中的元素(多个),使用逗号分隔。
6 MySQL记录长度
- MySQL中规定:任何一条记录最长不能超过65535个字节。(varchar永远达不到理论值)
7 列属性
- 列属性:真正约束字段的是数据类型,但是数据类型的约束很单一。需要有一些额外的约束,来保证数据的合法性。
- 列属性有很多:null/not null;default;primary key;unique key,auto_increment,comment等
7.1 空属性
- 两个值:null(默认的)和not null(不为空)
- 数据库基本上字段默认为null,但是在实际开发的时候,尽可能的要保证所有的数据不应该为null,因为①空数据没有意义,②空数据没有办法参与运算。
7.2 描述属性
- 列描述:comment,描述:没有实际含义,是专门用来描述字段的,会根据表创建语句保存。
7.3 默认值
- 默认值: 某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。
- 用法:default 默认值;
MySQL (二)-- 数据类型(列类型)、数值类型、 小数类型、 时间日期类型、 字符串类型 、 MySQL记录长度、列属性的更多相关文章
- Java中关于时间日期格式保存到mysql的问题
首先在设置数据库的时间日期字段的时候要先确定好采用何种类型,DATETIME. TIMESTAMP.DATE.TIME.YEAR. 其中datetime.time用的比较多,对应java中生成的poj ...
- MySQL(二) —— 数据类型与操作数据表
数据类型 数据类型是指列.存储过程参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. 整型:TYNINT(-2^7 ~ 2^7-1); SMALLINT(-2^15 ~ ...
- JS获取到时间转换成字符串类型
JS获取到时间格式为:/Date(1479279579047)/ 提供一个函数可将其转换为“yyyy-MM-dd”和“yyyy-MM-dd hh:mm:ss” //时间日期转换成string func ...
- MySQL数据库数据类型之集合类型SET测试总结
MySQL数据库提供针对字符串存储的一种特殊数据类型:集合类型SET,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧,前面介绍了首先介绍了四种数据类型的特性总结,其后又分别 ...
- MySQL(二) 数据库数据类型详解
序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了.但是通过 ...
- mysql字符串类型数据
字符串类型是在数据库中存储字符串的数据类型,字符串类型包括char,varchar,text,enum和set. OK,我们来一个一个的看下上面提到的几种类型. char类型和varchar类型 ch ...
- java和mysql之间的时间日期类型传递
摘自:http://blog.csdn.net/weinianjie1/article/details/6310770 MySQL(版本:5.1.50)的时间日期类型如下: datetime 8byt ...
- ES索引Index相关操作&ES数据类型、字符串类型text和keyword区别
1.查看索引以及删除之前的测试索引 1. 查看索引以及索引数量信息 liqiang@root MINGW64 ~/Desktop $ curl -X GET http://127.0.0.1:9200 ...
- 15-2 mysql的数据类型
一.整数类型 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 作用:存储年龄,等级,id,各种号码等 ============================== ...
- MYSQL中数据类型介绍
一.MySQL的数据类型 主要包括以下五大类: 主要包括以下五大类: 整数类型:bit. int . bit int . small int . tiny int . medium int .boo ...
随机推荐
- 无法远程连接服务器上的mysql
使用mysql管理工具连接服务器删过得mysql,显示连接被拒绝,但是在服务器上是可以登录mysql的. 无法远程连接通常以下几种情况: 首先,关闭mysql. service mysq ...
- 《Java从入门到放弃》入门篇:springMVC数据传递
springMVC中的数据传递方式与JSP和Struts2相比,更加的简单.具体有什么样的区别呢?我们通过下面这张图来对比就知道了. 随手画的,有些错别字,不用太在意..... 接下来,进入正题,sp ...
- 前端到后台ThinkPHP开发整站(1)
1.前言: 我个人从来没有写过博客文章,作为一个程序员没有自己的博客算是一个合格的程序员,所以我地想想也要经营起一个的博客,做一个小项目,写这博客算就做这个项目的一个项目笔记吧!现在自学着ThinkP ...
- 计蒜客模拟赛D1T1 蒜头君打地鼠:矩阵旋转+二维前缀和
题目链接:https://nanti.jisuanke.com/t/16445 题意: 给你一个n*n大小的01矩阵,和一个k*k大小的锤子,锤子只能斜着砸,问只砸一次最多能砸到多少个1. 题解: 将 ...
- 详解.Net 如何上传自己的包到Nuget平台以及如何使用Nuget包管理器
首先需要一个Nuget账户,可以在官网注册:https://www.nuget.org.已有账户略. 需要一个ApiKeys,登录之后,在我的账户里找到ApiKeys进去; 创建ApiKeys 下载N ...
- 安装atlas后执行hive命令报错
在集群中安装atlas,在安装atlas的节点上执行hive -e "show databases;" 正常,但是在集群中其他节点上执行hive -e "show dat ...
- Hadoop集群环境搭建(一)
1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataN ...
- 漫谈ELK在大数据运维中的应用
漫谈ELK在大数据运维中的应用 圈子里关于大数据.云计算相关文章和讨论是越来越多,愈演愈烈.行业内企业也争前恐后,群雄逐鹿.而在大数据时代的运维挑站问题也就日渐突出,任重而道远了.众所周知,大数据平台 ...
- SpringMVC中文件的上传(上传到服务器)和下载问题(一)
一.今天我们所说的是基于SpringMVC的关于文件的上传和下载的问题的解决.(这里所说的上传和下载都是上传到服务器与从服务器上下载文件).这里的文件包括我们常用的各种文件.如:文本文件(.txt), ...
- Python开发规范
背景 Python语言规范 Lint 导入 包 异常 全局变量 嵌套/局部/内部类或函数 列表推导(List Comprehensions) 默认迭代器和操作符 生成器 Lambda 函数 条件表达式 ...