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. js实现元素边框闪烁功能

    <body> <input type="text" value="test" onclick="flash(this)"& ...

  2. P1119 灾后重建

    题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...

  3. BQ27510 电量计的校准 的 C语言实现

    点击打开链接 根据TI官方MSP430平台移植修改过来的,在Omap37xx(wince)平台测试,理论上和平台无关,伸手党,赶紧复制粘贴代码吧.如果这篇文章帮助了你,给了好评也无妨. [cpp] v ...

  4. BZOJ 3640 JC的小苹果(逆矩阵)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3640 题意:给出一个无向图,从1走到n.开始是血量H,从u到达v时血量减少a[v] ...

  5. Q查询

    一.Complex lookups with Q objects(Q对象的复杂查询) 仅仅靠单一的关键字参数查询已经很难满足查询要求.此时Django为我们提供了Q查询: class Q 1.Q对象( ...

  6. Python标准库之Sys模块使用详解

    sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sy ...

  7. 07 concurrency and Multi-version

    本章提要---------------------------------------------------------对并发和锁的进一步补充并发控制事务的隔离级别多版本控制读一致性的含义写一致性- ...

  8. Oracle冷备份及其恢复

    一. 冷备份的概念 冷备份是指在数据库关闭状态下所做的物理拷贝,也称脱机备份. 适合于非归档模式下的备份,而且也只能采用这种方式备份. 二. 需要备份的文件 必须备份的文件: 数据文件和控制文件 可以 ...

  9. Android广播BroadcastReceiver 二

    BroadcastReceiver: 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制.而BroadcastReceiver是对发送出来的 Broadcast进行过滤 ...

  10. Linux用户查询

    用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd 查看可以登录系统的用户:cat /etc/pass ...