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.php.cn)!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

在mysql中,可利用“ALTER TABLE 表名 DROP INDEX unique key名”语句来删除unique key;ALTER TABLE语句用于对数据进行添加、删除或修改操作,DROP INDEX语句用于表示删除约束操作。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver Mac版
视觉化网页开发工具