(一) 数据库查询语言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...