oracle学习笔记

 

SYS口令:change_on_install

 

SYSTEM口令:manager 

 

username:scott

password:tiger

 

--解锁用户

alter user scott account unlock;

 

--描述表

desc emp;

 

--dual表是空表,只有一个字段,用于计算数学表达式等使用

select 2*3 from dual;

 

--任何含有空值的数学表达式,最后计算的结果都是空值

 

-- || 表示字符串连接

 

-- 两个单引号里面(中间)的两个单引号代表一个单引号字符

 

-- distinct关键字用于去除重复,修饰多个字段时,去除的是多个字段的组合重复

 

-- between and 相当于 “>= <=”

 

-- 空值条件查询不使用“==”,而是使用is null或者is not null

 

-- in() 包括哪些值;not in 不包含

 

-- where、and(并且)、or(或者)、like(模糊查询,%代表多个,_代表一个,\是转义字符)

select ename from emp where ename like '%\%%';

 

--排序 order by asc / desc

 

-- function 

-- lower():转化为小写;substr(字段,1,3):从第1个字符开始截取,一共截取3个字符;chr(65):把ascii码转化为字母;

-- ascii('A'):把字母转化为ascii码;round():四舍五入;

-- to_char():可以转化数字,也可以转化日期

-- to_date():日期转换

-- to_number()

select to_char(sal,'$99,999.9999') from emp;

select to_char(hiredate,'YYYY-MM-DD HH24:MI:SS') from emp;

select sal from emp where sal > to_number('$1,250.00','$9,999.99');

select * from emp where hiredate>to_date('1981-2-24','YYYY-MM-DD');

 

-- nvl()

select ename, sal*12 + nvl(comm,0) from emp;

 

-- group function

-- max()、min()、avg()、sum()、count():会把很多条记录组合在一起,最后产生一个输出;

select count(distinct deptno) from emp;

 

-- group by 

-- 求不同部门的平均薪水

select avg(sal), deptno from emp group by deptno;

-- 求最高薪水的人的名字和薪水

select ename,sal from emp where sal=(select max(sal) from emp);

-- 求各个部门中薪水最高的人的名字和薪水

select ename,sal from emp where sal in(select max(sal) from emp group by deptno) --这是错误的答案

正确答案如下:

select ename,sal from emp join

(select max(sal) as max_sal,deptno from emp group by deptno) t

on (emp.sal = t.max_sal and emp.deptno = t.deptno);

 

-- having:是对分组进行限制

-- 求不同部门的平均薪水,并且平均薪水大于2000的

select avg(sal), deptno from emp group by deptno

having avg(sal)>2000 order by deptno;

 

-- 子查询

-- 有哪些人的薪水位于所有人的平均工资之上

select ename,sal from emp where sal>(select avg(sal) from emp)

 

--求每个部门的平均薪水的等级

select grade  from salgrade s join

(select avg(sal) avg_sal from emp group by deptno) t

on (t.avg_sal>s.losal and t.avg_sal<s.hisal);

 

--求每个人的薪水等级(显示名字、部门、薪水等级)

select ename,dname,grade from emp e 

join dept d on(e.deptno=d.deptno) 

join salgrade s on(e.sal between s.losal and s.hisal)

 

--求某个人的名字,以及经理人的名字查出来(提示:当成两个表来看待)

select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr = e2.empno; --这种写法叫做自连接

另一种写法:select e1.ename,e2.ename from emp e1 join emp e2 on(e1.mgr = e2.empno);

加入left结果是不一样的:select e1.ename,e2.ename from emp e1 left join emp e2 on(e1.mgr = e2.empno)

 

--右连接、全连接

select ename,dname from emp e right join dept d on(e.deptno=d.deptno);

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值