--数据类型
-- 字符数据类型
--数值数据类型
--日期时间数据类型
--二进制类型
--LOB数据类型
--Oracle中的伪列

--字符数据类型(char(10) , varchar2(20),long)

--数值数据类型 number(p,s)
number(4) 最大表示位整数 -9999 到9999
number(5,2) 表示5位有效数字 2位小数的 一个小数
范围从-999.99 到 999.99

create table tt
(
aa number(10,2)
)

insert into tt values(12345678.900)
insert into tt values(12345678.9260) --当超过精度位数时,会四舍五入
insert into tt values(12345678.923) --当超过精度位数时,会四舍五入

drop table tt;

--修改表中字段的数据类型(比较SQL SERVER)
alter table tt
modify aa number(10)

insert into tt values(1234.567890) --四舍五入

select * from tt;

delete from tt;

alter table tt
modify aa number(10,-2)--表示我们精确到百位

insert into tt values(1232434.34)

--日期时间类型
--date
select sysdate from dual; --dual是一张伪表

select * from dual;--dual表的作用就是当我们的操作要查询的内容没有表对应的时候

select 23*12 from dual;


--Timestamp数据类型(精度的区别)
select systimestamp from dual;

--RAW数据类型
存储基于字节的数据,如二进制数据或者是字符串
最多能保存2000个字节
该数据类型没有默认的大小,使用时需指定大小
可以在RAW数据类型上面建立索引

--Long RAW 数据类型
存储可变长度的二进制数据
最多能保存2GB
该数据类型上面不能建立索引
同时LONG数据类型受到的所有限制同样对LONG RAW数据类型有效

--LOB数据类型
该类型用于存储多达4G的非结构化信息,比如声音剪辑、视频剪辑等
一个表可以有多列定义为LOB类型的
Oracle总LOB数据类型有
CLOB
BLOB
BFILE

--Clob
代表Character LOB(字符LOB)
用于存储大量的字符数据
可以存储单字节字符数据和多字节字符数据
可以用于存储非结构化的XML文档

--blob
代表Binary LOB(二进制LOB)
用于存储较大的二进制对象,如图形、声音、视频等

--BFILE数据类型
代表Binary File(二进制文本)
它能够将二进制文件存储在数据库外部的操作系统文件中
BFILE列存储一个BFILE定位器,它指向位于服务器文件系统上的二进制文件。
支持文件最大为4GB
小型项目里面基本不使用

--伪列
伪列就像oracle中的一个表列,但实际上它并未存储在表中。
伪列可以从表中查询,但是不能插入、更新或者删除它们的值。

--rowid
数据库中的每一行都有一个行地址,ROWID伪列返回该行的地址
可以使用ROWID来定位表中的一行
ROWID值可以唯一标识数据库中的一行
ROWID用途:
能以最快的方式访问表中的一行
能显示表的行是如何存储的
可以作为表中行的唯一标识
select rowid,ename from emp;查看rowid

--ROWNUM伪列
对于一个查询返回的每一行,
ROWNUM伪列返回一个数值代表行的次序。
返回的第一行的ROWNUM值为1,第二行的ROWNUM值为2,
以此类推。通过使用ROWNUM伪列,用户可以查询返回的行数

select * from emp where deptno=20 order by sal desc;

select * from emp where deptno=20 and rownum<3 order by sal desc;