`
a0102051365
  • 浏览: 33295 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

oracle简单笔记学习

阅读更多
select...列名,表达式,函数
distinct,别名
from... 表名
where... 条件表达式betwween..and ...  ,like,in
order by... 列名,列别名,表达式,数字 desc,asc

函数 --------单行函数
字符函数 upper/lower/lpad/rpad/length/substr/replace/trim/concat
数字函数 round/trunc/mod
日期函数 sysdate
转换函数 to_char
通用函数 nvl
默认的日期格式:dd-mon-RR
日期格式:yyyy/year/mm/dd/day/hh24/mi/ss/am/month
日期函数:
months_between(sysdate,hiredate); 间隔多少个月份
select add_months(sysdate,6) from dual; 加上六个月
select add_months(sysdate.-6) from dual 六个月以前
select sysdate+6 from dual; 加上六天

select next_day(sysdate,5) from dual; 下一个周四
select next_day(sysdate,'FRI') from dual; 下一个周五
select next_day(sysdate.'星期五')from dual
英文环境下使用'FRI',中文环境下使用星期五,数字通用的
last_day(sysdate) from dual; 本月的最后一天

转换函数:
TO_NUMBER TO_DATE
select to_number('12')*13 from dual; //156
select to_number('$12,345.67','$99,999.99')from dual; //12345.67
9 数字位,
0 数字位,如果长度不够
数字<==>字符
select to_number('$12,345.67','$99,999.99')*0.1 from dual; //Integer.parseInt();
select to_number('ff','xx') from dual; //255
select to_char(12345,'$999,999.00')from dual; //12,345.00
select to_char(12345,'$000,000.00)from dual; //012,345.0
日期<==>字符
----------to_date('10 September 2009','dd Month yyyy')--------
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual; //2011-02-22 11:14:55
select to_char(sysdate,'yyyy/mm/dd day am') from dual; //2011/02/22 tuesday   am
select to_date('2000-10-10','yyyy-mm-dd')from dual; //10-OCT-00

insert into emp(empno,ename,hiredate
values(1234,'zhangsaan',sysdate));

insert into emp(empno,ename,hiredate
values(1235,'zhangwuji',to_date('2010-2-24','yyyy-mm-dd'));

通用函数
nvl,coalesce, ---空值处理函数
decode ---分支处理函数
coalesce(comm,sal,100)返回第一个非空的数值
select ename,sal,comm,nvl(comm,100)bouns  from emp; 如果奖金是空的话,就添加上100。
select ename,nvl(job,'not job yet') from emp; 将没有职位的人添加上not job yet这个职位
select ename,sal,comm,coalesce(comm,sal,100) from emp;

select ename,job,sal,decode(job,'SALESMAN',1.05*sal, if语句
      'ANALYST',1.1*sal,
      'MANAGER',1.15*sal,
sal) bonus  from emp;
多表查询
查找叫Smit的人的部门名称
select  t1.ename,t2.dname
from   t1 join t2
on   t1.c1= t2.c2
约束条件,用来保证数据的完整性
pk:primary key 主键,唯一的定位标识`
fk:foreign 外键用来表示表间的关系
select emp.ename,dept.dname
from emp join dept on emp.deptno=dept.deptno;
dept 被参照的表是主表,父表
emp:外键参照dept表,从表,子表
select emptno
------------------------内连接    三种表现形式 join on
select e.ename,e.job,e.sal,d.dname 等值连接
from emp e join dept d
on e.deptno=d.deptno
and e.job='MANAGER';

select e.ename,e.sal,s.grade 非等值连接
from emp e join salgrade s
on e.sal between s.losal and s.hisal;

自连接
select worker.ename,manager.ename
from emp worker join emp manager
on worker.mgr =manager.empno;
一张表里的记录一定在另一张表中存在匹配的记录,否则不能出现在结果集中
-----------------------外连接
select t1.cname,  t2.dname
from  t1
[left | right | full | outer | join ]
join t2    on  t1.c1=t2.c2;

select e.ename,d.dname //emp是驱动表,以驱动表里的数据在结果集中找
from emp e left outer join dept d
on e.deptno=d.deptno;

select e.ename,d.dname
from dept d left outer join emp e
on e.deptno=d.deptno;

select e.ename,d.dname
from dept d full outer  join emp e
on e.deptno=d.deptno;

哪些员工没有下属,不是别人的领导,
外连接+匹配表pk is null表示否定问题,不是不包括
select  worker.ename,manager.ename 列出所有的职员
from emp worker left outer join emp manager
on worker.mgr=manager.empno;

哪些部门没有叫smith的员工
1)用ename='SMITH'过滤emp表
2)用外连接dept做驱动表,得到结果集=有smith的部门(驱动表中匹配不到的记录)
3)用匹配表的pk is null过滤掉内连接的结果集
select d.dname from
emp e right outer join dept d on
e.deptno=d.deptno
and e.ename='SMITH' --现执行这条语句
where e.empno is null;

组函数(多行进去出来一行)
select count(*) from t1;
max/min/avg/sum/count
select min(sal) from emp;
select max(sal) from emp;
select sum(sal) from emp;
select avg(sal) from emp;
主函数嵌套单行函数
select avg(nvl(comm,0))from emp;

计算员工分布在几个部门
select distinct deptno from emp;
select count(distinct deptno) from emp;
按照部门分组,计算每个部门的总和
select deptno ,sum(sal)
from emp
group by deptno;
select sum(sal) from emp where deptno is null; //没有部门的薪水总和

按照职位分组,计算每个职位的平均薪水
select job,avg(sal) //分组函数要求   按照select中的某一个去group by的后面
from emp
group  by job;
在select后面所有的非主函数的列必须出现在group by后面-
---结论:select后面的非组函数的列和group by后面的列名保持一致
select deptno ,job ,avg(sal)
from emp
group by deptno ,job
order by deptno ,job;

分享到:
评论

相关推荐

    Oracle学习笔记.doc

    主要的形式是例子代码加代码解释加运行结果,我个人认为对于没有学习过oracle的同学是比较好的一个学习笔记,同时我对做的笔记都加了标题,做了一个简单的目录,对于已经学习过的同学也是一个很好的帮助文档,由于是...

    Oracle 10g 学习笔记

    这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...

    oracle 经典学习笔记

    Oracle数据库是一种广泛使用的大型关系型...Oracle数据库的学习笔记不仅能帮助初学者快速入门,而且对于中高级用户同样具备参考价值,特别是在学习和记忆数据库的众多命令和语法时,好的笔记可以显著提高学习效率。

    2011MLDN李兴华Oracle课堂笔记PDF档

    【标题】"2011MLDN李兴华Oracle课堂笔记PDF档" 是一份由学习者根据李兴华老师的Oracle教学视频截屏整理而成的学习资料,具有极高的实用价值。李兴华老师在IT行业内以其深入浅出的Oracle教学而闻名,这份笔记几乎与他...

    oracle学习笔记,oracle学习教材,oracle学习教程,oracle课件

    ### Oracle学习笔记与教程知识点详解 #### Oracle 9i概览与重要性 **Oracle 9i**,作为Oracle数据库发展史上的一个里程碑,不仅是一个简单的数据库服务器产品,更是一个全面的应用系统运行与开发平台。它标志着...

    Oracle超详细学习笔记

    ### Oracle超详细学习笔记 #### 一、基本查询与数据操作 ##### 1. 最简单的查询 - **命令示例**: ```sql SELECT * FROM employees; DESC employees; SET LINESIZE 600; SET PAGESIZE 50; ``` - **解释**: ...

    Oracle学习笔记_(PDF版)

    ### Oracle学习笔记要点 #### 一、SQL Plus的使用方法 - **命令行方式**: 在命令行中直接输入 `sqlplus` 命令,并随后输入用户名和密码。 - **客户端方式**: 使用Oracle提供的SQL Plus客户端工具进行登录。 - **Web...

    oracle 分析函数学习笔记

    标准SQL的UNION方法简单且通用,但性能可能不佳;而分析函数则在性能和便捷性之间找到了平衡,特别是对于Oracle数据库,它可以减少开发工作并提供高效的数据处理。 分析函数的基本语法如下: ```sql function_name...

    oracle学习文档(笔记)

    Oracle 学习文档笔记 Oracle 是一种关系型数据库管理系统,它提供了强大的数据存储和管理功能。本笔记将覆盖 Oracle 的基本操作、PL/SQL 编程和数据库操作的相关指令。 数据库基本操作 在 Oracle 中,创建用户、...

    Oracle最简单易懂的学习笔记

    Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记

    Oracle 学习笔记

    ### Oracle 学习笔记知识点详解 #### 一、Oracle 数据库简介 Oracle 是一款由美国甲骨文公司开发的关系型数据库管理系统。它以其强大的数据处理能力、高度的安全性及稳定性而闻名于世,在金融、电信、政府等领域...

    oracle最全学习笔记(个人总结)

    ### Oracle 最全学习笔记知识点梳理 #### 一、存储过程 - **定义**:存储过程是一种在数据库中存储复杂程序以便外部程序调用的一种数据库对象。 - **应用场景**:主要用于执行大量的更新或插入操作,以提高数据库...

    oracle学习笔记1

    在尚学堂马世兵的Oracle课堂笔记中,我们能看到一系列基础的SQL查询语句,这些都是学习Oracle数据库不可或缺的部分。 首先,`DESC`命令用于获取表的结构信息,例如`DESC emp`、`DESC dept`和`DESC salgrade`分别...

    韩顺平oracle学习笔记

    韩顺平oracle学习笔记 第0讲:如何学习oracle 一、如何学习oracle Oracle目前最流行的数据库之一,功能强大,性能卓越。学习oracle需要具备一定基础: 1.学习过一门编程语言(如:java ,c) 2.最好学习过一门别的...

    oracle学习笔记001_oracle10g安装

    本文将详述“Oracle学习笔记001_oracle10g安装”中的关键知识点,帮助初学者理解并掌握Oracle 10g的安装过程。 首先,安装Oracle 10g前,需要确保你的操作系统环境满足其兼容性要求。Oracle 10g支持Windows、Linux...

    oracle学习笔记sql练习

    本资料包是针对Oracle SQL的学习笔记,包含了丰富的练习题及解答,旨在帮助学习者深入理解和掌握SQL在Oracle环境中的运用。 1. **SQL基本查询操作** "1.SQL基本查询操作.txt"这部分内容可能涵盖了简单的SELECT语句...

Global site tag (gtag.js) - Google Analytics