MySQL数据类型

发表于:2014-12-19 09:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:jeanron100    来源:51Testing软件测试网采编

分享:
  -->日期类型
  -->数值类型
  所以在oracle我们常使用的number,基本可以使用int来代替了。
  在oracle中通过number能够控制数据的精度,比如我们制定Number(2),那么你如果数值过界了,就会直接报错。支持的数据范围精度也很高。可能在MySQL中会基于数据类型有对应的存储特性吧。
  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,没有报错,有警告。
  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相关的数据类型。
  顺带说一句,oracle和mysql中都可以使用current_date,current_timestamp。
  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)
22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号