mysql 字符串类型 小数_MySQL (二)-- 数据类型(列类型)、数值类型、 小数类型、 时间日期类型、 字符串类型 、 MySQL记录长度、列属性...

1 数据类型(列类型)

所谓的数据类型:对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间。

SQL中将数据类型分成了三大类:

69a9655123e8ce9153bd72dd8e186a90.png

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;

c7ab50dcce39587a0b02f4649322a812.png

插入数据

-- 插入数据

,,,,);

cfc73f955a67a286ad176b4e0351bf53.png

查看数据

select * from my_int;

b5fe30acc9e49d98e2b5b57d11a6547a.png

SQL中的数值类型全部都是默认有符号的:分正负。

有的时候,需要使用无符号数据,需要给数据类型限定为int unsigned;--无符号

给my_int表增加一个无符号类型。

alter table my_int add int_6 int unsigned;

876d6702406d10be00c2245e3a5ab8e9.png

插入无符号数据

);

242a1fa74a872771f3686b351a3bbea5.png

如果插入的是负数

5c3c0b92437d4d7435d52c1da0d6b393.png

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

a30a41b8b0f34925d15ea1da034a9986.png

显示宽度:没有特别的含义,只是默认的告诉用户可以显示的形式而已,实际上用户是可以控制显示宽度,但是这种控制不会改变数据本身的大小。

增加一个int_7 int(1) 的字段

) unsigned ;

ece8a6a0702d41015e0246d1c8b56f77.png

插入数据

fe15836913502301b4662af0d94f8611.png

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

) zerofill;

1263bf2911a5c2956d6cb1dc6602d54d.png

零填充+显示宽度的效果

2c3a84e20a755ce51fc728c42e47bc7a.png

零填充的意义:保证数据格式。

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位在精度范围之内

);

56a211c2e07429c8b5af4cf320a489b6.png

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

b3c8c1d2a9b65a2aacf2f1a580ace412.png

3.2 定点型

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

4 时间日期类型

f2961eae8034c93dc03303122fae0263.png

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('男','女','不男不女','妖')。

使用:存储数据,只能存储上面定义好的数据。

集合字符串

集合和枚举很类似:实际存储的是数值,而不是字符串。

集合的使用元素:

使用: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 默认值;

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 ...

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 学习笔记(二) Schema与数据类型优化      笔记核心内容:MySQL 如何选择正确的数 ...

随机推荐

【leetcode】Remove Nth Node From End of List

题目简述: Given a linked list, remove the nth node from the end of list and return its head. For example ...

模拟赛1029d1

第二题[题目描述]给你两个日期,问这两个日期差了多少毫秒.[输入格式]两行,每行一个日期,日期格式保证为"YYYY-MM-DD hh:mm:ss"这种形式.第二个日期时间一定比第一 ...

iOS--UISearchBar和UISearchDisplayController

UISearchBar继承自UIView.UIResponder.NSObject 属性: autocapitalizationType————自动对输入文本对象进行大小写设置(包含4种类型,但是有时 ...

Java集合框架之LinkedList-----用LinkedList模拟队列和堆栈

LinkedList的特有方法: (一)添加方法 addFisrt(E e):将指定元素插入此列表的开头.//参数e可以理解成Object对象,因为列表可以接收任何类型的对象,所以e就是Object对 ...

ARC工程中添加非ARC文件

转载自:http://blog.csdn.net/zhenweicao/article/details/16988543 分类: IOS2013-11-27 17:02 626人阅读 评论(0) 收藏 ...

Android 如何让 app 自行处理 power key M

前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

【重点突破】——使用Express创建一个web服务器

一.引言 在自学node.js的过程中有一个非常重要的框架,那就是Express.它是一个基于NodeJs http模块而编写的高层模块,弥补http模块的繁琐和不方便,能够快速开发http服务器.这 ...

LOJ 2547 「JSOI2018」防御网络——思路+环DP

题目:https://loj.ac/problem/2547 一条树边 cr->v 会被计算 ( n-siz[v] ) * siz[v] 次.一条环边会被计算几次呢?于是去写了斯坦纳树. #in ...

几个jdbc小技巧

版本:jdk:1.6mysql-connector-5.0.8 1.如何用jdbc判断某个基本表是否存在 一种比较“笨”的方法:    try{         stmt.executeQuery( ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值