前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据类型(r3笔记第87天)

MySQL数据类型(r3笔记第87天)

作者头像
jeanron100
发布2018-03-15 11:52:52
6970
发布2018-03-15 11:52:52
举报
文章被收录于专栏:杨建荣的学习笔记

今天在本地装了一个MySQL的学习环境,简单的熟悉了一下。准备开始好好学习MySQL了。 学习编程语言我都是从数据类型入手。每种编程语言的数据类型都有自己的特点,有点简单,有的种类丰富。 总体感觉而言,MySQL的数据类型要比oracle丰富的多。用惯了oracle中的数据类型,一般number,varchar2,date就足够了,最常用的这3个数据类型在MySQL就有着巨大的变化,还是有点不适应。 MySQL中的数据类型都会和你“斤斤计较“,非常的细致,都在基本数据类型的范围内。oracle中的数据类型的维度要广。在http://blog.itpub.net/23718752/viewspace-1339501/中有过一些简单的总结。 以下表格内容都来自http://www.w3cschool.cc/mysql/mysql-data-types.html,总结得已经很详细了。 -->数值类型

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 字节

(-128,127)

(0,255)

小整数值

SMALLINT

2 字节

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3 字节

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT或INTEGER

4 字节

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8 字节

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

FLOAT

4 字节

(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度浮点数值

DOUBLE

8 字节

(1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度浮点数值

DECIMAL

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

依赖于M和D的值

依赖于M和D的值

小数值

-->字符类型

类型

大小

用途

CHAR

0-255字节

定长字符串

VARCHAR

0-255字节

变长字符串

TINYBLOB

0-255字节

不超过 255 个字符的二进制字符串

TINYTEXT

0-255字节

短文本字符串

BLOB

0-65 535字节

二进制形式的长文本数据

TEXT

0-65 535字节

长文本数据

MEDIUMBLOB

0-16 777 215字节

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215字节

中等长度文本数据

LOGNGBLOB

0-4 294 967 295字节

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295字节

极大文本数据

-->日期类型

类型

大小(字节)

范围

格式

用途

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3

'-838:59:59'/'838:59:59'

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

混合日期和时间值

TIMESTAMP

8

1970-01-01 00:00:00/2037 年某时

YYYYMMDD HHMMSS

混合日期和时间值,时间戳

-->数值类型 所以在oracle我们常使用的number,基本可以使用int来代替了。 在oracle中通过number能够控制数据的精度,比如我们制定Number(2),那么你如果数值过界了,就会直接报错。支持的数据范围精度也很高。可能在MySQL中会基于数据类型有对应的存储特性吧。

代码语言:javascript
复制
SQL>  create table test (id number(2));
Table created.
SQL> insert into test  values(127);
insert into test values(127)
                         *
ERROR at line 1:
ORA-01438:  value larger than specified precision allowed for this column

在MySQL中尝试,按照tinyint的最大值127,我们输入128,会直接插入127,没有报错,有警告。

代码语言:javascript
复制
mysql>  create table test(id tinyint);
Query OK, 0 rows affected (0.07  sec)

mysql> insert into test values(128);
Query OK, 1 row affected,  1 warning (0.02 sec)
mysql>  select*from test;
+------+
| id   |
+------+
|  127 |
+------+
1 row in set (0.00  sec)

-->字符类型 关于这个数据类型,对于varchar2是最不适应了。MySQL的varchar类型和oracle的varchar2使用是类似的。一个不同支持是MySQL支持的字符长度要小一些,只有256字节。

mysql中varchar(6)代表可以存放6个汉字,6个字母,或6个数字。 oracle中varchar2(6)代表可以中存放6个字节。这样的话mysql中一个汉字占三个字节,Oracle中一个汉字占两个字节。 对于lob类型,最大支持长度和oracle一致。都是4G的样子。MySQL中分得比较细,比较灵活。 -->日期类型 对于日期类型,可能Oracle支持得更广一些,类型分得更细。考虑了timezone的部分。不过大部分使用来说基本没什么差别,我目前还没有用到timezone相关的数据类型。

Datatype

Time Zone

Fractional Seconds

DATE

No

No

TIMESTAMP

No

Yes

TIMESTAMP WITH TIME ZONE

Explicit

Yes

TIMESTAMP WITH LOCAL TIME ZONE

Relative

Yes

顺带说一句,oracle和mysql中都可以使用current_date,current_timestamp。

代码语言:javascript
复制
SQL>  select current_date from  dual;
CURRENT_DATE
------------------
17-DEC-14

SQL> select  current_date from dual; select current_date from dual;   --oracle中不能并行运行两个查询
select current_date from dual; select  current_date from dual
                             *
ERROR at line  1:
ORA-00911: invalid character

mysql> select  current_date;select current_date;   --mysql里面就可以很轻巧的实现
+--------------+
| current_date  |
+--------------+
| 2014-12-17   |
+--------------+
1 row in set  (0.00 sec)


+--------------+
| current_date  |
+--------------+
| 2014-12-17   |
+--------------+
1 row in set  (0.00 sec)   
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2014-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档