zoukankan      html  css  js  c++  java
  • SQL 经典题型解答(1)

    SQL 经典题型解答

    @(数据库)

    1.学生表

    Student(S,Sname,Sage,Ssex) --S 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别

    2.课程表

    Course(C,Cname,T) --C --课程编号,Cname 课程名称,T 教师编号

    3.教师表

    Teacher(T,Tname) --T 教师编号,Tname 教师姓名

    4.成绩表

    SC(S,C,score) --S 学生编号,C 课程编号,score 分数
    --创建测试数据

    create table Student(S varchar(10),Sname varchar(10),Sage datetime,Ssex nvarchar(10))
    insert into Student values('01' , '赵雷' , '1990-01-01' , '男')
    insert into Student values('02' , '钱电' , '1990-12-21' , '男')
    insert into Student values('03' , '孙风' , '1990-05-20' , '男')
    insert into Student values('04' , '李云' , '1990-08-06' , '男')
    insert into Student values('05' , '周梅' , '1991-12-01' , '女')
    insert into Student values('06' , '吴兰' , '1992-03-01' , '女')
    insert into Student values('07' , '郑竹' , '1989-07-01' , '女')
    insert into Student values('08' , '王菊' , '1990-01-20' , '女')
    create table Course(C varchar(10),Cname,varchar(10),T varchar(10))
    insert into Course values('01' , '语文' , '02')
    insert into Course values('02' , '数学' , '01')
    insert into Course values('03' , '英语' , '03')
    create table Teacher(T varchar(10),Tname,varchar(10))
    insert into Teacher values('01' , '张三')
    insert into Teacher values('02' , '李四')
    insert into Teacher values('03' , '王五')
    create table SC(S varchar(10),C varchar(10),score decimal(18,1))
    insert into SC values('01' , '01' , 80)
    insert into SC values('01' , '02' , 90)
    insert into SC values('01' , '03' , 99)
    insert into SC values('02' , '01' , 70)
    insert into SC values('02' , '02' , 60)
    insert into SC values('02' , '03' , 80)
    insert into SC values('03' , '01' , 80)
    insert into SC values('03' , '02' , 80)
    insert into SC values('03' , '03' , 80)
    insert into SC values('04' , '01' , 50)
    insert into SC values('04' , '02' , 30)
    insert into SC values('04' , '03' , 20)
    insert into SC values('05' , '01' , 76)
    insert into SC values('05' , '02' , 87)
    insert into SC values('06' , '01' , 31)
    insert into SC values('06' , '03' , 34)
    insert into SC values('07' , '02' , 89)
    insert into SC values('07' , '03' , 98)
    

    --1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数

    SELECT
    	a.*,
    	c.C,
    	c.score 
    FROM
    	student a
    	INNER JOIN (
    	SELECT
    		a.* 
    	FROM
    		( SELECT * FROM sc WHERE sc.C IN ( '01' ) ) a
    		INNER JOIN ( SELECT * FROM sc WHERE sc.C IN ( '02' ) ) b ON a.s = b.s 
    	WHERE
    	a.score > b.score 
    	) c ON a.s = c.s;
    

    详解:

    首先通过 sc 表格找到 ‘01’ 课程比 ‘02’ 课程高的学生。
    SELECT * from sc WHERE sc.C in('01') 用来找到学生 ’01‘ 课程的成绩
    SELECT * from sc where sc.C in('02')用来找到学生 ’02‘ 课程的成绩
    从题目中可以得知学生需要有 ‘01’ 和 ‘02’ 这两门课程的成绩,所以通过INNER JOIN将这两个表格通过连接,然后通过WHERE判断成绩大小,现在我们生成的表表示 ‘01’ 课程比 ’02‘ 课程成绩高的学生表,然后将这个表与 Student 表连接,得出最终结果如下:


    答案参考自:SQL 经典五十道题

  • 相关阅读:
    eclipse集成spring插件(springsource-tool-suite)相关问题
    hibernate的hql语句以及sql原生语句实现CRUD实例
    hibernate实体之间的关联关系(一对多,多对多)
    Axure基础系列教程
    如何制定AxureRP设计体系
    Axure快捷键大全 Axure RP Pro 6.5快捷键
    Axure RP中线条的设置
    axure网格设置
    axure制作圆形组件——axure制作技巧
    axure制作项目符号列表样式
  • 原文地址:https://www.cnblogs.com/wobu/p/9615837.html
Copyright © 2011-2022 走看看