zoukankan      html  css  js  c++  java
  • 数据库重要的是结构,用小学语句拆分,数据库题目也可以很简单

    数据库重要的是结构,用小学语句拆分,数据库题目也可以很简单

    1,数据库结构:(学生数据表)

    题目:查询与学生“热巴”密码相同的同学信息。

    分析:

    同学信息:(学生表)--密码:(学生表)--热巴【学生姓名】:(学生表)

    查询顺序反过来:

    学生姓名是热巴 --- 密码 -- 同学信息

    select * from stu where Login in
    select Login from Stu where in        
                stuName=‘热巴’;)        

    以上是偏重于用语文的理解能力,不够直接(问一究一):

    以下是找答案人的思考角度:

    查询与学生“热巴”密码相同的同学信息:

    主干:查询学生信息:select * from stu;

    限制:与热巴密码相同:直接翻译where login=‘热巴’,不过login 并不会直接等于‘热巴’,等于“热巴”也在Stu表是属性stuName(stuName=“热巴” 的学生表一行记录可以得到密码信息),于是乎,在以stuName=“热巴” 为前提下得到密码信息, 同一张表select姓名是热巴的密码出来后,在从该表找密码。

    最新理解角度(请用英语定语从句理解+与已经属性处在同一行记录的其他属性!!!):

    查询与学生“热巴”密码相同的同学信息。查询同学信息,前提是密码是与“热巴”相同。 select * from stu where “密码是与“热巴”相同”。

    密码是与“热巴”相同”:“热巴”是stuName,即stuName=‘热巴’ 密码。 得前提where stuName=‘热巴’。 密码 where where stuName=‘热巴’。     

    请用英语定语从句理解!!!

    2,数据库结构:(学生数据表、学科表、成绩表)

    题目:查看参加 ‘思想与法律基础’课程 考试 的所有学生信息:

    分析

    所有学生信息:学生表-------》考试:考试表--------》‘思想与法律基础’课程:学科表

    查询顺序反过来:

    学科表(where ‘‘思想与法律基础’’)-课程编号-  ——> 考试表(where ‘‘课程编号’’)-学生编号- 学生表学生信息

    语法:

    select * from stu where stuId in
         (select stuId from score where subjectId in
                (select subjectId from Subject where subjectName=’思想与法律基础’))

    以上是偏重于用语文的理解能力,不够直接(问一究一):

    以下是找答案人的思考角度:

    主干:查看学生信息 from stu(学生表)

    限制:参加“思想与法律基础”课程考试:

    ①    直接翻译过来的限制条件是where score=‘思想与法律基础’,但是学生表还没有score属性,score属性是在成绩表中。

    ②    所以需要跨表select获取属性,通过共同属性子查询实现跨表,使得学生表拥有了成绩表score属性

    ③    但是,发现成绩表的score属性不会直接等于“思想与法律基础”等于“思想与法律基础”的是在学科表的学科名称subjectName,所以,需要再一次通过共同属性跨表select子查询获得subjectName 属性。且“思想与法律基础”。

    最新理解角度(请用英语定语从句理解+与已经属性处在同一行记录的其他属性!!!):

    查看参加 ‘思想与法律基础’课程 考试 的所有学生信息:

    ①查询所有学生信息 where 参加 ‘思想与法律基础’课程的考试: select * from stu where 参加 ‘思想与法律基础’课程的考试

    参加 ‘思想与法律基础’课程的考试考试 where ‘思想与法律基础’的课程

    ‘思想与法律基础’的课程(其他属性) 课程 where 课程名= ‘思想与法律基础’     (课程--->考试---得知,其他属性是学科编号,通过学科编号可以到达考试表)

    select 学科编号 from 学科表(学科表即课程表)where 课程名=‘思想与法律基础’---》(其他属性)考试表 where 学科编号 in (select 学科编号 from 学科表)where 课程名=‘思想与法律基础’)    (课程--->学生

    ---得知,其他属性是学生编号,通过学生编号可以到达学生表)

    ---》select * from stu where 学生编号 in 学生编号 考试表 where 学科编号 in (select 学科编号 from 学科表)where 课程名=‘思想与法律基础’)

    请用英语定语从句理解!!!

     3,数据库结构:(成绩数据表)

    题目: 筛选平均分及格的科目(筛选的前提是分组:即分组了平均分及格的科目)

    分析:

    分组科目:group by subjectId, 注意,分组的属性,需要出现在select之后 select subjectId ………… group by subjectId;

    平均分及格:平均分—成绩表的分数的平均—>父表:score

    及格:avg(score) > 60;  筛选’----having

    select subjectId,avg(score)from score group by subjectId having avg(score) > 60;

     4,数据库结构:(年级表、学生表)

    题目:分别统计每个年级男生、女生人数

    注意不要麻烦拆解为:统计每个年级的男生数量、每个年级的女生数量(虽然也可以,不过有点点麻烦)这样的话,分组条件为年级:-----------分组 grop by gradeId

    例如:select gradeId as '年级',(select count(sex) from Stu where sex='男' and gradeId=grade.GradeId) as '男生数量',(select count(sex) from Stu where sex='女' and gradeId=grade.GradeId) as '女生数量' from grade group by(gradeId);

    思考角度:统计每个年级的男生、女生数量

    看到(统计:提示要分组啦;每个:提示要分组啦; 比较害羞的’、’: 提示要分组啦)

    分组条件:年级、性别

    select gradeId as '年级', sex as '性别',count(*) as '人数' from stu  group by gradeId,sex;

     5,查询没有参加“马克思基本原理”课程考试的学生信息:

    分析:

    (1)     没有:提示了可以利用左连接的不足补null (left join – 读一下题意,发现左表是学生表,右表是成绩表,通过共同属性(学生编号)连接),到这里得到了 含成绩为null的学生成绩表。

    (2)限制: 参加“马克思基本原理”课程考试 ,直接翻译 where score=‘马克思基本原理’,score属性是在成绩表中,但是score不会直接等于“思想与法律基础”, “思想与法律基础”是在学科表的学科名称 SubjectName,所以需要通过共同属性跨表select子查询获得subjectName 属性。且“马克思基本原理”。

    select StuId,Stu,Score from( select stu.StuId,StuName,Score from stu left join Score on(stu.StuId=score.StuId 
    and score.SubjectId=( select SubjectId from subject where SubjectName=’马克思基本原理’)) as tempwhere Score is null;

     

     

     
     
  • 相关阅读:
    使用curl命令操作elasticsearch
    Elasticsearch + logstash + kibana 配置
    Solr6.2.0 + zookeeper 集群配置
    Elasticsearch + logstash中文指南
    ELK+kafka构建日志收集系统
    基于docker+etcd+confd + haproxy构建高可用、自发现的web服务
    mongodb配置
    Docker的私有仓库
    GitLab + Jenkins + Docker + Kubernetes。
    ansible 安装使用
  • 原文地址:https://www.cnblogs.com/shan333/p/14696384.html
Copyright © 2011-2022 走看看