Oracel数据库学习
1、小型数据库 access,foxbase
中型数据库 mysql,sqlserver,informix
大型数据库 sybase,Oracle,db2
Oracle数据库需求量最大
2、 Oracle安装完会默认产生三个用户
3、 Oracle管理工具
4、 sql*plus常用命令
5、 创建用户
6、 使用profile管理用户口令
7、 Oracle的表的管理
字符型:char()定长的,定长多少个字符,就是多

少个字符,不够的会用空格补齐。查询速度非常快。如

果这个字段经常被查询,而查询长度不变,比如都是身

份证号码就用这个char()类型
varchar2() 变长
clob 字符型大对象,最大4G
数字型:number
小数一个(5,2)表示一个小数有五位有效数,二

位小数
时间型:data

------------查询从这里开始-----------------------
8、 字段名:jop:职位 sal:工资 comm:奖金
empno:编号 mgr:上级编号 ename:姓名
hiredate :入职日期 deptno:部门编号
emp 雇员表
dept部门表
salgrade 工资级别表

desc+表名 查看表结构
select+列名,列名 from 表名
set timing on 打开显示操作时间的开关,执行后

会显示以后查询的时间
疯狂复制表中数据:
insert into users

(userid,username,userpss)select*from users
select distinct 列名 from 表名 去除重复行
select sal*13+ as "年工资" ,ename from emp

9、如何处理null值:comm为列名
select sal*13+nvl(comm,0) as "年工资" ,ename

from emp
10、where子句
select ename,sal from emo where sal>3000
selectename,hiredate from emp where

hiredate>'1-1月—1982' 查询入职日期在1982年以后

的,注意查询的时间日期格式

select ename,sal from emp where sal>=2000
and sal<=2500 多个条件加and

11、like操作符
% 表示任意0到多个字符
_ 表示单个字符
select ename,sal from emp where ename like 'S

%'

12、where条件中加in
select*from emo where empno in()
select*from emo where mgr is null

13、使用逻辑操作符号
select*from emp (where sal>500 or

job='mangger') and eame like ‘S%’

14、order by语句
select*from emp order by sal asc/desc

部门号升序,工资降序
select*from emp order by deptno,dal desc

按年薪升序
select ename,(sal+nvl(comm,0))*12 from emp

order by "年薪";

复杂查询:max,min,avg,sum,count
15、分页查询。oracle数据库分页查询很难理解!!!

第一步:rownum分页
select* from emp
第二步:显示rownum[oracel分配的]
select a1.*,rownum rn from (select* from emp) a1
第三步:查询数据(查询一个表中第五条和第十条数据)
select*from(
select*from(select a1.*,rownum rn from(select*from emp) a1 where rownum<=10)
)where rownum>=5
比较难理解,先查出10条数据,在去掉前5条数据,查询语句难写,但是查询速度快

第四步:
a:指定查询列,只需修改最里层的子查询
select*from(
select*from(select a1.*,rownum rn from(select ename,sal from emp) a1 where rownum<=10)
)where rownum>=5
b:排序
select*from(
select*from(select a1.*,rownum rn from(select ename,sal from emp order by sal) a1 where rownum<=10)
)where rownum>=5

这种分页查询可以当成一个公式来记住

16、子查询
查最高工资.查两个列,两个列都必须是分组函数
select max(sal),min(sal) from emp
select ename,sal from sal=(select max(sal)

from emp)

查询比平均工资的人高的员工的情况
select*from emp where sal>(select avg(sal)

from emp)

17、group by和having子句
group by对于查询的结果分组统计
having子句用于限制分组显示结果

显示每个部门的平均工资和最高工资
select avg(sal),max(sal),deptno from emp gr
oup by deptno
显示每个部门的每种岗位的平均工资和最低工资
select avg(sal),max(sal),deptno,job from emp

group by deptno,jop
显示平均工资大于2000的部门号和它的平均工资
select avg(sal),max(sal),deptno from
emp group by deptno having avg(sal)>2000

!!!!对数据分组查询的总结
第一条:分组函数只能出现在选择列、having、order

by子句中
第二条:如果在select语句中同时包含有group

by,having,order by那么他的顺序是group

by,having,order by——分组—筛选—排序

第三条:在选择列中如果有列、表达式、和分组函数,

那么这些列和表达式必须有一个出现在group by子句中

18、多表查询
select a1.ename,a1.sal,a2.dname from emp

a1,dept a2 where a1.deptno=a2.deptno

笛卡尔积:多表查询的条件是条件至少不能少于表的个

数减1

select a1.dname,a2.ename,a2.sal from dept

a1,emp a2 where a1.deptno=a2.deptno and

a1.deptno=10

三表查询:between...and 语句

显示员工的姓名,工资,及工资的级别
select a1.ename,a1.sal,a2.grade from emp

a1,aslgrade a2 where a1.salbetween a2.losal and a2.hisal
显示雇员名,雇员工资及所在部门的名字,并按部门排序.多表可以排序,order by 前面不一定非要排序的字段名
select a1.ename,a2.dname,a1.sal from emp a1,dept a2 where a1.deptno=a2.deptno order by
a1.deptno

20、自连接
显示某个员工的上级领导的姓名。在同一个表中,可以默认是两个相同的表,语句这样写:
select worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno
and worker.ename=‘fot’

21、子查询,也叫嵌套查询
嵌套在一个嵌入在其它sql语句中的select语句
第一种:单行子查询是指返回一行数据的子查询语句
查询和某个人一个部门的员工:
select*from emp where deptno=
(select deptno from emo where eanme=“jop”)

第二种:多行子查询.
关键字 in
select*from emp where job in(select destinct job from emo where deptno=10)
关键字 all
显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号,也可以用max
select ename,sal,deptno from emp where sal>all
(select sal from emp where deptno=30)
关键字any
显示工资比部门30的任何一个员on个的工资高的员工的姓名、工资和部门号
select ename,sal,deptno from emp where sal>any
(select sal from emp where deptno=30)

22、多列子查询
select*from emp where(deptno,job)=(select deptno,jop from emp where ename='job')

23、在from子句中使用子查询
查询高于自己部门平均工资的员工的信息
第一步:查询出各个部门的平均工资和部门号
select deptno,avg(sal) mysal from emp group by deptno
第二步:把上次查询的结果当成一个新表

select a2.ename,a2.sa1,a1.deptno,a1.mysal from emp a2,(select deptno,avg(sal) mysal from emp group by deptno)a1 where a2.deptno=a1.deptno and a2.sal>a1.mysal

这里需要说明的是当在from子句中使用子查询时,该子查询会被作为一个视图来对待,因此叫作内嵌视图,当在from子句中使用子查询时,必须给子查询指定别名

24、查询表中数据
select count(*) from emp

25、用查询结果创建新表
creat talbe mytable(id,name,sal)
as select empno ,ename,sal from emp

26、合并查询,可以使用集合操作符号
union,union all,intersect,minus
union:
select ename,sal,job from emp where sal>2500
union select ename ,sal,job from emp where job='MANGER'

oracel数据库基本知识和基本查询方法的更多相关文章

  1. MyBatis中#{ }和${ }的区别,数据库优化遵循层次和查询方法

    MyBatis中#{ }和${ }的区别详解 1.#将传入的数据当成一个字符串,会对自动传入的数据加一个 双引号. 例如order by #id#,如果传入的值是111,那么解析成sql时变为orde ...

  2. 【Java EE 学习 17 下】【数据库导出到Excel】【多条件查询方法】

    一.导出到Excel 1.使用DatabaseMetaData分析数据库的数据结构和相关信息. (1)测试得到所有数据库名: private static DataSource ds=DataSour ...

  3. ThinkPHP 数据库操作(三) : 查询方法、查询语法、链式操作

    查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%th ...

  4. 查询MySQL数据库中表结构的几种方法

    什么是表结构?表结构就是定义数据表文件名,确定数据表包含哪些字段,各字段的字段名.字段类型.及宽度,并将这些数据输入到计算机当中. 查询方法:以表‘employees’为例子 1.describe(d ...

  5. rails的数据库查询方法

    rails的数据库查询方法 学习了:http://blog.csdn.net/menxu_work/article/details/8664962 学习了:http://www.cnblogs.com ...

  6. Oracle数据库锁表的查询方法以及解锁的方法

    1,锁表语句简单查询方法   select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session ...

  7. SQL数据库基础知识-巩固篇<一>

    SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...

  8. 数据库相关知识积累(sqlserver、oracle、mysql)

    数据库相关知识积累(sqlserver.oracle.mysql) 1. sqlserver :断开所有连接: (还原数据库) 1.数据库  分离 2. USE master GO ALTER DAT ...

  9. golang--深入简出,带你用golang的反射撸一个公用后台查询方法

    一些基本方法 本篇不会介绍反射的基本概念和原理等,会从每个常用的方法入手,讲解一些基本和进阶用法,反射不太适合在业务层使用,因为会几何倍的降低运行速度,而且用反射做出来的程序健壮度不高,一旦一个环节没 ...

随机推荐

  1. BZOJ 3226: [Sdoi2008]校门外的区间

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3226 题意:初始集合S为空.模拟四种集合操作:集合并.交.差.补集并. 思路:区间 ...

  2. C++实现有向权图的基本操作,界面友好,操作方便,运行流畅

    Ⅰ.功能: .创建图 .展示全图 .添加顶点 .添加边 .删除顶点 .删除边 .查看指定边权值 .修改指定边权值 .输出两点间的所有简单路及路径对应权值 .销毁图 ps:关于9,如果不存在任何简单路, ...

  3. 注册dll失败

    注册DLL的时候一出现错误:   win8下: (右键弹出)     如果再不行,   64位系统下,把DLL移动到C:\Windows\SysWOW64下 更改路径

  4. HTML Meta标签中的viewport属性含义及设置

    两篇文章 第1篇文章 第2篇文章 http://blog.hexu.org/archives/1947.shtml 随着高端手机(Andriod,Iphone,Ipod,WinPhone等)的盛行,移 ...

  5. ubuntu Linux 测试PHP却提示下载文件的解决办法

    ubuntu Linux 测试PHP却提示下载文件的解决办法   一般这种情况都是在刚刚开始配置环境时出现的, 输入 sudo a2enmod php5  看提示如果出现“$ This module ...

  6. Writing On-Error Trigger In Oracle Forms

    Suppose you want to handle an error in oracle forms and want to display custom error message for tha ...

  7. 【转】The decoupling capacitor…is it really necessary?

    Before working as an applications engineer, I worked as an IC test development engineer here at TI. ...

  8. 最新的windows xp sp3序列号(绝对可通过正版验证)

    MRX3F-47B9T-2487J-KWKMF-RPWBY(工行版) 可用(强推此号) QC986-27D34-6M3TY-JJXP9-TBGMD(台湾交大学生版) 可用 CM3HY-26VYW-6J ...

  9. 【CC评网】2013.第44周 把握每天的第一个小时

    [CC评网]2013.第44周 把握每天的第一个小时 更简单的格式 终于投入到markdown的怀抱.让博客的写作回归到内容本身,同时也能保证阅读的良好体验:如果有心情,写个js,提取h3 h2标题组 ...

  10. Blend操作入门: 别站在门外偷看,快进来吧!(转)

    来源:http://www.cnblogs.com/hielvis/archive/2010/10/21/1857415.html 有的人认为,Blend主要是用来修改一下颜色,调整一下布局之类的,大 ...