下面是用scott用户测试的。
如果不知道当前用户是什么用户,可以输入: show user ,这样它就显示出当前用户是什么用户了.
如果想编辑已经输入到sqlplus中的代码,可以输入“ed”,然后回车就能弹出一个记事本,记事本里面有上一步输入的代码,修改代码并保存后关闭记事本,最后在sqlplus中输入“/”并击回车就执行了。
1.不等于号是:<>
如:select ename, sal from emp where deptno <> 10;
2.SQL中的字符串大小写不一样
如:select ename ,sal from emp where ename = 'CLASD';
与 select ename ,sal from emp where ename = 'clasd';
是不一样的.
3.between 与 >=和<=
如: select ename, sal from emp where sal between 800 and 1500; 的意思与
select ename, sal from emp where sal >= 800 and sal <= 1500; 一样
4.把空值选出来
如: select ename, sal, comm from emp where comm is null;
5.把非空值选出来
如: select ename, sal, comm from emp where comm is not null;
6.in的用法
如:select ename, sal, comm from emp where sal in (800, 1500, 2000); 意思是把sal等于800 或者1500或者2000的 ename、sal、comm 拿出来。
select ename, sal, comm from emp where sal not in (800, 1500, 2000); 意思是把sal不等
800或者1500或者2000的ename、sl、comm 拿出来。
7.日期:1981年2月20日以后的表示为: select ename, sal, hiredate from emp where hiredate > '20-2月-81'; 或:select ename, sal, hiredate from emp where hiredate > '20-2月-1981';
先转换格式再取日期与时间:select ename, hiredate from emp where hiredate > to_date('1981-2-20 12:34:56', 'YYYY-MM-DD HH24:MI:SS');
8.或者的连接用"or"
如:select ename, sal, comm from emp where sal>1000 or deptno=10;
9.模糊查找:like表示模糊查找,"%"表示零个或多个字母,"_"代表一个字母.
如:select ename from emp where ename like '%ALL%'; 表示查找符合ALL前面和后面有零个或多 个字母的ename;
select ename from emp where ename like '_A%';表示查找符合每二个字母是A的ename;
查找带有%的字符串,用转义字符"\",如:select ename from emp where ename like '%\%%';表示查找 带有"%"的字符串。也可以自己设置 转义字符,如:select ename from emp where ename like '%$%' escape '$'; 表示用$作为转义字 符.
10.排序:order by 。
降序:desc, 如:select * from dept order by deptno desc;
升序:asc, 默认情况下是升序,如:select empno, ename from emp order by empno asc;
或:select empno, ename from emp;
升降综合:select ename, sal, deptno from emp order by deptno asc, ename desc;表示先按 deptno的升序,如果有相同的deptno,再按照ename的降序排序。
11.select lower(ename) from emp; 表示取出的ename的字段的字母都是小写字母。
12.取子字符串(substr)。如:select substr(ename, 2, 3) from emp;表示取出ename中的从每2个字母开始的3个字母的字符串。
13.将chr形转换成ascii码。如:select chr(65) from dual; 表示将65转换成ascii码(A)。
将ascii形转换成chr码。如:select ascii('A') from dual; 表示将ascii码(A)转换成65。
14.select round(25.562) from dual;表示取到25.562的整数部分
select round(25.562, 2) from dual;表示取到25.562的两位小数
select round(25.562, -1) from dual;表示取到25.562的十位
15.to_char:
如:select to_char(sysdate, 'YYYY-HH-DD HH:MI:SS') from dual;表示将sysdate时间格式转化为YYYY-HH-DD HH:MI:SS
select to_char(sysdate, 'YYYY-HH-DD HH24:MI:SS') from dual;表示将sysdate时间格式转化为YYYY-HH-DD HH:MI:SS 其中时间是24小时制
16.select ename, sal*12 + comm from emp;这句SQL语句中,如果comm是空值,则加起来的结果也是空值 。为了避免这种情况,可以select ename, sal*12 + nvl(comm, 0) from emp; nvl(comm, 0)的意思是如果comm是空值,则用0来取代它.
17.求最大值(max)。如:select max(sal) from emp; 表示从emp中求出最大的sal.
18.求最小值(min)。如:select min(sal) from emp; 表示从emp中求出最小的sal.
19.求平均值(avg)。如:select avg(sal) from emp; 表示从emp中求出平均的sal.
20.精确到小数点后两位。如:select to_char(avg(sal), '99999999.99') from emp;
21.四舍五入到小数点后两位。如:select round(avg(sal), 2) from emp;
22.求和。如:select sum(sal) from emp; 表示sal的和为sum(sal)。
23.求出表中一共有多少条记录。
如:select count(*) from emp; 表示emp表中一共有多少条记录。
select count(*) from emp where deptno=10; 表示求出emp表中deptno=10的记录一共有多少条。
select count(*) from emp; 与select count(comm) from emp; 是不一样的。前一个*表示所有的记录;后面一个表示comm的记录。
select count(distinct deptno) from emp; 表示除去重复的deptno后一共有多少条记录。
24.分组函数(group)。
如:select deptno, avg(sal) from emp group by deptno; 表示按deptno分组显示sal的平均值。
select deptno, job, max(sal) from emp group by deptno, job; 表示按照deptno和job的组合分组显示deptno, job, max(sal) 。
select ename, max(sal) from emp;这句SQL是不对的,因为如果最大的sal有不同的ename,那么就会出错(由于输出是只有一条数据的);所以要改成select ename from emp where sal = (select max(sal) from emp);
25.having。where是对单条数据进行限制的,如果要限制查询出来后的多条数据,一般用having。如果一条SQL中有where和其他限制条件,那么先执行where限制条件。
如:select avg(sal), deptno from emp group by deptno having avg(sal) >2000; 表示通过deptno取出acv(sal)和deptno后,再从取出的数据中查询出avg(sal) 大于2000的数据。
26.限制词的执行顺序:where --> group by--> having --> order by
如:select deptno, avg(sal) from emp where sal > 1200 group by deptno having avg(sal) > 1500 order by avg(sal) desc; 表示按组deptno 取出sal > 1200 的deptno, avg(sal),然后选出avg(sal)大于1500的deptno, avg(sal),最后按agv(sal)的倒序排列。
27.select ename, sal from emp join (select max(sal) max_sal, deptno from emp group by deptno) t on ( emp.sal = t.max_sal and emp.deptno = t.deptno); 表示取出各组(deptno)中sal最大的ename和sal。
28.自连接,给一张表起两个别名,把一张表当成两张表用。
如:select e1.ename, e2.ename from emp e1, emp e2 where e1.mgr = e2.empno;
29.左外连接(left (outer)) outer可以省略。
如:select e1.ename, e2.ename from emp e1 left join emp e2 on (e1.mgr = e2.deptno);
表示把左边e1的没有符合连接的数据也拿出来(全部数据)。
30.右外连接(right (outer)) outer可以省略。
如:select ename, dname from emp e right outer join dept d on (e.deptno = d.deptno); 表示把右边d的没有符合连接的数据也拿出来(全部数据)。
31.全外连接(full)。
如:select ename, dname from emp e full join dept d on (e.deptno = d.deptno); 表示把表e表d的两个没有正确连接的数据全部取出来。
32.部门平均薪水的等级:select deptno, avg_sal, grade from (select avg(sal) avg_sal, deptno
from emp group by deptno) t join salgrade s on (t.avg_sal between s.losal
and s.hisal);
部门平均的薪水等级:select deptno, avg(grade) from (select deptno, grade, sal from emp join
salgrade s on (emp.sal between s.losal and s.hisal)) t group by deptno
33.三个表建立关系。
如: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) where ename not like '_A%';
34.雇员中有哪些人是经理人:select ename from emp where empno in (select distinct mgr from emp);
35.不用组函数求最高薪水
select distinct sal from emp where sal not in (select distinct e1.sal from
emp e1 join emp e2 on (e1.sal < e2.sal));
36.求出平均薪水最高的部门编号
写法一:select deptno from
(select avg(sal) avg_sal, deptno from emp group by deptno)
where avg_sal =
(select max(avg_sal) from
(select avg(sal) avg_sal, deptno from emp group by deptno)
);
写法二:select deptno from
(select avg(sal) avg_sal, deptno from emp group by deptno)
where avg_sal =
(select max(avg(sal)) from emp group by deptno);
37.求出平均薪水最高的部门名称
select dname from dept where deptno =
(
select deptno from
(select avg(sal) avg_sal, deptno from emp group by deptno)
where avg_sal =
(select max(avg_sal) from
(select avg(sal) avg_sal, deptno from emp group by deptno)
)
)
38.平均薪水的等级最低的部门名称
方法一:select dname, t1.deptno, grade, avg_sal from
(
select deptno, avg_sal, grade from
(select deptno deptno, avg(sal) avg_sal from emp group by deptno) t
join salgrade s on
(t.avg_sal between s.losal and s.hisal)
) t1
join dept on (t1.deptno = dept.deptno)
where t1.grade =
(
select min(grade) from
(
select deptno, avg_sal, grade from
(select deptno, avg(sal) avg_sal from emp group by deptno) t
join salgrade s on
(t.avg_sal between s.losal and s.hisal)
)
)
方法二:select dname from dept where deptno =
(
select deptno from
(select deptno, avg_sal, grade from
(select deptno, avg(sal) avg_sal from emp group by deptno) t join salgrade s on
(t.avg_sal between s.losal and s.hisal)
)
where avg_sal =
(select min(avg_sal) from
(select deptno, avg_sal, grade from
(select deptno, avg(sal) avg_sal from emp group by deptno) t join salgrade s on
(t.avg_sal between s.losal and s.hisal)
)
)
)
39.使用视图简化SQL
将下面这段代码简化:
平均薪水的等级最低的部门名称
方法一:select dname, t1.deptno, grade, avg_sal from
(
select deptno, avg_sal, grade from
(select deptno deptno, avg(sal) avg_sal from emp group by deptno) t
join salgrade s on
(t.avg_sal between s.losal and s.hisal)
) t1
join dept on (t1.deptno = dept.deptno)
where t1.grade =
(
select min(grade) from
(
select deptno, avg_sal, grade from
(select deptno, avg(sal) avg_sal from emp group by deptno) t
join salgrade s on
(t.avg_sal between s.losal and s.hisal)
)
)
简化为:授权
conn sys/520419 as sysdba
grant create table, create view to scott;
conn scott/tiger
创作视图
create view v$_dept_avg_sal_info as
select deptno, avg_sal, grade from
(select deptno, avg(sal) avg_sal from emp group by deptno) t
join salgrade s on
(t.avg_sal between s.losal and s.hisal)
简化:
select dname, t1.deptno, grade, avg_sal from
v$_dept_avg_sal_info t1
join dept on (t1.deptno = dept.deptno)
where t1.grade =
(
select min(grade) from v$_dept_avg_sal_info
)
40.比普通员工的最高薪水还要高的经理人名称
select ename from emp where empno in (select mgr from emp where mgr is not null)
and sal >
(
select max(sal) from emp where empno not in
(select mgr from emp where mgr is not null)
)
41.rownum,其实每个表中都有一个隐藏的列,是用来标记行号的,但是它只能与<、<=在一起用,不能与>、>=、=在一起用。
如:select empno, ename from emp where rownum <=5;
42.求薪水最高的前5名雇员。
方法一:select ename, sal from
(select ename, sal from emp order by sal desc)
where rownum <= 5
方法二:select ename, sal, r from
(
select ename, sal, rownum r from
(select ename, sal from emp order by sal desc)
)
where r <=5
43.求薪水最高的第6到每10名雇员(重点掌握)。
select ename, sal, r from
(
select ename, sal, rownum r from
(select ename, sal from emp order by sal desc)
)
where r >=6 and r<=10
分享到:
相关推荐
文档部分内容如下, 全部是尚学堂课堂原笔记.. 第一课:客户端 1. Sql Plus(客户端),命令行直接输入:sqlplus,然后按提示输入用户名,密码。 2. 从开始程序运行:sqlplus,是图形版的sqlplus. 3. ...
Oracle笔记 三、function 、select Oracle笔记 四、增删改、事务 Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间 Oracle笔记 六、PL/SQL简单语句块、变量定义 Oracle笔记 七、PL/SQL 异常处理 ...
韩顺平oracle学习笔记 第0讲:如何学习oracle 一、如何学习oracle Oracle目前最流行的数据库之一,功能强大,性能卓越。学习oracle需要具备一定基础: 1.学习过一门编程语言(如:java ,c) 2.最好学习过一门别的...
oracle10Gselect语句自学笔记.chmoracle10Gselect语句自学笔记.chm
Oracle笔记 三、function 、select Oracle笔记 四、增删改、事务 Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间 Oracle笔记 六、PL/SQL简单语句块、变量定义 Oracle笔记 七、PL/SQL 异常处理 ...
oracle精华文档,内容详实, SQL(结构化查询语言) Select 字段(*) from 表名 where ...group by ...having ...order by DDL(数据定义语言) Create table 表名 Drop table 表名 Alter table 表名 add 列名 数据...
oracle 9i dba 认证教程学习笔记 第一章 oracle 数据库体系结构基础 1、oracle 数据库系统:为具有管理oracle数据库功能的计算机系统。 2、系统全局区(system global area):在数据库服务器上启动一数据库时的...
oracle笔记,入门体验篇,基本的SQL-SELECT语句,简单入门,有具体的案例代码!
纯手写笔记 SELECT [DISTINCT] * | 列 [别名] FROM 表名称 1 [CROSS JOIN 表名称2] [NATURAL JOIN 表名称2] [JOIN 表名称 ON(条件)|USING(字段)] [LEFT | RIGHT | FULL OUTER JOIN 表名称2]; 1. 交叉连接:...
《李兴华Oracle数据库课堂笔记》 例:查询出所有不领取佣金的雇员。 SELECT*FROM emp WHERE comm IS NULL; 例:查询出所有领取佣金的雇员。 SELECT*FROM emp WHERE comm IS NOT NULL; SELECT*FROM emp WHERE ...
1. Sql Plus(客户端),命令行直接输入:sqlplus,然后按提示输入用户名,密码。 2. 从开始程序运行:sqlplus,是图形版的sqlplus. 3. http://localhost:5560/isqlplus Toad:管理, PlSql Developer: 第二课...
向你介绍我的Oracle数据库学习笔记 1.SQL命令: SQL 支持4大类型命令: 数据定义语言(DDL): Create(创建), Alter(更改), Drop(删除). 数据操纵语言(DML): Select(选择), Insert(插入), ...
RACLE笔记(1) 收藏 Oracle SQL(Oracle 9i 9.2.0.1.0) SQL(结构化查询语言),是操作关系型数据库中的对象。 DDL(数据定义语言),用于建表或删表操作,以及对表约束进行修改。 DML(数据操作语言),向表中插入...
oracle day3 笔记 外连接: 查找每个员工的经理ID select e.first_name "Employee",m.first_name "Manager" from s_emp e,s_emp m where e.manager_id=m.id(+); 一、组函数 group 组 group by 分组子句,...
2“AS”符号oracle:select 列名 as 新列名 from 表名 (空格,不能有as)新表名sql:select 列名 as 新列名 from 表名T as(as可有可无) 新表名 二.数据排序与数据过滤查询与sql相同 in ,like, is null,between ...
(2)关系模型的组成:数据结构+数据操作+数据完整性,数据结构指表、数据操作指数据的CRUD(create---insert,R read----select,update,delete 增删改查等操作) 完整性约束是指数据的正确性与完备性。 1)表:...
找ORACLE字符集 <br>select * from sys.props$ where name='NLS_CHARACTERSET'; <br>15. 监控 MTS <br>select busy/(busy+idle) "shared servers busy" from v$dispatcher; <br>此值大于0.5时,...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
1.Select语句的格式 34 2.Select … From … ——选择列(投影) 35 3.Where子句——选择行(选择)数据过滤 35 4.Order By子句 35 5.统计函数——列名应指定别名 35 6. Group By分组 36 7.Having子句 36 8.练习:表...