- 浏览: 33684 次
- 性别:
- 来自: 哈尔滨
最新评论
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;
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;
发表评论
-
android 转载Intent应用
2011-03-14 21:12 659From:http://www.cnblogs.com/stu ... -
xml 学习1
2011-03-03 18:57 720一.xml基础: 二.xml语法 三.DTD 四.java a ... -
jdbc 可滚动结果集合,分页技术
2011-03-02 20:24 924jdbc2.0 一.可滚动的结果 ... -
jdbc笔记心得
2011-03-02 08:24 685CallableStatement: 存储过程 建立一 ... -
jdbc心得笔记01
2011-03-02 07:59 654介绍JDBC 开发JDBC应用程序 1新建java proje ... -
oracle简单笔记学习4
2011-02-27 20:39 749create table student( --完整 ... -
oracle简单笔记学习3
2011-02-27 20:38 653外键 被参照的表是主表 ... -
oracle简单笔记学习2
2011-02-27 20:34 684select from where group by h ... -
笔记心得12
2011-02-23 21:41 648集合的迭代(遍历)(模仿了数鸡蛋的方式) 1 java ... -
笔记心得11
2011-02-23 21:39 569Java 时间 1 时间标准:long GMT UTC ... -
笔记心得10
2011-02-12 08:37 669IO总结 InputStream |==节 ... -
笔记新的09
2011-01-25 20:37 631... -
笔记心得08
2011-01-24 21:08 0... -
笔记心得07
2011-01-21 21:11 597接口 1 接口:全部的 ... -
笔记心得06
2011-01-21 12:47 606... -
笔记心得05
2011-01-20 08:53 660... -
笔记心得04
2011-01-18 19:07 648... -
笔记心得03
2011-01-18 08:35 849... -
笔记心得02
2011-01-16 19:00 6131) continue 就是结苏当前所执行的语句,继续执行下 ... -
笔记心得01
2011-01-16 13:43 468第一周个人知识汇总 ***心若冰清,天塌不惊*** 1 ...
相关推荐
主要的形式是例子代码加代码解释加运行结果,我个人认为对于没有学习过oracle的同学是比较好的一个学习笔记,同时我对做的笔记都加了标题,做了一个简单的目录,对于已经学习过的同学也是一个很好的帮助文档,由于是...
这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...
Oracle数据库是一种广泛使用的大型关系型...Oracle数据库的学习笔记不仅能帮助初学者快速入门,而且对于中高级用户同样具备参考价值,特别是在学习和记忆数据库的众多命令和语法时,好的笔记可以显著提高学习效率。
【标题】"2011MLDN李兴华Oracle课堂笔记PDF档" 是一份由学习者根据李兴华老师的Oracle教学视频截屏整理而成的学习资料,具有极高的实用价值。李兴华老师在IT行业内以其深入浅出的Oracle教学而闻名,这份笔记几乎与他...
### Oracle学习笔记与教程知识点详解 #### Oracle 9i概览与重要性 **Oracle 9i**,作为Oracle数据库发展史上的一个里程碑,不仅是一个简单的数据库服务器产品,更是一个全面的应用系统运行与开发平台。它标志着...
### Oracle超详细学习笔记 #### 一、基本查询与数据操作 ##### 1. 最简单的查询 - **命令示例**: ```sql SELECT * FROM employees; DESC employees; SET LINESIZE 600; SET PAGESIZE 50; ``` - **解释**: ...
### Oracle学习笔记要点 #### 一、SQL Plus的使用方法 - **命令行方式**: 在命令行中直接输入 `sqlplus` 命令,并随后输入用户名和密码。 - **客户端方式**: 使用Oracle提供的SQL Plus客户端工具进行登录。 - **Web...
标准SQL的UNION方法简单且通用,但性能可能不佳;而分析函数则在性能和便捷性之间找到了平衡,特别是对于Oracle数据库,它可以减少开发工作并提供高效的数据处理。 分析函数的基本语法如下: ```sql function_name...
Oracle 学习文档笔记 Oracle 是一种关系型数据库管理系统,它提供了强大的数据存储和管理功能。本笔记将覆盖 Oracle 的基本操作、PL/SQL 编程和数据库操作的相关指令。 数据库基本操作 在 Oracle 中,创建用户、...
Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记 Oracle最简单易懂的学习笔记
### Oracle 学习笔记知识点详解 #### 一、Oracle 数据库简介 Oracle 是一款由美国甲骨文公司开发的关系型数据库管理系统。它以其强大的数据处理能力、高度的安全性及稳定性而闻名于世,在金融、电信、政府等领域...
### Oracle 最全学习笔记知识点梳理 #### 一、存储过程 - **定义**:存储过程是一种在数据库中存储复杂程序以便外部程序调用的一种数据库对象。 - **应用场景**:主要用于执行大量的更新或插入操作,以提高数据库...
在尚学堂马世兵的Oracle课堂笔记中,我们能看到一系列基础的SQL查询语句,这些都是学习Oracle数据库不可或缺的部分。 首先,`DESC`命令用于获取表的结构信息,例如`DESC emp`、`DESC dept`和`DESC salgrade`分别...
在学习和工作中,每个知识点都有不同的掌握程度要求,从简单的理解代码逻辑、到可以独立编写代码、再到深入理解原理和概念。同时,课程也强调了测试、考勤、项目、毕业设计和日志等就业标准,体现了对学员综合素质的...
韩顺平oracle学习笔记 第0讲:如何学习oracle 一、如何学习oracle Oracle目前最流行的数据库之一,功能强大,性能卓越。学习oracle需要具备一定基础: 1.学习过一门编程语言(如:java ,c) 2.最好学习过一门别的...
本文将详述“Oracle学习笔记001_oracle10g安装”中的关键知识点,帮助初学者理解并掌握Oracle 10g的安装过程。 首先,安装Oracle 10g前,需要确保你的操作系统环境满足其兼容性要求。Oracle 10g支持Windows、Linux...
本资料包是针对Oracle SQL的学习笔记,包含了丰富的练习题及解答,旨在帮助学习者深入理解和掌握SQL在Oracle环境中的运用。 1. **SQL基本查询操作** "1.SQL基本查询操作.txt"这部分内容可能涵盖了简单的SELECT语句...