oracle数据库创建视图的方法

一、数据库对象
1.为表vendor_master创建一个视图,
该视图将VENADD1、VENADD2和VENADD3(地址的三部分,都为varchar2性)
3个列连接起来组成名为VENADDRES的列.
--创建表vendor_master

create table vendor_master(
VENADD1 varchar2(20),
VENADD2 varchar2(20),
VENADD3 varchar2(20)
)
create view v_master
as
(select v.venadd1 || v.venadd2 || v.venadd3 ss from vendor_master v ;

drop table vendor_master;
drop view v_master;

--2.创建名为“my_seq”的序列,该序列的起始值为1000,
--并在每次查询时增加10,直到该序列达到1100,然后重新从1000开始.

create sequence my_seq
start with 1000
increment by 10
maxvalue 1100
minvalue 1000 --到最大值后 ,如果可以循环,从最小值开始
cycle
cache 10;

drop sequence my_seq;

--3.在表order_detail表的orderno和itemcode列上创建一个唯一组合索引.

create table order_detail(
orderno number,
itemcode number,
itemname varchar2(20)
)

create unique index in_order
on
order_detail(orderno,itemcode);

drop table order_detail;
drop index in_order;

/*
二、使用如下表
emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)
dept部门表(deptno部门编号/dname部门名称/loc地点)
完成以下查询
*/
--1、列出月薪比 "BLAKE" 少的所有雇员

select * from emp where sal < (select sal from emp where ename = 'BLAKE');

--2、列出至少有一个雇员的部门详细信息

select * from dept where deptno in(select deptno from emp group by deptno having count(deptno)>=1);

--3、列出所有雇员的姓名及其直接上级的姓名。

select e1.ename 雇员名, e2.ename 上级的名字 from emp e1,emp e2 where e1.mgr = e2.empno;

--4、列出入职日期早于其直接上级的所有雇员

select e1.* from emp e1,emp e2 where e1.hiredate <e2.hiredate and e1.mgr = e2.empno;

--5、列出没有雇员的部门信息

select * from dept where deptno in
(select deptno from emp group by deptno having count(deptno)=0);

--6、列出所有“CLERK”(办事员)的姓名及其部门名称

select e.ename 姓名,e.job 员工工作, d.dname 部门名称 from emp e,dept d where e.job = 'CLERK' and e.deptno = d.deptno;

--、列出最低薪金大于1500的工作类别信息

select job,min(sal) from emp group by job having min(sal) >1500;

--8、列出月薪高于公司平均水平的所有雇员

select * from emp where sal>(select avg(sal) from emp);

--9、列出与“SCOTT”从事相同工作的所有雇员

select * from emp where job = (select job from emp where ename = 'SCOTT');

--10、列出某些雇员的姓名和薪金,条件是他们的月薪高于部门30中所有雇员的薪金

select ename ,sal from emp where sal >all(select sal from emp where deptno = 30)

--11、列出每个部门的信息以及该部门中雇员的数量

select m.c 部门的雇员的数量,d.* from dept d,(select deptno dno,count(*)c from emp group by deptno )m
where d.deptno = m.dno;

--12、列出所有雇员的雇员名称、部门名称和月薪

select e.ename 姓名,d.dname 部门名,e.sal+nvl(e.comm,0) 月薪 from emp e,dept d where e.deptno = d.deptno;

--13、列出各个部门的MANAGER(经理)的最低薪金

select min(m.sal) from
(select sal,deptno dno from emp where job = 'MANAGER') m
group by dno;

14、列出所有雇员的年薪,并且按年薪排序

select ename 姓名,(sal+nvl(comm,0)) year_sal from emp order by year_sal;

15、列出薪金水平处于第四位到第七位的雇员

select d.* from (
select rownum rn , m.* from (
select * from emp order by sal
)m where rownum<=7
) d where rn>=4;

oracle数据库创建视图的方法-上流阁

*文章为作者独立观点,不代表上流阁立场
本文由 江风成 授权 上流阁 发表,并经上流阁编辑。转载此文章须经作者同意,并请附上出处(上流阁)及本页链接。原文链接https://www.o6c.com/java/2016/11/01/550.html
发表评论

坐等沙发
相关文章
mysql 优化方案整理
mysql 优化方案整理
Mysql中json的字段用法
Mysql中json的字段用法
JDBC原生链接Mysql数据根据表映射生成bean实体类
JDBC原生链接Mysql数据根据表映射生成be…
Mysql索引的最左前缀原则
Mysql索引的最左前缀原则
MySQL数据库sql中字符串函数的字符串截取
MySQL数据库sql中字符串函数的字符串截取
Java技术Jdbc连接数据库方法及使用方法
Java技术Jdbc连接数据库方法及使用方法
javaweb开发程序员php开发,微信开发。接受定制开发

最新评论