oracle之SQL的数据类型
SQL的数据类型
3.1 四种基本的常用数据类型(表的字段类型)
1、字符型, 2、数值型,3、日期型,4、大对象型
3.1.1 字符型:
char 固定字符,最长2000个
varchar2 可变长字符,最长4000个,最小值是1
nchar/nvarchar2 NCHAR/NVARCHAR2类型的列使用国家字符集
raw和long raw 固定/可变长度的二进制数据长度 最长2G,可存放多媒体图象声音等。(老类型,逐步淘汰)
LONG 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,一个表中最多一个LONG列。(老类型,逐步淘汰)。
3.1.2 数值型:
number(p,s) 实数类型,以可变长度的内部格式来存储数字。这个内部格式精度可以高达38位。
int 整数型,number的子类型,范围同上
3.1.3 日期型:
date 日期的普通形式,表示精度只能到秒级。
timestamp 日期的扩展形式,表示精度可达秒后小数点9位(10亿分之1秒)。
timestamp with timezone 带时区
timestamp with local timezone 时区转换成本地日期
系统安装后,默认日期格式是DD-MON-RR, RR和YY都是表示两位年份,但RR是有世纪认知的,它将指定日期的年份和当前年份比较后确定年份是上个世纪还是本世纪(如表)。
当前年份 指定日期 RR格式 YY格式
------------------------------------------------------------------------------
1995 27-OCT-95 1995 1995
1995 27-OCT-17 2017 1917
2001 27-OCT-17 2017 2017
2013 27-OCT-95 1995 2095
3.1.4 LOB型:大对象是10g 引入的,在11g中又重新定义,在一个表的字段里存储大容量数据,所有大对象最大都可能达到4G
CLOB: 用来存储单字节的字符数据,包含在数据库内。
NCLOB:用来存储多字节的字符数据
BLOB:用于存储二进制数据,包含在数据库内。
BFILE:存储在数据库之外的二进制文件中,这个文件中的数据只能被只读访问。
CLOB,NCLOB,BLOB都是内部的LOB类型,没有LONG只能有一列的限制(考点)。
保存图片或电影使用BLOB最好、如果是小说则使用CLOB最好。
虽然LONG RAW也可以使用,但LONG是oracle将要废弃的类型,因此建议用LOB。
当然说将要废弃,但还没有完全废弃,比如oracle 11g里的重要视图dba_views,对于text(视图定义)仍然沿用了LONG类型。
Oracle 11g重新设计了大对象,推出SecureFile Lobs的概念,相关的参数是db_securefile,采用SecureFile Lobs的前提条件是11g以上版本,ASSM管理等,符合这些条件的BasicFile Lobs也可以转换成SecureFile Lobs。较之过去的BasicFile Lobs, SecureFile Lobs有几项改进:
1)压缩,2)去重,3)加密。
当create table定义LOB列时,也可以使用LOB_storage_clause指定SecureFile Lobs或BasicFile Lobs
而LOB的数据操作则使用Oracle提供的DBMS_LOB包,通过编写PL/SQL块完成LOB数据的管理。
3.2 数据类型的转换
隐性类型转换和显性类型转换。
3.2.1 隐性类型转换:
是指oracle自动完成的类型转换。在一些带有明显意图的字面值上,可以由Oracle自主判断进行数据类型的转换。 如:
SQL> select empno,ename from emp where empno='7788'; //empno本来是数值类型的,这里字符'7788'隐性转换成数值7788
EMPNO ENAME
---------- ----------
7788 SCOTT
SQL> select length(sysdate) from dual; //将date型隐转成字符型后计算长度
LENGTH(SYSDATE)
---------------
19
SQL> SELECT '12.5'+11 FROM dual; // 将字符型‘12.5’隐转成数字型再求和
'12.5'+11
----------
23.5
SQL> SELECT 10+('12.5'||11) FROM dual; //将数字型11隐转成字符与‘12.5’合并,其结果再隐转数字型与10求和
10+('12.5'||11)
---------------
22.511
3.2.2 显性类型转换是强制完成类型转换(推荐),有三种形式的转换函数:
TO_CHAR
TO_DATE
TO_NUMBER
1)日期-->字符
SQL> select ename, hiredate, to_char(hiredate, 'DD-MON-YY') month_hired from emp where ename='SCOTT';
ENAME HIREDATE MONTH_HIRED
---------- ------------------- --------------
SCOTT 1987-04-19 00:00:00 19-4月 -87
fm压缩空格或左边的'0'
SQL> select ename, hiredate, to_char(hiredate, 'fmyyyy-mm-dd') month_hired from emp where ename='SCOTT';
ENAME HIREDATE MONTH_HIRED
---------- ------------------- ------------
SCOTT 1987-04-19 00:00:00 1987-4-19
//其实DD-MM-YY是比较糟糕的一种格式,因为当日期中天数小于12时,DD-MM-YY和MM-DD-YY容易造成混乱。
2)数字-->字符:9表示数字,L本地化货币字符
SQL> select ename, to_char(sal, 'L99,999.99') Salary from emp where ename='SCOTT';
ENAME SALARY
---------- --------------------
SCOTT ¥3,000.00
3)字符-->日期
SQL> select to_date('1983-11-12', 'YYYY-MM-DD') tmp_DATE from dual;
TMP_DATE
-------------------
1983-11-12 00:00:00
4)字符-->数字:
SQL> SELECT to_number('$123.45','$9999.99') result FROM dual;
RESULT
----------
123.45
考点:使用to_number时如果使用较短的格式掩码转换数字,就会返回错误。不要混淆to_number和to_char转换。
例如:
SQL> select to_number('123.56','999.9') from dual;
select to_number(123.56,'999.9') from dual
*
第 1 行出现错误:
ORA-01722: 无效数字
SQL> select to_char(123.56,'999.9') from dual;
TO_CHA
------
123.6
oracle之SQL的数据类型的更多相关文章
- Oracle、SQL Server、MySQL数据类型对比
1,标准SQL数据类型 BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中.不需数据转换(例如,转换到文本数据).数据输入二进制字段的方式决定了它的输出方式. BIT 1 个字 ...
- Oracle的SQL基础
1.了解SQL的种类 (1)DDL 数据定义语言:定义数据库中数据要如何存储的,包括对数据库对象的创建(create)修改(alter)删除(drop)的操作,这些对象主要有数据库,数据表,视图,索引 ...
- Datatypes translation between Oracle and SQL Server
Datatypes translation between Oracle and SQL Server part 1: character, binary strings Datatypes tran ...
- Oracle PL/SQL
PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- oracle PL/SQL(procedure language/SQL)程序设计
PL/SQL(procedure language/SQL)语言是Oracle对SQL语言的过程化扩充,是一个完整的编程语言.PL/SQL实现了过程化语句(如分支.循环等)与SQL语句的无缝连接,将过 ...
- 初级Oracle和SQL学习者的学习笔记。韩顺平-玩转oracle。
我自己就是一个oracle和sql的初学者,前段时间看了韩顺平老师的oracle视频教程,觉得很深入浅出,收获了很多.同时自己也做了不少笔记,现在想将纸质笔记以自己的话总结出来.俗话说得好:教学总是相 ...
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...
- ORACLE PL/SQL编程之八:把触发器说透
原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...
随机推荐
- HTML实例-01-轮播图
body部分 <div class="outer"> <ul class="img-list"> <li><a hr ...
- 将本地项目推送到远程gitee仓库(通过git命令)
只有经历过地狱般的磨砺,才能练就创造天堂的力量: 只有流过血的手指,才能弹出世间的绝响 将本地的项目推送到远程gitee仓库 本地新建的Java项目,想推送到远程gitee仓库或者git仓库,你需要两 ...
- N46期第一周作业
1.解释drwx rwx rwx中每个字符表⽰什么? d : 表示目录文件 ①rwx表示UID的读写执行权限 ②rwx表示GID的读写执行权限 ③rwx表示other的读写执行权限 2.li ...
- mycat数据库集群系列之mycat读写分离安装配置
最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考.本次系列终结大概包括以下内容:多数据库安装.mycat部署安装.数据库之读写分离 ...
- leetcode刷题记录——哈希表
1.两数之和 可以先对数组进行排序,然后使用双指针方法或者二分查找方法.这样做的时间复杂度为 O(NlogN),空间复杂度为 O(1). 用 HashMap 存储数组元素和索引的映射,在访问到 num ...
- Redis哨兵模式的配置
绪论 现有三台设备,192.168.137.11.192.168.137.12和192.168.137.13,要求在三台设备上实现redis哨兵模式,其中192.168.137.11为master,其 ...
- 2020.5.24 第四篇 Scrum冲刺博客
Team:银河超级无敌舰队 Project:招新通 项目冲刺集合贴:链接 目录 一.每日站立会议 1.1 会议照片 1.2 项目完成情况 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3. ...
- 兄弟,别再爬妹子图了整点JS逆向吧--陆金所密码加密破解
好久没有写爬虫文章了,今晚上得空看了一下陆金所登录密码加密,这个网站js加密代码不难,适合练手,篇幅有限,完整js代码我放在了这里从今天开始种树,不废话,直接开整. 前戏热身 打开陆金所网站,点击到登 ...
- 牛客网PAT练兵场-福尔摩斯的约会
题目地址:https://www.nowcoder.com/pat/6/problem/4040 题意:模拟题,循环找相同的字母,但是注意题目的坑 /** * *作者:Ycute *时间:2019-1 ...
- lammps-MD整体思路
1.收敛性测试 (1)由不同尺寸模型(不同的原子数)和E的关系曲线,再确定尺寸n*n*n: 2.优化结构(nve-nvt-npt) 系综的实现方式(相关命令):https://www.cnblogs. ...