Oracle 笔记

起因

因为换了工作,现在的公司主要使用Oracle数据库,所以最近在熟悉Oracle数据库的语法,因为自己对PostgreSql感兴趣,所以在学Oracle语法的时候,会PostgreSql的语法也进行学习和使用.

1. 获取当前日期

--获取当前时间 
SELECT NOW();

--获取当天
SELECT CURRENT_DATE;

2. 创建视图

--创建视图
CREATE VIEW  cls_view as 
SELECT * FROM cls ;

--删除视图
DROP VIEW cls_view

3. 数据转换

在数据库中进行数据转换,有时候用于行转列
--主流的数据库 都支持case when 语法
SELECT SUM( CASE evaluate WHEN '优' THEN 1 ELSE 0 END )  AS 优 ,
SUM( CASE evaluate WHEN '良' THEN 1 ELSE 0 END )  AS 良, 
SUM( CASE evaluate WHEN '差' THEN 1 ELSE 0 END )  ASFROM cls

游标的使用

--做表中查找某一个列的内容,根据id进行替换部分内容
DECLARE
	keyId		 Varchar2(36); --(游标使用)主键Id
	colName          Varchar2(64); --(游标使用)列名
	txt		 Varchar2(64); --(游标使用)查找的文本
        cursor cursor_colName_view is select keyId,colName from d_patientinfo; --定义游标

begin 
	txt := '123';
	open cursor_colName_view;
	fetch cursor_colName_view into keyId,colName;
		while cursor_colName_view %found
			loop
				--DBMS_OUTPUT.PUT_LINE('==========='|| colName ||'------'|| keyId); 
				if instr(colName,txt) > 0 
				then  
				    --DBMS_OUTPUT.PUT_LINE(colName||'------'||replace(tableName,txt,'456'));   
				    update d_patientinfo x set x.biaoming = replace(colName,txt,'456')  where x.id = keyId;
				end if;
				fetch cursor_colName_view into keyId,colName;
			end loop;
	close cursor_colName_view;  
end

类型转换

--日期格式化 2020-09-27 21:36:37
select to_char('2020-09-27 21:36:37','yyyy-MM-dd') 
select to_char('2020-09-27 21:36:37','hh24:mi:ss') 

--数值  100.99
select to_char(100.99,'999.99')
秋风 2020-07-29