Oracle简单查询笔记

发布 2021-05-11 23:39:28 阅读 1882

(一) 数据库查询语言sql

1.基本select语句:

select 内容 from 表-集合 where 条件;

1) 内容: 是所选定的数据项。

2) 条件: 是选择数据的过滤规则。

1) 内容:

1> *代表所有字段;

2> 若希望单独列出某几个字段,可以使用"col1,col2,..的方式。

3> *不能与"col1,col2,..的方式连用。

4> 但,可以通过"表名。*"的方式与"col1,col2,..的方式同时使用。

例子。connect scott/tiger @dhee;

rem 查询所有员工信息

select * from emp;

rem 查询工资大于2000的员工信息。

select * from emp where sal>2000;

rem 查询员工的编号,姓名,职务,工资。

select empno,ename,job,sal from emp;

select *,empno,ename,job,sal from emp;--error

set linesize 200;

select emp.*,empno,ename,job,sal from emp;

select rownum,emp.* from emp;

rownum-虚列, 本身不是字段,但可以当成字段使用。

1) rownum的初始值为0,每select一行数据,其值加1.

然后进行where匹配, 若匹配成功,则进入最终缓存;

否则减1.2) rownum只和当前的select相关。

例子。rem 显示第1条数据。

select rownum,emp.* from emp where rownum = 1;

rem 显示第2条数据-error

select rownum,emp.* from emp where rownum = 2;

1) 虚列。本身不是字段,是一个计算表达式,甚至可能只是一个常数。

3) 每select一行,则计算一次。

注意: null在参与算术运算的时候,结果仍然为null.

尤其在修改数据的时候要注意这一点。

可以使用。nvl(v1,v2) -当v1为null时,返回v2,否则返回v1)

函数进行空值转换。

例子。rem 显示员工编号,姓名,工资,以及工资上调50%的结果。

select empno,ename,sal,sal*1.5 from emp;

select empno,ename,sal,sal*1.5 from emp where sal*1.5>3000;

select empno,ename,10 from emp;

select 10 from emp;

select 10*20*30*12341553 from dual;

1) 字符串是用一对单引号修饰的字符序列。 'abc'

2) 字符串的连接运算用"||

a' |b' =ab'

3) null在参与连接运算的时候以空字符串的形式进行。

4) 但是,如果字符串本身出现了单引号,如smith's,此时,用两个单引号连用的方式来表示字符串内容中的一个单引号。

例子。rem 显示员工编号,姓名,工资,津贴(comm),以及津贴上调300的结果。

select empno,ename,sal,comm,nvl(comm+300,300) from emp;

select empno ||ename from emp;

select empno ||sal ||comm from emp;

1) 字段名别名 (2) 字段名 as 别名。

3) 字段名 "别名" (4)字段名 as "别名"

a) 给字段起别名是对缓存结果进行的。

b) 使用as可以帮助区分原名和别名。

c) 双引号可以保留别名格式。

d) 注意: 当别名**现关键字或者空格的时候必须使用双引号修饰!

e) 注意: 由于别名是对缓存进行的,所以,在where条件中不可以使用字段别名!

例子。select 'a''b','smith''s ' from emp;

select empno as e_no,ename e_name from emp;

select empno e_no, ename "e_name", sal salary from emp;

select empno "my no", ename "select my name" from emp;

rem 请将emp中的字段换成对应的中文名。

desc emp;

distinct col|col1,col2,..

1) 表示对所选择的数据的重复行数进行消除。

2) distinct必须放在所有字段之前!

例子。rem 显示职务。

select distinct job from emp;

rem 显示职务和工资。

select distinct job,sal from emp;

select distinct * from emp;

-select empno,ename,job,sal,sal*1.5 s15 from emp where s15 > 2000;--error

2)条件:select ..from ..where 条件。

条件: 选择数据的过滤规则。

1> 数值直接比较大小。

2> 字符串按ascii码的大小进行比较。

3> 日期类型的比较要求比较的左右必须是日期类型,直接按日期先后顺序进行比较。

也可以使用符合标准日期格式的字符串来进行比较。

标准日期格式"dd-mon-yy" :8-8月-08'

例子。rem 显示工资大于2500的员工信息。

--select * from emp where sal > 2500;

rem 显示工资不等于3000的员工信息。

--select * from emp where sal = 3000;

--select * from emp where sal !=3000;

--select * from emp where sal ^=3000;

rem 显示在2023年后雇佣的员工信息。

select * from emp

where hiredate > 1-1月-82';

and, or, not

1> and,or的左右必须是完整的条件。 (条件1) and (条件2)

ORACLE高级查询

本章目标 多表查询。联接查询 inner join 内联接 left outer join 左外联接 right outer join 右外联接 full join 全联接 子查询。集合操作。union 联合 union all 联合所有 intersect 交集 minus 减集 一 连接类型。o...

oracle常见查询练习

以下作业要求将每一题的执行命令脚本按顺序保存起来,并且加上适当的注释说明。均为使用pl sql完成的作业!1 编写带输入参数的过程,实现员工查询,根据雇员编号,查询雇员的姓名,职务和部门名称,如果没有找到,要提示雇员编号未找到!使用exec命令进行测试。create or replace proce...

简单查询练习

1.查询简书目中所有单价大于50元的书本的书名 单价和出版社信息。2.查询jsm表中的全部列。3.查询所有书本的isbn,并在结果表中isbn属性列前加一列 isbn 4.查询所有书本8折销售后的书名和售价。5.查询所有借了书的读者的借书证号。6.查询由清华大学出版社出版的图书的书名。7.查询197...