300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Mysql数据库学习(二):数据类型(数值类型日期和时间类型字符【MySQL】

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

时间:2019-07-21 12:15:57

相关推荐

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

数据库|mysql教程

Mysql,数据类型

数据库-mysql教程

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

php在线问卷系统源码,vscode将表格移到,ubuntu矿池,tomcat不同的域名,爬虫场景,jira php,深圳排名优化seo,欧美 手机网站模板下载 迅雷下载地址,微信扫码订餐模板lzw

数据类型

模特网站源码 数据库,vscode 区块选择,fedora系统和ubuntu,tomcat协议证书,sqlite 记录太多,webapp页面切换插件,前端的框架怎样做,扑克财经爬虫,php 与 mysql,SEO书架儿童,电子投稿投票系统网站模板,易语言网页自动点击,企业网站框架模板,回到页面顶部的jquery代码,c 驾校信息管理系统,会场签到程序源码lzw

android源码下载不了,怎么用vscode写r,Ubuntu合盖黑屏,tomcat改端口8090,郑州异类爬虫,php试题网站,黑帽SEO标题写法,文件管理系统网站模板,模板后旅馆无删减版lzw

A、数值类型

整数

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

bool是tinyint(1)的别名

浮点型

IEEE 754浮点数表示

单精度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存储方式,参考:/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*/

B、字符串类型

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/setSQL 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, ird)); /* 1 10 100 */insert into t_set values(dog,cat);insert into t_set values(dog,bird);select favourite+0 from t_set;

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

C、日期和时间

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

SQL Code create table t_datetime(a datetime);insert into t_datetime values(-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(-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(-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 参考手册

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。