Oracle笔记1

ORACLE:

 目前分为12C(cloud云)和11G(grid网格)版本

--数据库基本概念

data--数据

database--数据库

DBMS--数据库管理系统

RDBMS--关系型数据库管理系统

ORDBMS--对象关系型数据库管理系统



--SQL概述

SQL(Structured query language)结构化查询语言



--SQL 分类

SELECT --数据库查询语句DQL

INSERT DELETE UPDATE  MERGE--数据库操作语句DML

CREATE ALTER DROP TRUNCATE RENAME COMMENT--数据库定义语句DDL

COMMIT ROLLBACK SAVEPOINT--事物控制语句TCL



--OracloraDb11g_home1INSListener这个是网络监听器的服务,开始才能通过外部访问。

--OrcalService ORCL:数据库实例服务



--比较运算符: >,>=,<,<=,=,<>,!=,^=

--特殊运算符:[not]between...end

            [not] like

            [not] in

            is [not] null 

--多条件使用:and or not 连接







/*--单行函数练习

    查询与表无关 FROM 后面是 dual*/

--转小写,大写,单词首字母大写

select lower('Hello'),upper('Hello'),initcap('Hello evan')

from dual;

-------------------------------------------字符串

--去掉指定字符(去全部,去左边字符,去右边字符)

select TRIM('H'FROM 'HELLOHH'), ltrim('helloh','h'), rtrim('helloh','h') FROM dual;



--补齐(参数解释:数值,几位数,不够用什么补)输出:*100和100*

select lpad(100,4,'*'),rpad(100,4,'*')

from dual;



--查找位置,相当于indexOf,ORCALE的索引从1开始返回7

select instr('hello tom','tom') from dual;



--substr()//返回llo,ll

select substr('hello',3), substr('hello', 3, 2)

from dual;



--连接字符,和求长度

select concat('hello','evan'),length('abc')

from dual;



--替换

select replace('hello','h','a')

from dual;

--------------------------------------------number

--四舍五入[小数点后保留几位小数][小数点前保留几位]

select round(123.456,2),round(123.456,-2),round(123.45,0), round(123.45)

from dual;



--去尾数 不进行四舍五入

select trunc(12.456,2),trunc(12.456,-2),trunc(12.456,0),trunc(12.456)

from dual;



--取模(求余数)

select mod(13,2) from dual;



----------------------------------------date

--获取当前日期 +2代表加两天或者-2 

select sysdate +2 from dual;

--加月份

select add_months(sysdate,3) from dual;

--月份范围

select months_between(sysdate, hiredate)from emp;

--获取当前月份的最后一天

select last_day(sysdate)from dual;

--获取年月日year,month,day

select extract(day from sysdate)

FROM dual;

--计算天数差

select round(to_number(TO_DATE('2015-07-24','YYYY-MM-DD')-TO_DATE('2015-07-23','YYYY-MM-DD')))from dual;

--计算小时差

select round(to_number(TO_DATE('2015-07-24','YYYY-MM-DD')-TO_DATE('2015-07-23','YYYY-MM-DD'))*24)from dual;



------------------------------------转换函数

--to_char:将日期或数值按指定格式转换成字符

select to_char(sysdate,'yyyy-mm-dd HH24:MI:ss DAY')from dual;--hh:mi:ss day星期几

select to_char(123456)from dual;

select to_char(105,'L9,999,999.00')from dual;--¥105.00



--to_date:将指定格式的字符串转换为日期

SELECT TO_DATE('1998-09-02','YYYY-MM-DD')FROM DUAL;



--to_number:字符串转换成数值

SELECT TO_NUMBER('123')FROM DUAL;



----------对空值的转换,comm列中空的用0代替

select ename,nvl(comm,0)from emp;

-------val2:[comm数据列,不为空用0,为空用1]

select ename,comm,nvl2(comm,0,1)from emp;

----nullif(列名,为空用什么代替)



---------------------------------分支判断

---case练习

select ename, deptno, sal,

case

  when deptno=10 then sal+10

  when deptno=20 then sal+20

  else sal end as addsal

from emp;



---decode

select ename, deptno, sal,

decode(deptno,

       10,sal+10,

       20,sal+20,

       30,sal+30,

       sal)

from emp;



---------------------------集合函数

--max,min,count,sum,avg

select MAX(hiredate), MIN(hiredate),MAX(sal), MIN(sal)

from emp;

select count(*)from emp;

------------分组

--group by 将查询结果按指定列分组  

--having 指定分组必须要满足的条件

--非分组列必须包含在group by 中

select deptno,max(sal),min(sal)

from emp group by deptno having deptno in (10,20);

  

  

你可能感兴趣的:(oracle)