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

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

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

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

18.png

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

分析:

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

查询顺序反过来:

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

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,数据库结构:(学生数据表、学科表、成绩表)


19.png20.png21.png


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

分析

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

查询顺序反过来:

学科表(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,数据库结构:(成绩数据表)


22.png


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

分析:

分组科目: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,数据库结构:(年级表、学生表)

23.png24.png

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

 

注意不要麻烦拆解为:统计每个年级的男生数量、每个年级的女生数量(虽然也可以,不过有点点麻烦)这样的话,分组条件为年级:-----------分组 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;

 

目录
相关文章
|
9月前
|
数据库
Google Earth Engine(GEE)——全球树木异体测量和树冠结构(Tallo)数据库
Google Earth Engine(GEE)——全球树木异体测量和树冠结构(Tallo)数据库
104 1
|
9月前
|
SQL 数据库
一个数据库题目理解所有的sql语句
一个数据库题目理解所有的sql语句
53 0
|
7月前
|
SQL 数据库 微服务
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
|
2月前
|
存储 消息中间件 SQL
微服务改造血泪史:数据库拆分踩过的那些坑!
本文复盘了传统项目改造成微服务架构时,数据库拆分过程中遇到的问题。主要问题包括:1. 数据库拆分过细,导致跨服务调用频繁,破坏服务独立性;2. 数据一致性难以保证,分布式事务管理复杂;3. 跨服务查询影响性能,复杂查询难以实现。初次改造时应避免过度拆分,逐步演进架构。
59 0
|
5月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
700 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
9月前
|
数据库
生成数据库结构文档
生成数据库结构文档
|
7月前
|
Oracle 关系型数据库 数据库连接
|
8月前
|
存储 关系型数据库 MySQL
|
8月前
|
SQL 运维 数据管理
数据管理DMS产品使用合集之如何修改在结构设计中的基准数据库
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
153 4
|
8月前
|
存储 关系型数据库 MySQL
MySQL数据库——InnoDB引擎-逻辑存储结构(表空间、段、区、页、行)
MySQL数据库——InnoDB引擎-逻辑存储结构(表空间、段、区、页、行)
181 7

热门文章

最新文章