`
lxx_amy
  • 浏览: 16617 次
  • 性别: Icon_minigender_2
  • 来自: 黄冈
最近访客 更多访客>>
社区版块
存档分类
最新评论

sql与oracle

    博客分类:
  • sql
sql 
阅读更多
SQL资料:和我们在课堂上所学的较大的不同在于:子查询的位置非常灵活,可以出现在from子句后(需要为此查询取别名),也可以出现在select的目标列中,请仔细读懂下列例子(有的地方取别名直接就空格后出现别名,有的地方是用as后面跟别名的方式)。
注:主要是学习基本语句或短语的用法

http://www.mianwww.com/html/category/it-interview/database/ 数据库资料链接


1.sql查询数据库最后10条记录并按降序排列 :
select top 10 * from tab order by col desc

oracle查询数据库最后10条记录并按降序排列 :
slect * from (select * from tab order by col desc ) where rownum <= 10

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表

问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
select a.S#
from (select s#,score from SC where C#=’001′) a,
(select s#,score from SC where C#=’002′) b
where a.score>b.score and a.s#=b.s#;

2、查询平均成绩大于60分的同学的学号和平均成绩;
select S#,avg(score)
from sc
group by S# having avg(score) >60;

3、查询所有同学的学号、姓名、选课数、总成绩;
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname

4、查询姓“李”的老师的个数;
select count(distinct(Tname))
from Teacher
where Tname like ‘李%’;

5、查询没学过“叶平”老师课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’);

6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);
7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
select S#,Sname
from Student
where S# in
(select S#
from SC ,Course ,Teacher
where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’ group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname=’叶平’));

8、查询所有课程成绩小于60分的同学的学号、姓名;
select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);

9、查询没有学全所有课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S#
group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);

10、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
select S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where S#='1001');

11、删除学习“叶平”老师课的SC表记录;
Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';

12、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
SELECT L.C# 课程ID,L.score 最高分,R.score 最低分
FROM SC L ,SC R
WHERE L.C# = R.C#
and
L.score = (SELECT MAX(IL.score)
FROM SC IL,Student IM
WHERE IL.C# = L.C# and IM.S#=IL.S#
GROUP BY IL.C#)
and
R.Score = (SELECT MIN(IR.score)
FROM SC IR
WHERE IR.C# = R.C#
GROUP BY IR.C# );

13、查询学生平均成绩及其名次
SELECT 1+(SELECT COUNT( distinct 平均成绩)
FROM (SELECT S#,AVG(score) 平均成绩
FROM SC
GROUP BY S# ) T1
WHERE 平均成绩 > T2.平均成绩) 名次, S# 学生学号,平均成绩
FROM (SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# ) T2
ORDER BY 平均成绩 desc;

14、查询各科成绩前三名的记录:(不考虑成绩并列情况)
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC)
ORDER BY t1.C#;

15、查询每门功成绩最好的前两名
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 2 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC )
ORDER BY t1.C#;

补充:
已经知道原表
year salary
——————
2000 1000
2001 2000
2002 3000
2003 4000

解:
select b.year,sum(a.salary)
from salary a,salary b
where a.year<=b.year
group by b.year
order by b.year;

在面试过程中多次碰到一道SQL查询的题目,查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列,完整的查询语句如下:
方法一:
select top 10 *
from A
where ID >(select max(ID) from (select top 30 ID from A order by ID ) T) order by ID
方法二:
select top 10 *
from A
where ID not In (select top 30 ID from A order by ID)
order by ID

分享到:
评论

相关推荐

    SQL与ORACLE区别

    1. SQL 与 Oracle 的内存分配: SQL Server 的内存管理主要依赖于初始化参数文件(SQL Server 配置管理器中的 `sqlservr.exe.config`),它允许动态和静态内存分配。动态内存分配允许 SQL Server 根据需要自我调整...

    sql与oracle的区别[定义].pdf

    SQL与Oracle是两种广泛使用的数据库管理系统,它们在内存分配、物理结构、日志模式、备份类型、恢复类型、事务隔离以及外键约束等方面有着显著的区别。 首先,从内存管理的角度看,SQL主要采用动态和静态内存分配...

    sql与oracle函数比较已经经典的sql语句大全

    这是sql与oracle函数比较已经经典的sql语句大全,里面包含了Oracle常用函数与sql常用函数对比翻译,oracle与sqlserver字符、时间函数的不同总结,SQLServer和Oracle函数比较和经典SQL语句大全,对新手及高级程序员都...

    SQL与Oracle接口的实现在企业信息化中的意义.pdf

    SQL与Oracle接口的实现在企业信息化中的意义.pdf

    sqlserver自动生成sql语句工具sqlserver转oracle

    在IT行业中,数据库管理系统是核心组成部分,SQL Server和Oracle分别是微软和甲骨文公司推出的两款广泛应用的关系型数据库系统。在企业级应用中,有时需要在不同的数据库系统间进行数据迁移或兼容性处理,这就涉及到...

    SqlDbx连接oracle

    首先,连接Oracle数据库通常需要Oracle客户端软件,但这里提到的“Sqldbx连接oracle,不用安装client”,意味着SqlDbx可能通过一种无需完整Oracle客户端的方式来实现连接。这种连接方式通常依赖于Oracle的Instant ...

    SQLSERVER建立ORACLE的链接服务器.doc

    2. 如果在 Oracle 中创建的表名和列名有引用的标识符,请全部使用与 Oracle 中创建名称时相同的字母大小写格式。 3. INSERT 语句应为表中的所有列提供值,即使表中的某些列为 NULL 或有默认值。 使用 Microsoft OLE...

    oracle SQL查询工具

    oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...

    SQLTracker oracle跟踪工具

    **SQLTracker:Oracle追踪工具详解** SQLTracker是一款专为Oracle数据库设计的跟踪工具,它以绿色版的形式提供,无需安装,解压后即可直接运行,极大地便利了用户的使用。尤其适用于那些希望快速、便捷地对Oracle...

    sql链接oracle组件,安装好,就可以直接跨平台链接

    在IT行业中,数据库管理系统Oracle是广泛应用的企业级数据库解决方案,而SQL作为结构化查询语言,是与各种数据库进行交互的标准。本文将深入探讨如何通过SQL连接Oracle组件,实现跨平台的数据访问。 首先,让我们...

    Oracle Sql语句转换成Mysql Sql语句

    Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在MySQL中可能需要转换为DECIMAL、TEXT或BLOB。例如,Oracle的NUMBER可以转换为MySQL的DECIMAL或...

    Oracle SQL 官方文档

    1. **PL/SQL语言参考**:PL/SQL是Oracle特有的过程化语言,它结合了SQL的查询能力与编程语言的控制结构。此文档详细介绍了PL/SQL的各种元素,如变量、常量、条件语句(IF-THEN-ELSIF)、循环(WHILE, FOR)、异常...

    从SQL到Oracle的迁移.rar

    1. **数据类型转换**:SQL与Oracle之间可能存在不同的数据类型。例如,SQL中的VARCHAR2对应Oracle的VARCHAR2,但SQL的DATE可能需要转换为Oracle的DATE或TIMESTAMP。理解这些差异并进行相应的数据类型映射是迁移的第...

    Oracle SQL(SQL for Oracle)

    Oracle SQL,全称为结构化查询语言在Oracle数据库环境中的应用,是数据库管理员和开发人员用于检索、更新和管理Oracle数据库的核心工具。Oracle SQL是SQL标准的扩展,它提供了许多特有的功能,以满足企业级数据库...

    SQLTracker Oracle跟踪工具(支持64位)

    在实际使用中,SQLTracker通常与其他Oracle管理工具结合使用,如Oracle Enterprise Manager或Toad for Oracle。它可以集成到这些工具中,提供额外的跟踪和诊断功能,增强整体的数据库管理能力。 此外,SQLTracker还...

    Oracle的SQL监视工具SQLTracker

    Oracle的SQL监视工具SQLTracker是一款强大的性能分析工具,专为数据库管理员和开发人员设计,用于诊断和优化SQL查询性能。这款工具在Oracle数据库环境中扮演着重要角色,它可以帮助用户实时监控SQL语句的执行情况,...

    Sql语法转换为Oracle语法

    标题“Sql语法转换为Oracle语法”涉及到的主要知识点是SQL Server与Oracle数据库之间的SQL语句转换。这通常是因为在系统迁移或跨平台开发时,需要将SQL Server的查询语句适应Oracle数据库的语法。 描述中提到的...

    Sqlserver转Oracle工具

    连接sqlserver数据库后选择相应的数据库-数据表以及目标数据库(目前只有oracle),可以将sqlserver转换成oracle数据,有两种方式,点击转换sql按钮,可以生成sql语句,复制语句到oracle里执行。第二种是连接oracle...

    Sql Server与Oracle的区别

    【Sql Server与Oracle的区别】 在数据库管理领域,Sql Server(由微软公司开发)和Oracle(由甲骨文公司提供)都是广泛使用的数据库管理系统。虽然两者都支持SQL语言,但它们在语法、功能和设计上存在一些显著差异...

Global site tag (gtag.js) - Google Analytics