热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mysql数据库学习(二):数据类型(数值类型日期和时间类型字符_MySQL

Mysql数据库学习(二):数据类型(数值类型日期和时间类型字符串类型)
Mysql数据库学习(二):数据类型(数值类型日期和时间类型字符_MySQL

数据类型

数值类型

日期和时间类型

字符串类型

/

一、数值类型

整数

/

tinyint[M] [unsigned] [zerofill] // [ ] 表示可选,这里的M表示显示宽度,并不是取值范围,显示宽度不够前面以0填充
bool是tinyint(1)的别名

浮点型

IEEE 754浮点数表示

S:符号位

E:指数位

M:尾数位,也叫有效数字位

N =(-1)^S * M * 2^E

单精度float 4个字节 ,取值范围-3.402823466E+38~3.402823466E+38, 精度大约7位
双精度double 8个字节,取值范围 -1.7976931348623157E+308~1.7976931348623157E+308, 精度大约15位

//


DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] // M总位数,D是小数点后面的位数,这里是取值范围
real是double的别名

定点型

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] //M缺省是10,D缺省是0
decimal取值范围与double是一样的,但是有更高的精度。
decimal存储方式,参考:http://dev.mysql.com/doc/refman/5.1/zh/precision-math.html
numeric是decimal的别名

SQL Code create table t_number(a tinyint, b tinyint unsigned);
insert into t_number values(100, 200);
insert into t_number values(-129, 200);
insert into t_number values(128, 200);
insert into t_number values(127, 200);
insert into t_number values(127, -1);
create table t_number2(a int(4) zerofill);
insert into t_number2 values(123);
insert into t_number2 values(123456);
create table t_number3(a bool);
create table t_number4(a float, b double);
insert into t_number4 values(12345678.12345, 12345678.12345);
insert into t_number4 values(12345678.12345, 123456789123456789.12345); /* 12345700 | 1.2345678912345678e17 */
insert into t_number4 values(12345678.12345, 12345678912345.12345);
create table t_number5(a double(5,2));
/* -999.99 ~999.99 */
create table t_number6(a decimal(30,6));
insert into t_number6 values(123456789123456789.12345);
create table t_number7(a decimal(5,2));
/* -999.99 ~999.99*/

二、字符串类型

char(M)
varchar(M) //这里的M表示字符数
/

CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。

VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。VARCHAR的最大有效长度由最大行大小和使用的字符集确定。举例来说,如果字符集为uft8,那么一个字符需要3个字节来存储,则可以保存的字符数为65535/3=21845,此外还需要一个字符的位置来存储字符个数,故最大可填写的字符数为21844。若是latin1,一个字符只需1个字节存储,那么可填写的字符数为65532。

binary/varbinary

BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

字符串存储需求

/

VARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度(用前面的表中的L表示),而不是该类型的最大可能的大小。例如,VARCHAR(10)列可以容纳最大长度为10的字符串。实际存储需求是字符串(L)的长度,加上一个记录字符串长度的字节。对于字符串'abcd',L是4,存储需要5个字节。
对于CHAR、VARCHAR和TEXT类型,前面的表中的值L和M应解释为字符数目,并且列定义中的这些类型的长度表示字符数目。例如,要想保存一个TINYTEXT值需要L字符+ 1个字节。

enum/set
SQL Code create table t_enum(sex enum('male', 'female')); 
/* 
1 
2 
*/
insert into t_enum values('male');
insert into t_enum values('female');
insert into t_enum values(1);
select sex+0 from t_enum;create table t_set(favourite set('dog', 'cat', 'bird')); 
/* 
1 
10 
100 
*/
insert into t_set values('dog,cat');
insert into t_set values('dog,bird');
select favourite+0 from t_set;


枚举/集合看过去像是字符串,实际上保存的是整数。

三、日期和时间

/

日期和时间看起来像字符串,但是以整数来保存的。

SQL Code create table t_datetime(a datetime);
insert into t_datetime values('2014-01-15 10:10:10');
insert into t_datetime values('9999-12-31 23:59:59');
insert into t_datetime values('10000-01-01 00:00:00');
insert into t_datetime values('999-01-01 00:00:00');
insert into t_datetime values('99-01-01 00:00:00');
insert into t_datetime values('69-01-01 00:00:00');

create table t_timestamp(a timestamp);
insert into t_timestamp values('2014-01-15 10:10:10');
insert into t_timestamp values('2038-01-19 03:14:07');
insert into t_timestamp values('2038-01-19 03:14:08');
insert into t_timestamp values('2038-01-19 11:14:07');
insert into t_timestamp values('2038-01-19 11:14:08');
create table t_date(a date);

insert into t_date values('2012-01-01');
create table t_time(a time); /* 可以表示时间差 */
insert into t_time values('23:12:12');
insert into t_time values('823:12:12');
insert into t_time values('3 23:12:12'); /* 3表示3小时 */
create table t_year(a year);

insert into t_year values (2000);
insert into t_year values ('2155');
insert into t_year values (2156);

参考:

《数据库系统概论》

mysql 5.1 参考手册

以上就是Mysql数据库学习(二):数据类型(数值类型日期和时间类型字符_MySQL的内容,更多相关内容请关注PHP中文网(www.php1.cn)!

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
author-avatar
实现毛_424
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有