`

oracle练习

 
阅读更多
使用的工具还是Pl/SQL 先添加以下表~

SQL代码
/   
--学生(学号,姓名,性别,年龄,班级代号)   
  
create table s(   
  s_id char(4),   
  s_name varchar2(20),   
  sex char(1),   
  age number(3),   
  class_id char(4)   
);   
--课程(课程号,课程名称,学分数,教师代号)   
create table c(   
  c_id char(4),   
  c_name varchar2(20),   
  c_xf number,   
  t_id char(4)   
);   
--学生选课(学号,课程号,成绩,考试时间)   
create table sc(   
  s_id char(4),   
  c_id char(4),   
  grade number(3),   
  g_date date  
);   
--教师(教师代号,姓名)   
create table t(   
  t_id char(4),   
  t_name varchar(20)   
);   
end;   
  
begin  
   delete from s;   
   delete from c;   
   delete from sc;   
   delete from t;   
   insert into s values('s001','yanming','1',30,'cls1');   
   insert into s values('s002','albert','1',30,'cls1');   
   insert into s values('s003','jack','1',23,'cls2');   
   insert into s values('s004','rose','0',24,'cls2');   
   insert into c values('c001','java',100,'t001');   
   insert into c values('c002','c',100,'t002');   
   insert into c values('c003','oracle',100,'t003');   
   insert into c values('c004','sql server',100,'t001');   
   insert into sc values('s001','c001',92,to_date('2009-02-10','YYYY-MM-DD'));   
   insert into sc values('s001','c002',91,to_date('2009-02-10','YYYY-MM-DD'));   
   insert into sc values('s001','c003',99,'12-2月-200');   
   insert into sc values('s002','c001',50,'10-2月-2009');   
   insert into sc values('s002','c002',58,'10-2月-2009');   
   insert into sc values('s003','c001',92,'15-2月-200');   
   insert into sc values('s003','c002',52,'15-2月-200');   
   insert into t values('t001','yang');   
   insert into t values('t002','liu');   
   insert into t values('t003','wang');   
end;   
/  

问题~

--(1) 找出男性学生的姓名

--(1.1) 统计出每个班级男生女生的人数

--(2) 找出不是'cls1'班的学生

-- (3) 查询“wang”老师所教课程的课程名称和学分

--(4) 检索出选修了课程代号为“java”和“c”课程的学生

--(5) 查询至少选修了一门“wang”老师的课程的学生姓名

--(6) 求选修了课程名为“java”的所有学生的学号和姓名

--(7) 找出学生代号为“s001”和“s002”两个学生都选修了的课程

--(8) 检索出没有被任何学生选修的课程

--(9) 求出每个学生的成绩的平均分和总分

--(10) 求至少三门以上课程成绩在90分以上的学生学号

--(10.1)查询出每门课都大于80分的学生姓名

--(11) 求出少于2个学生选修的课程

--(12) 求出有2门课程考试不及格的学生的姓名

--(13) 求出每个老师所教课程的成绩总数以及平均分

--(14) 求出每一个班级中每一门课程获得最高分的学生的学号

答案看下文~~~:

SQL代码
--(1) 找出男性学生的姓名    
select * from s where sex = '1';   
  
--(1.1) 统计出每个班级男生女生的人数   
select  s.class_id , sex from s group by class_id ,sex   
  
--(2) 找出不是'cls1'班的学生    
select * from s where class_id <> 'cls1'  
  
-- 3) 查询“wang”老师所教课程的课程名称和学分    
  
select t.t_name,c.c_name,c.c_xf   
from t,c where t.t_name = 'wang' and t.t_id = c.t_id   
  
select c.c_name,c.c_xf   
from c where c.t_id = (select t_id from t where t.t_name='wang')   
  
--(4) 检索出选修了课程代号为“java”和“c”课程的学生   
  
select sc.s_id from sc,c    
where sc.c_id = c.c_id    
and c.c_name in ('java','c')   
group by sc.s_id   
having count(distinct c.c_name) =2    
  
--(5) 查询至少选修了一门“wang”老师的课程的学生姓名   
select s.s_name,sc.*    
from s,sc   
where s.s_id = sc.s_id and  
c_id in (select c_id from c where c.t_id = (   
                                              select t_id from t where t_name = 'wang'  
                                             ))   
                                                
--(6) 求选修了课程名为“java”的所有学生的学号和姓名    
  
select * from s,sc   
where s.s_id = sc.s_id    
and sc.c_id = (select c.c_id from c where c.c_name = 'java')   
  
-- 7) 找出学生代号为“s001”和“s002”两个学生都选修了的课程    
  
select sc.*,s.s_name from sc,s   
where  sc.s_id in ('s001','s002') and sc.s_id = s.s_id   
  
--(8) 检索出没有被任何学生选修的课程   
  
select * from c t1    
where not exists (select * from sc t2 where t2.c_id = t1.c_id)   
  
--(9) 求出每个学生的成绩的平均分和总分   
  
select s.s_name,sum(sc.grade),avg(sc.grade) from s,sc    
where s.s_id = sc.s_id   
group by s.s_name   
  
--(10) 求至少三门以上课程成绩在90分以上的学生学号   
  
select s.s_name from sc ,s   
where sc.s_id = s.s_id   
group by s_name   
having sum(sc.grade) >180   
  
select s.s_name from sc,s   
where sc.s_id = s.s_id and sc.grade > 90   
group by s.s_name   
having count(*) >= 3   
  
--(10.1)查询出每门课都大于80分的学生姓名   
select distinct s.s_name from sc,s   
where sc.s_id= s.s_id and not exists (select sc.s_id from sc    
            where sc.s_id = s.s_id    
            and sc.grade<=80)   
  
--(11) 求出少于2个学生选修的课程    
  
select s.s_name from sc,s   
where sc.s_id = s.s_id    
group by s.s_name   
having count(*) >= 2   
  
--(12) 求出有2门课程考试不及格的学生的姓名   
  
select s.s_name from sc,s   
where sc.s_id = s.s_id   
and sc.grade < 60   
group by s.s_name   
having count(*) > 1   
  
--(13) 求出每个老师所教课程的成绩总数以及平均分   
  
select c.c_name,sum(sc.grade),avg(sc.grade) from c,t,sc   
where c.t_id = t.t_id and    
sc.c_id = c.c_id   
group by c_name   
  
  
--(14) 求出每一个班级中每一门课程获得最高分的学生的学号   
  
select t2.class_id,t1.c_id,max(t1.grade)   
from sc t1,s t2   
where t1.s_id = t2.s_id   
group by t2.class_id,t1.c_id  



--创建表       
create table tab_1       
(       
   tid number,       
   tname varchar2(100)       
)       
      
create table tab_emp        
as        
select * from emp;       
--增加列       
alter table tab_1 add(hdate date)       
select * from tab_1       
      
      
--修改列       
alter table tab_1 modify(tname varchar2(8))       
      
--删除列       
alter table tab_1 drop(tname)       
      
--别名       
select empno,ename "name is"  from emp;       
      
--查询       
select * from tab_1       
      
--插入       
insert into tab_1 values(2,'ming');       
      
      
--插入时间       
insert into tab_1 values(3,'liu','16-5月-09');       
      
--插入时间(格式不同)       
insert into tab_1 values(4,'jiu',to_date('2009-10-10','yyyy-mm-dd'));       
      
--删除表的某列       
delete  from tab_1       
alter table tab_1 modify(tid number(4)) 
本篇文章来源于 zrl'Blog 转载请以链接形式注明出处和版权, 文章网址:http://zrl.name/article/Programming/OracleDataBaseInstallIntro.html
分享到:
评论

相关推荐

    适合新手的oracle练习题集合

    这个“适合新手的Oracle练习题集合”旨在帮助初学者巩固理论知识,提高实践技能,同时通过解决实际问题,如安全认证和转账问题,加深对Oracle数据库的理解。 1. **SQL基础**:在Oracle中,SQL(结构化查询语言)是...

    ORACLE练习的三个表 emp dept salgrade

    这里提到的"ORACLE练习的三个表 emp dept salgrade"是指Oracle数据库中的经典示例表,它们常用于教学和实战演练。这三个表分别是: 1. **EMP** 表:这是一个员工信息表,通常包含以下字段: - `EMPNO`:员工编号,...

    Oracle练习题初学者适用

    这份"Oracle练习题初学者适用"的压缩包提供了一系列的DOC文件,旨在帮助初学者系统地学习和巩固Oracle的相关知识。 首先,我们可以从“Oracle习题”这个文件名推测,这些文档可能包含了各种类型的题目,如选择题、...

    达内ORACLE练习一达内ORACLE练习一

    根据提供的标题、描述、标签及部分内容,我们可以提炼出与Oracle数据库相关的练习题目的知识点。以下是对这些知识点的详细解析: ### 1. 查询第30部门的所有员工 **SQL语句**: ```sql SELECT ename FROM emp WHERE...

    Oracle练习用表(DEPT、EMP、BONUS、SALGRADE)的建表语句

    Oracle数据库安装完毕,自带有很实用的练习用表:DEPT、EMP、BONUS、SALGRADE。很方便练习。 但是MySQL数据库安装完毕,却没有练习用表。 特此,把Oracle这4个练习用表的建表语句,分别用Oracle语句和MySQL语句写...

    各种oracle练习(习题+答案)

    针对大三学生的学习需求,这份“各种Oracle练习(习题+答案)”的资源提供了全面的复习材料,涵盖了Oracle数据库的基础知识到高级概念,旨在帮助学生巩固理论知识,提升实际操作技能,以应对考试或未来的职业需求。...

    Oracle练习表MySQL版

    Oracle数据库自带的数据库练习表MySQL版。包含(EMP、DEPT、BONUS、SALGRADE、DUMMY)

    学习oracle练习sql脚本.zip

    这个"学习oracle练习sql脚本.zip"文件显然是为那些希望深入理解和掌握Oracle数据库及SQL语法的人准备的。 在Oracle中,SQL被用来创建和操作数据库对象,如表、视图、索引等,以及查询、更新和管理存储在数据库中的...

    Oracle 练习习题Oracle 练习习题

    Oracle 练习习题

    oracle 练习题目2

    从给定的Oracle练习题目中,我们可以提炼出一系列重要的数据库操作和SQL技能点,这些技能对于初学者来说至关重要。下面是对这些知识点的详细说明: ### 基本SQL查询 这是学习SQL的基础,涉及到如何使用`SELECT`, `...

    oracle练习题关于触发器的作业

    在"oracle练习题关于触发器的作业"中,你可能需要设计和实现各种类型的触发器来解决实际问题。例如,你可能需要创建一个触发器来确保表中的某个字段始终具有唯一的值,或者在更新记录时自动更新另一相关表的数据。 ...

    Oracle练习.txt

    3.如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ? select sys_context('userenv','ip_address') from dual; 如果是登陆本机数据库,只能返回127.0.0.1 4.如何给表、列加注释? SQL&gt;comment on table 表 is '表...

    精英班oracle练习.rar

    "精英班Oracle练习"这个压缩包文件显然包含了针对Oracle数据库系统的学习材料,可能是练习题、案例分析或者教程文档,旨在帮助学员提升Oracle相关的技能。下面将详细讨论Oracle数据库的一些核心知识点。 1. **...

    java oracle练习例子

    本示例"java oracle练习例子"旨在提供一个基础的Java程序,演示如何使用JDBC(Java Database Connectivity)API连接到Oracle数据库,执行SQL查询,并处理返回的结果集。下面我们将深入探讨这个主题。 首先,为了...

    经典oracle练习题

    本资料集中的“经典Oracle练习题”旨在帮助你巩固Oracle的基础知识,提高解决实际问题的能力,同时也为面试做好充分准备。 1. **SQL查询基础** - 学习如何使用SELECT语句进行数据检索,包括基本的SELECT语句,如...

    oracle练习题.zip

    这个"oracle练习题.zip"压缩包包含了一些关于Oracle数据库操作的练习资料,主要关注查询语句和基本的数据操作。 首先,"table.sql"文件很可能是创建数据库表的SQL脚本。在Oracle中,创建表是数据库设计的基础,它...

    我的oracle练习

    "我的Oracle练习"这个压缩包文件显然包含了针对Oracle数据库初学者的一些练习题目,旨在帮助新手熟悉Oracle的基本操作和概念。"oracle1-9小练习"的标签表明这可能是一个逐步进阶的系列练习,涵盖了从基础到稍高级别...

    oracle练习题 总结了一下几个经典的

    这些练习题涵盖了Oracle数据库的基本查询技巧,包括子查询、连接操作、聚合函数、条件判断以及各种内置函数的使用。通过解决这些问题,可以深入理解Oracle SQL和PL/SQL的用法,并提升在实际数据库管理中的技能。

    oracle 练习题一

    根据给定的Oracle练习题,我们可以提取出一系列与Oracle SQL相关的知识点。这些知识点不仅包括了基本的表结构创建、数据插入等操作,还涉及到了较为复杂的查询语句编写。接下来,我们将逐一分析并解释这些知识点。 ...

Global site tag (gtag.js) - Google Analytics