现在学习SQL是为了服务什么行业

如果你掌握了SQL,你就可以成为一名数据库管理员。
如果你掌握了它,到处都会有人。
从行业来看,现在每个行业都有IT部门。

日拱一卒,伯克利教你写SQL

大家好,我是唐亮。
本文首发于梁码公众号

你学过数据库或者SQL语法吗?您是否曾经了解过所有SQL语法,但当您真正想要编写它时仍然感到困惑?

SQL涉及数据处理的方方面面。
它不仅用于后端数据库,也是算法工程师和数据分析师的必备技能。
所以如果你有过类似的经历或者想加强你对SQL的理解。
那你就来对地方了,这次BerkeleyCS61A作业是关于SQL应用的。

让我们再举一个伯克利CS61A课程的例子。
这是我见过的最好的计算机基础课程。
它涵盖了非常丰富的内容:Python、算法、数据结构、机器学习、数据可视化,甚至利用编译原理的知识来编写Lisp解释器。

这个练习是关于SQL的。
我们需要根据问题的要求,使用SQL过滤出指定的数据。
这让我想起了第一次去阿里巴巴实习的情景。
当时实习生每天都需要使用SQL来处理数据。
但当时我刚刚学了SQL语法,实习期间没练过几次,心里很紧张,经常写不礼貌的题,如果我能在实习前做这些题,那肯定不会差。
老虎就是这样。

其实SQL本身的语法并不难。
你只需要在正确的情况和正确的问题上进行练习。
思考和练习几个问题可以极大地提高你的水平和理解。
因此,对于刚刚接触SQL语法的同学来说,这四个问题是一个很好的反思和练习的机会,值得尝试一下。

课程链接

原始文档

Github

DogData

本次练习使用的数据是手动创建的,数据量非常大大大小小,就那么几个。

此数据是关于宠物狗的。
它包含许多不同类型狗的信息,例如毛发、身高等。
这位老师真的很喜欢狗。
在他的视频讲座中,他还展示了他的狗家族:

数据如下:

CREATETABLEparentsASSELECT"abraham"ASparent,"barack"ASchildUNIONSELECT"abraham",“克林顿”UNIONSELECT“德拉诺”,“赫伯特”UNIONSELECT”填充添加","亚伯拉罕"UNIONSELECT"fillmore","delano"UNIONSELECT"fillmore","grover"UNIONSELECT"艾森豪威尔","fillmore";CREATETABLEdogsASSELECT"abraham"ASname,"long"ASfur,26ASheightUNIONSELECT"barack","短",52UNIONSELECT"克林顿","长",47UNIONSELECT"德拉诺","长",46UNIONSELECT"艾森豪威尔","短",35UNIONSELECT"菲尔莫尔","卷曲",32UNIONSELECT"格罗弗","短",28UNIONSELECT"赫伯特","卷曲",31;CREATETABLEsizeASSELECT"地图play"ASsize,24ASmin,28ASmaxUNIONSELECT"mini",28,35UNIONSELECT"medium",35,45UNIONSELECT"standard",45,60;

即使您使用的原始数据发生了变化,表逻辑仍然必须正确。
例如,系统要求您过滤掉以字母h开头的狗的所有信息。
你应该这样部署它this:

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";

不要假设只有某些数据可用,而是直接选择结果:

SELECT"herbert";

将更改测试数据以解决这种情况。

Q1:狗狗的尺寸

某宠物法规规定标准贵宾犬的身高在45到60厘米之间。

尺码表描述了每个品种的身高上限和下限。
创建一个size_of_dogs表,有两列,一列是狗的名字,另一列是它的大小。

--ThesizeofeachdogCREATETABLEsize_of_dogsASSELECT"REPLACETHISLINEWITHYOURSOLUTION";--示例:SELECTnameFROMsize_of_dogsWHEREsize="toy"ORsize="mini";--预期输出:--abraham--eisenhower--fillmore--grover--herbert

开发完成后,测试检查:

python3ok-qsmall解答

我们要做的就是根据每只狗的身高找出对应的尺寸。

方法很简单,连接dog和size,然后根据height、min和max过滤出合适的匹配。

CREATETABLEsize_of_dogsASSELECTname,sizefromdogs,sizeswhereheight>minandheight<=max;Q2:ByHeight

创建表by_height,其中包含基于父母身高的所有父母狗的名称列。
排序低。

--所有狗的父母均按父母身高降序排列CREATETABLEby_heightASSELECT"REPLACETHISLINEWITHYOURSOLUTION";

示例:Fillmore的Parenteisenhower,身高High为35,因此排名在Grover之前。
它的父母是菲尔莫尔,身高只有32。

狗的父母身高相同。
顺序可以是任意的,例如,巴拉克和克林顿都必须列在最后和第二。
他们之间的顺序没有关系。
没关系

--示例:SELECT*FROMby_height;--预期输出:--herbert--fillmore--abraham--delano-。
-Grover--Barack--clinton

开发完成后测试:

python3ok-qparent-height回复

我们需要按每个父狗的身高,所以我们需要知道父狗的身高,所以我们需要将父表和狗表连接起来,因为我们要得到Rent的高度pa,所以连接条件是parent=name,表示身高表中的parent和name相等

最后,简单地按身高排序,使用orderby语法

CREATETABLEby_heightASSELECTchildasnamefromparents,dog。

swhereparent=nameorderbyheightdesc;Q3:句子

为每个狗兄弟姐妹组合创建一个句子。
兄弟狗组合的定义是体型相同的狗

以及每对狗。
兄弟组合是通过其大小来描述的。
您可以参考以下评论:

SELECTn。
ameFROMdogsWHERE"h"<=nameANDname<"i";0

每个狗兄弟姐妹的组合只能出现一次,并确保组合中的狗名按字母顺序排列,例如barackandclinton代替clintonandbarack。

示例:

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";1

提示:

首先,创建一个同级表(我们已经提供了基本框架)并比较dogSize兄弟可以简化问题

如果你让一个表自连接,你可以将它添加到from语句后面来给它起一个名字。
别名

你可以使用||连接字符串

开发完成后检查:

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";2答案

想法是首先找到形成答案的所有可能的狗兄弟组合,然后将大小添加到过滤器中。

这里有一个潜在的限制。
因为我们正在寻找犬兄弟,所以我们必须确保找到的两只狗有相同的父母。
其次,我们必须确保这两只狗按字典顺序排列。

明白了这一点后,这里其实是一个非常简单的自己联表的例子:

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";3

找到所有潜在的狗兄弟后,我们将狗的尺寸连接起来,以确保两个狗兄弟的尺寸相同。

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";4Q4:堆叠

狗也可以玩堆叠游戏,较小的狗可以站在狗的上面更高。
假设不考虑罗汉堆叠后狗身高的降低,创建一个表格,有两列数据存储所有4只狗堆叠在一起的总和,高度达到170厘米。

第一列是狗的名字,用逗号分隔,第二列是狗按总高度顺序堆叠时的总高度。

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";5

每只罗汉狗中,每只狗只能出现一次,且狗的排列顺序是从上到下。
按身高排序,即最高的狗在底部。
我们可以假设没有狗具有相同的高度。

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";6

建议可以按照以下思路完成:

从stack_helper开始,给定一个空表,用于存储狗的所有信息,包括狗的名字(狗名之间用逗号分隔)、总身高和下面狗的身高。
您可以在底部使用狗的身高来确保罗汉狗按照狗的身高进行排序。

使用Insertinto语句初始化stack_helper表并创建一只名为Arhat的狗。
您可以使用以下语法将数据从一个表插入到另一个表中:

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";7

使用狗的Arhat创建Arhat形成由两只狗重复这个过程,直到我有四只狗

记住使用stack_helper表中的数据来填充stack表

测试完成后:

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";8回答

实际上这个问题解释得很清楚整个想法和提交过程。
我们使用stacks_helper表作为中间表来存储入栈过程中的中间结果。

首先创建只有一只狗的罗汉,然后加入狗表以生成两只狗的所有可能的罗汉组合。
依此类推,打造出三狗、四狗的罗汉组合。

创建新的罗汉狗时,需要确保下狗的高度大于上狗的高度。
狗在当前罗汉位置的底部。
然后我们将它们全部过滤掉。
stacks_helper表中的结果总高度大于等于170。
然后按高度排序。

SELECTnameFROMdogsWHERE"h"<=nameANDname<"i";9

此时,本班所有项目和作业均视为完整墙。
错过了实验室。
稍后我会补上的,感谢大家的阅读和支持。

原文:https://juejin.cn/post/7097848399881306120

每天学习C语言14个小时要几天能学会~

以前学习的时候,我花了22天~每天10个小时~所以需要15天左右~~当然,不是老师,但是这么说吧,学了这15天,就不需要明白了。
~JAVA是一门很广泛的语言,学完VC++后再学这个。
也可以学习一下~~记住,数据库对象很重要~~