oracel数据库基本知识和基本查询方法
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数据库基本知识和基本查询方法的更多相关文章
- MyBatis中#{ }和${ }的区别,数据库优化遵循层次和查询方法
MyBatis中#{ }和${ }的区别详解 1.#将传入的数据当成一个字符串,会对自动传入的数据加一个 双引号. 例如order by #id#,如果传入的值是111,那么解析成sql时变为orde ...
- 【Java EE 学习 17 下】【数据库导出到Excel】【多条件查询方法】
一.导出到Excel 1.使用DatabaseMetaData分析数据库的数据结构和相关信息. (1)测试得到所有数据库名: private static DataSource ds=DataSour ...
- ThinkPHP 数据库操作(三) : 查询方法、查询语法、链式操作
查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%th ...
- 查询MySQL数据库中表结构的几种方法
什么是表结构?表结构就是定义数据表文件名,确定数据表包含哪些字段,各字段的字段名.字段类型.及宽度,并将这些数据输入到计算机当中. 查询方法:以表‘employees’为例子 1.describe(d ...
- rails的数据库查询方法
rails的数据库查询方法 学习了:http://blog.csdn.net/menxu_work/article/details/8664962 学习了:http://www.cnblogs.com ...
- Oracle数据库锁表的查询方法以及解锁的方法
1,锁表语句简单查询方法 select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session ...
- SQL数据库基础知识-巩固篇<一>
SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...
- 数据库相关知识积累(sqlserver、oracle、mysql)
数据库相关知识积累(sqlserver.oracle.mysql) 1. sqlserver :断开所有连接: (还原数据库) 1.数据库 分离 2. USE master GO ALTER DAT ...
- golang--深入简出,带你用golang的反射撸一个公用后台查询方法
一些基本方法 本篇不会介绍反射的基本概念和原理等,会从每个常用的方法入手,讲解一些基本和进阶用法,反射不太适合在业务层使用,因为会几何倍的降低运行速度,而且用反射做出来的程序健壮度不高,一旦一个环节没 ...
随机推荐
- java-以月为单位,得到一年中某一个月份的范围
简单说:得到某一月份的第一天,第一小时,第一分钟,第一秒和某一月份的最后一天,最后一小时,最后一分钟,最后一秒. 实现: //月初 private Date getBeginTimeOfMonth(i ...
- python学习笔记三 文件操作(基础篇)
文件操作 打开文件 open(name[,mode[,buffering]]) open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉] w ...
- yum报错
用man clean all man yum,可以看到,clean选项的作用是: Is used to clean up various things which accumulate in th ...
- Dancing Links
Dancing Links用来解决如下精确匹配的问题: 选择若干行使得每一列恰好有一个1.Dancing Links通过对非零元素建立双向十字循环链表.上面的例子建立的链表如下所示: 计算的时候使用搜 ...
- CodeForces 432B Football Kit
Football Kit Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Subm ...
- Cheatsheet: 2015 03.01 ~ 03.31
Web The Architecture of Algolia's Distributed Search Network No promises: asynchronous JavaScript wi ...
- Cheatsheet: 2013 10.09 ~ 10.23
Other 10 Basic Linux Networking and Monitoring Commands You Should Know A simple, portable yet effic ...
- 关于float的感悟
给元素设置了float样式后,最终的结果是: 1:这个元素漂浮起来, 2:其他的元素位置可以视为 这个元素不存在 的时候的位置:但是float样式还是对整个页面有所影响 3:float的影响就是他附近 ...
- Using Pre-Form Trigger In Oracle Forms
Pre-Form trigger in Oracle Forms fires during the form start-up, before forms navigates to the first ...
- linux下导入、导出mysql数据库命令
一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql #/usr ...