关注下解释计划
1.oracle数据类型四类:字符,数值,日期,大对象!
字符
a: char(n),如果是位数不足n,他会用空格在右边补齐!
b:varchar(n),是符合工业标准的,可以存储空字符串
c:varchar2(n),不会存储空字符串,这是oracle推荐使用的类型!
数值型
number就包括了,整数,浮点,Oracle 没有定义整形(integer or int),但是Oracle 容许定义模个字段为整形,这是因为整形是工业标准的强制要求。但是Oracle会自动将integer转换为number存储,Oracle推荐所有的数值都是使用number,因为使用包括integer,float在内的多种数据类型实际上增加了用户在设计数据库时的复杂性!
日期时间型
日期格式不区分大小写
yyyy_mm_dd 和YYYY_MM_DD,yyyy_MM_dd是一样的,注意date里面是包含了时间的!
insert into Test_DATE VALUES('323',SYSDATE),其中的SYSDATE我以为是个没有参数的函数,实验表明他是个关键字,你加入个(),不行!它得到的结果是有时间的!
lob型
clob:文本,如备注
blob:二进制,如图片
bfile:文件
2,oracle中的特殊数据
a:rowid不能做为记录插入的数据表的先后标准,因为orcle总是查找空闲的空间插入!这个空间可能是以前删除的数据留下的!
b:Oracle 中将空字符串视为null,在Oracle中判空不能将该列的值与空字符串进行比较,应该使用 is null(空字符串不是空格)
3 双引号是对单引号的转译
4:
a:between判断可是是数值,字符串,日期,exists判断的必须有一条记录
b:Oracle高级函数——分析函数与窗口函数(以后慢慢研究)
分割------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
case
when a>1 then
when a>2 then
else
''''''''''''''''''''''''''''''
end case;
它还有另外的形式
case a
when 0 then
ween 1 then
else
end case;
case语句的另外一用法是作为表达式出现在select 中
csse when ? then score else 0 end
--------------------------------------------------------------------------------------------------分割
1:Union操作的各结果集,只要保证列数相同,各列的数据类型一致即可,并不要求有统一的列名,合并后的结果是是第一个结果集的名字
2:自然连接,全连接不考虑,内连接 select * rom a,b where a.id =b.id 和select *from a inner join b on a,id =b.id 是一样的!都是内连接!
左右连接这是连接的时候有一个主从的关系!,主表一定会显示出来的,如果主表的一条记录和从表的多条对应,那么主表的数据就会出现多次,如果,有个主表没有对象从表数据,那么这个行,从表数据是空,另外这个表示法时(+),(+)在哪个表上,谁就是从表!
3,层次化查询就是对迭代数据的查询 ,有个connect by (以后了解),就就是树
----------------------------------------------------------------------------------------------------------------------------------------------------分隔
1:delete 是针对删除表的整列数据,因此不需要加列名,和* ,delete 的from 可以省去(删除的是数据,不会回滚,速度快)
2:truncate属于DDL,所以需要用 table
truncate table test_table;(我们可以联想DDL都有了类型:如create table ,create view ,,,,但是DML 不需要了
delete ,select ,insert,他们不要说明类型了)