`

一些oracle题目

 
阅读更多

转过来的oracle题目,有用。

一:
oracle查询表中15—20条记录
(select * from AAA where rownum < 20) minus (select * from AAA where rownum < 15);

SQL MINUS 前面数据集减后面数据集


create table thedate (riqi varchar2(10),shengfu varchar2(10));

insert into thedate values('2005-05-09','胜');
insert into thedate values('2005-05-09','胜');
insert into thedate values('2005-05-09','负');
insert into thedate values('2005-05-09','胜');
insert into thedate values('2005-05-09','胜');
insert into thedate values('2005-05-10','胜');
insert into thedate values('2005-05-10','负');
insert into thedate values('2005-05-10','负');

根据日期统计胜负数量:
select riqi,sum(case when shengfu = '胜' then 1 else 0 end ) as sheng,
            sum(case when shengfu = '负' then 1 else 0 end) as fu
from thedate group by riqi;


二:
已知一个表的结构为:
姓名  科目  成绩
张三  语文  20
张三  数学  30
张三  英语  50
李四  语文  70
李四  数学  60
李四  英语  90
怎样通过select语句把他变成以下结构:
姓名  语文  数学  英语
张三  20    30    50
李四  70    60    90

create table student (姓名 varchar2(10),科目 varchar2(10),成绩 int);
insert into student values('张三','语文',20);
insert into student values('张三','数学',30);
insert into student values('张三','英语',50);
insert into student values('李四','语文',70);
insert into student values('李四','数学',60);
insert into student values('李四','英语',90);
drop table student;

select decode(姓名,null,'总和',姓名) "姓名",
sum(decode(科目,'语文',成绩)) "语文",
sum(decode(科目,'数学',成绩)) "数学",
sum(decode(科目,'英语',成绩)) "英语",
sum(成绩)  "总成绩"
from student  group by 姓名;

select decode(姓名,null,'总和',姓名) "姓名",
sum(case when 科目 = '语文' then 成绩 end) "语文",
sum(case when 科目 = '数学' then 成绩 end) "数学",
sum(case when 科目 = '英语' then 成绩 end) "英语",
sum(成绩)  "总成绩"
from student  group by 姓名;

decode相当于case when then else

 

三:
SQL问答题
SELECT * FROM TABLE

SELECT * FROM TABLE
WHERE NAME LIKE '%%' AND ADDR LIKE '%%'
AND (1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%'
OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%' )
的检索结果为何不同?

null的关系

 


四:
一、
教师号  星期号 是否有课
 1    2   有
 1    3   有
 2    1   有
 3    2   有
 1    2   有
写一条sql语句让你变为这样的表
教师号 星期一 星期二 星期三
 1       2   1 
 2   1   
 3       1
各星期下的数字表示:对应的教师在星期几已经排的课数

create table teacher(教师号 int,星期号 int,是否有课 varchar2(10));
insert into teacher values(1,2,'有');
insert into teacher values(1,3,'有');
insert into teacher values(2,1,'有');
insert into teacher values(3,2,'有');
insert into teacher values(1,2,'有');
select * from teacher;
drop table teacher;

select 教师号,
       sum(case when 星期号 = 1 then 1 else 0 end) as 星期一,
       sum(case when 星期号 = 2 then 1 else 0 end) as 星期二,
       sum(case when 星期号 = 3 then 1 else 0 end) as 星期三
from teacher group by 教师号;

 

 

五:
书表(books)
book_id,book_name,creatdate,Lastmodifydate,decription
001,三个人的世界,2005-02-02,2005-07-07,NULL
作者表(authors)
A_id,A_name
01,王纷
02,李尚
03,泰和
部门表(depts)
d_id,d_name
001,编辑一部
002,编辑二部
003,编辑三部
书和作者关联表(bookmap)
book_id,A_id
001,01
001,02
001,03
部门和作者关联表(depmap)
d_id,a_id
001,01
002,02
003,03
找出每个部门的所写的总书两,比如,一本书有3个人写,如果三个人在不同的部门,则每个部门的总数量就是1.最后结果如下:
部门,书量
编辑一部,1
编辑二部,1
编辑三部,1

 

六:
两个表情况
表名:wu_plan
ID     plan     model      corp_code    plannum    prixis
1      00001    exx22        nokia       2000        0
2      00002    lc001        sony        3000        0

表名:wu_bom
ID    plan      pact         amount
1     00001     aa1           300
2     00001     aa2           200
3     00002     bb1           500
4     00002     bb2           800
5     00002     bb3           400

查询这两个表中plan唯一,每一个plan中,amount最少的,plannum大于prixis的记录
结果是:
ID     plan     model      corp_code    plannum    prixis    pact  amount
1      00001    exx22        nokia       2000        0      aa2     200
2      00002    lc001        sony        3000        0      bb3     400


create table wu_bom(ID int,plan varchar2(10),pact varchar2(10),amount int);
insert into wu_bom values(1,'0001','aa1',300);
insert into wu_bom values(2,'0001','aa2',200);
insert into wu_bom values(3,'0002','bb1',500);
insert into wu_bom values(4,'0002','bb2',800);
insert into wu_bom values(5,'0002','bb3',400);
select * from wu_bom;
drop table wu_bom;

select plan,min(amount) from wu_bom group by plan;


七:
表1结构如下:
部门 条码 品名 销售额 销售数量 销售日期

表2结构如下
课别 部门

要求:先按部门排序,再按销售额、销售数量排序检索出某个课别每个部门一个时期内的商品销售额的前三名,
如查询01课别2007年4月15日到2007年4月22日每个部门一个周内的商品销售额合计的前三名


DDL是数据定义语言,如drop,alter,truncate等都是DDL
insert,update,delete,merge等都是DML
在oracle里DML是可以rollback的,而DDL是不可以的
DDl语句结束一个transaction

LIKE '%SA/_%'ESCAPE'/';

SELECT LPAD(17000,10,'*') FROM dual;

inner join,full outer join,left join,right jion
内部连接 inner join 两表都满足的组合
full outer 全连 两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有A表没有的显示为(null)
A表 left join  B表 左连,以A表为基础,A表的全部数据,B表有的组合。没有的为null
A表 right join B表 右连,以B表为基础,B表的全部数据,A表的有的组合。没有的为null

数据类型?


mod取余数 round是四舍五入 trunc是截取 TRUNC(5.75, -1)=0  ROUND(5.75, -1)=10
对date类型操作的函数可以是count min max
where 中不能使用聚集函数 having中可以
SQL的执行顺序为:先where 再group 再having 再select 后order

创建视图的select语句里面不能包含 union 和order by


八:
create tavle aaa(
id int,
sname varchar2(10),
smoney int,
sprovince varchar2(10));

insert into aaa values(1,'zhnagsan',2098,'A');
insert into aaa values(2,'lisi',3000,'B');
insert into aaa values(3,'wangwu',6789,'C');
insert into aaa values(4,'liumazi',4587,'C');
insert into aaa values(5,'dongjiu',3298,'B');
insert into aaa values(6,'shiga',4567,'A');
select * from aaa;
drop table aaa;

id: 合同id sname:姓名 smoney:业绩 sprovince:地区
1:显示出业绩大于同一地区平均值的合同id 姓名 地区 业绩
select aaa.* from
aaa join (select avg(smoney) as thesum,sprovince from aaa group by sprovince) bbb
on (aaa.sprovince=bbb.sprovince) where aaa.smoney>thesum;


2:把同一地区的 平均业绩 地区 插入到新表中(新表只包含两个字段:平均业绩 地区)
inset into bbb(thesum,sprovince)
select avg(smoney),sprovince from aaa group by sprovince;


九:
create table aaa(
id int,
region varchar2(10),
saler varchar2(10),
money int);

insert into aaa values(1,'北京','杨健',100);
insert into aaa values(2,'上海','张三',200);
insert into aaa values(3,'杭州','李四',500);
insert into aaa values(4,'上海','王五',200);
insert into aaa values(5,'上海','赵六',400);
insert into aaa values(6,'北京','田七',300);
insert into aaa values(7,'北京','武八',200);
insert into aaa values(8,'杭州','陈九',100);
select * from aaa;
drop table aaa;


查询每个区域有多少个销售人员并按区域倒叙排序
select region,count(saler) from aaa group by region desc;

查询所有相同区域中合同金额最少的saler
select aaa.* from aaa a where a.money = (select min(money) from aaa b where a.region=b.region);

查询表中合同金额小于所在区域平均合同金额的合同id
select * from aaa a where a.money < (select avg(money) from aaa b where a.region = b.region group by region);


十:
create table aaa(
product varchar2(10),
colour varchar2(10),
thenumber int);

insert into aaa values('产品1','红色',123);
insert into aaa values('产品2','蓝色',126);
insert into aaa values('产品2','蓝色',103);
insert into aaa values('产品2','红色',100);
insert into aaa values('产品1','红色',89);
insert into aaa values('产品1','红色',223);
insert into aaa values('产品3','红色',156);
insert into aaa values('品3','蓝色',223);

按产品分类,仅列出各商品中红色多于蓝色的商品名称及差额

select t1.product,t2.sum_lan-t1.sum_hong as theplus from
(select product,sum(THENUMBER) as sum_hong from aaa where colour = '红色' group by product) t1 join
(select product,sum(THENUMBER) as sum_lan from aaa where colour = '蓝色' group by product) t2
on t1.product = t2.product
where t1.sum_hong<sum_lan;

十一:测试null

create table aaa(id int,value int);
insert into aaa values(1,100);
insert into aaa values(2,98);
insert into aaa values(3,null);
insert into aaa values(4,114);
insert into aaa values(5,90);
insert into aaa values(6,45);

select count(value) from aaa;
COUNT(VALUE)
------------
           5

select id,count(value) from aaa group by id;
                                     ID COUNT(VALUE)
--------------------------------------- ------------
                                      6            1
                                      5            1
                                      1            1
                                      2            1
                                      3            0         --对应着0
                                      4            1

select sum(value) from aaa;
SUM(VALUE)
----------
       447  --把null当做0计算

select nvl(value,100) from aaa where id = 3;
NVL(VALUE,100)
--------------
           100


十二:
用一条SQL语句 查询出每门课都大于80分的学生姓名
name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90

create table chengji(
name varchar2(10),
kecheng varchar2(10),
fenshu int
);

insert into chengji values('张三','语文',81);
insert into chengji values('张三','数学',75);
insert into chengji values('李四','语文',76);
insert into chengji values('李四','数学',90);
insert into chengji values('王五','语文',81);
insert into chengji values('王五','数学',100);
insert into chengji values('王五','英语',90);

select * from chengji;
drop table chengji;

select distinct name from chengji where name not in (select distinct name from chengji where fenshu<=80);

十三:
学生表 如下:
自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
删除除了自动编号不同,其他都相同的学生冗余信息

create table student(
自动编号 int,
学号 varchar2(10),
姓名 varchar2(10),
课程编号 varchar2(10),
课程名称 varchar2(10),
分数 int
);

insert into student values(1,'2005001','张三','0001','数学',69);
insert into student values(2,'2005001','李四','0001','数学',89);
insert into student values(3,'2005001','张三','0001','数学',69);
insert into student values(4,'2005001','张三','0001','数学',69);

select * from student;
drop table student;

delete from student where 自动编号 not in (select min(自动编号) from student group by (学号,姓名,课程编号,课程名称,分数));

 

十四:
一个叫department的表,里面只有一个字段name,一共有4条纪录,
分别是a,b,c,d,对应四个球队,现在四个球队进行比赛,用一条sql
语句显示所有可能的比赛组合.

create table department(name varchar2(5));
insert into department values('a');
insert into department values('b');
insert into department values('c');
insert into department values('d');
select * from department;

select * from department a join department b on (a.name<b.name);

分享到:
评论

相关推荐

    oca oracle 11g 题目

    以下是一些Oracle 11g OCA相关的知识点: 1. **数据库安装与配置**:了解如何在不同操作系统上安装Oracle 11g,包括选择正确的安装类型(如企业版、标准版),配置数据库实例,设置初始化参数文件(init.ora或...

    oracle面试题目及答案

    ### Oracle 面试题目详解 #### 1. 创建表空间 **题目描述:** 创建一个名为`neuspace`的表空间,其中包含一个数据文件`neudata.dbf`,该文件位于`D:\data`目录下,并且初始大小为200MB。配置该数据文件可以自动扩展...

    Oracle题目及答案

    这个"Oracle题目及答案"的压缩包很可能包含了关于Oracle数据库的各种技术问题及其解决方案,旨在帮助学习者或专业人士提升Oracle技能。下面,我们将深入探讨Oracle数据库的一些核心概念和技术点。 1. **SQL语言**:...

    oracle考试题目.docx

    根据提供的文档内容,我们可以归纳出一系列关于Oracle数据库的基础知识点及相关操作。下面将详细解析文档中的问题及答案: ### 一、理论部分 1. **为什么要给表指定主键?** - 主键确保了表中每一行记录的唯一性...

    45道Oracle 题目,及答案。。

    以下是一些关于Oracle的知识点,这些知识点与提供的压缩包文件中的题目和答案紧密相关: 1. **SQL基础**:Oracle数据库操作主要依赖SQL(结构化查询语言),包括SELECT语句用于查询数据,INSERT用于插入数据,...

    初级程序员面试的oracle题目

    ### 初级程序员面试的Oracle题目解析 #### 颈椎题目概述 本文档提供了一组针对初级程序员的Oracle数据库面试题目,旨在帮助求职者更好地准备面试中的技术环节。题目涵盖了基本的SQL操作,包括更新记录、筛选重复...

    Oracle Goldengate考试题目

    根据题目的描述,我们可以了解到关于GoldenGate密码加密的一些关键事实: - **密码可以被加密并粘贴到参数文件中**:这意味着用户可以通过加密工具将密码加密后存入参数文件,以防止密码明文存储带来的安全隐患。 - ...

    oracle 笔试面试题目

    以下是对Oracle笔试面试题目中涉及的一些关键知识点的详细解释: 1. **冷备份与热备份**: - **冷备份**:在数据库关闭后进行,简单且适用于所有模式,但不能在备份过程中使用数据库。 - **热备份**:在数据库...

    极详细oracle数据库面试题目汇总

    极详细oracle数据库面试题目汇总,按照这个思路去复习就可以了

    oracle数据库面试题目汇总.pdf

    Oracle 数据库面试题目汇总 本资源摘要信息将涵盖 Oracle 数据库面试题目汇总的关键知识点,涵盖字符串操作函数、事务概念、查询系统时间、触发器的作用、数字函数、关系数据库系统与文件数据库系统的区别、触发器...

    Oracle SQL 测试题目

    以下是对给定测试题目中涉及的一些关键知识点的详细解释: 1. 统计每个部门员工的数目: 使用 `SELECT` 语句配合 `COUNT(*)` 函数可以统计每个部门的员工数量。这里通过对 `employee` 表进行 `GROUP BY` 操作,按...

    Oracle内部机试题目

    根据给定的文件信息,以下是对“Oracle内部机试题目”的详细解析,涵盖了北大青鸟Oracle内部机试中涉及的关键知识点: ### 1. Oracle连接与权限 在Oracle数据库环境中,连接与权限管理是基础而重要的操作。题目中...

    unix 和oracle的题目

    【Unix和Oracle知识点详解】 Unix操作系统是广泛应用于服务器和大型计算环境的一种多用户、多任务的操作系统,尤其在数据库管理领域,如Oracle数据库的运行环境中,Unix提供了强大的系统管理和性能优化工具。以下将...

    Oracle习题集..

    Oracle习题集是一份专为学习和巩固Oracle数据库管理技能设计的资料,涵盖了SQL和PL/SQL的基础到高级知识。这份习题集旨在帮助用户深入理解Oracle系统表的使用,提高在实际工作中的查询和编程能力。以下是其中可能...

    Oracle相关的题目及答案

    这个压缩包文件包含的"Oracle相关的题目及答案"很可能是一系列关于Oracle数据库管理、SQL查询、数据库设计以及性能优化等方面的问题和解答,这对于学习和提升Oracle技能非常有帮助。下面将详细解释这些知识点。 1. ...

    ORACLE面试测试题目

    根据提供的信息,我们可以总结出以下详细的Oracle知识点: ### 1....以上是对给定Oracle面试测试题目的详细解答。这些知识点涵盖了Oracle数据库的基础操作、高级功能以及常见面试问题的解决方案。

    oracle 10G经典面试题目

    以下是一些Oracle 10G面试中可能会遇到的经典题目及详细解释: 1. **什么是Oracle数据库?** Oracle数据库是一款关系型数据库管理系统(RDBMS),由甲骨文公司开发,广泛应用于企业级数据存储与管理,支持多种操作...

    Oracle面试题目及解答 轻松应对面试官

    Oracle是全球最大的企业级数据库管理系统提供商,其面试题目通常涵盖了数据库管理、SQL查询、性能优化、备份恢复等多个方面。以下是一些可能出现在Oracle面试中的重要知识点及其详细解答,帮助你轻松应对面试官。 1...

    Oracle面试题集锦

    以下是对题目中涉及的一些关键知识点的详细解释: 1. **冷备份与热备份**:冷备份是在数据库关闭状态下进行的,它简单、快速,适用于所有模式的数据库,但无法做到在线恢复。热备份则在数据库运行时进行,支持归档...

Global site tag (gtag.js) - Google Analytics