数据库

首页 » 常识 » 问答 » 图解SQL8张图彻底学会SQL
TUhjnbcbe - 2024/12/15 18:17:00
脸部白癜风是否可以治疗 https://m.39.net/disease/a_z4uprgq.html
对于SQL入门我分享一个个人观点:如果重视SQL练习的话,难度不大,如果光看书,难度很大。我自己学习SQL花了1周左右,把SQL的经历总结为8个关卡,通过8张图来表示,期间也遇到了很多的坑,这里一并总结出来。领会了这8张图,基本上面试方面可以过关了。我基于的学习材料如下:1,SQL自学网,包含教程,视频,练习,算是一个全套资源了自学SQL网(教程视频练习全套)xusql.cn对小白入门还算友好吧。¥第1关,用20%语法解决80%的数据学习SQL同样适用20/80原则,学会20%的语法就能解决80%的问题,第一步学会基础的查询语句,足够运用在实际工作中了。学习时间:2天。坑点分析:第一步不要去安装什么数据库,或者去学创建表,写入数据那些语法,你会被坑。为什么呢,相比于查询哪些语法更复杂,可以先照猫画虎把查询语句练起来简单入手,可以提振自信心。一练就有效果sai~。推荐一个初学者用到《SQL手册》,用查字典的方法写SQL,在线的可查,避免死记语法。我这里截图不全,可以在线打开手册网址:点击打开手册网址关键点,打死记住SQL法则:SELECTcol,col,col找什么?FROMtabl从哪找?WHEREcol条件条件是啥?这个法则教你怎么一步步写一个查询SQL,可以当做一种写SQL的思维吧,我觉得非常好用。简言之,写任何一个查询语句,都分解成步:第一步:思考FROM后面的(也即是表)第二步:思考WHERE条件(查手册就可以)第三步:完善SELECT后面的(也就是老板要显示的数据)。可能跟大部分普通的思路不太一样,不过适用于初学,训练。再说一个坑点,关于时间。简单SELECT查询的入门学习时间,安排50%都不过分,这部分突破之后,后面很顺。这块我是反反复复折腾几次,大家吸取我的教训sai~。¥第2关,搞定统计和排序统计都是写在SELECT后面,也就是对结果统计,可以用WHERE筛选数据后统计。排序都是最后执行,也就是所有计算做完,才做排序.也就是最终结果排序。学习时间:1天添加图片注释,不超过字(可选)坑1:第一次对GROUPBY分组不好理解,这时候你可以用COUNT计数做实验,比如按某一个列分组,你可以自己看一下表里的数据,自己分分组,再和SQL计算出来的比对一下。坑2:SELECTcount(*)=不要出现类似的这种语法错误,SELECT后面不能做条件坑:多列排序问题,DESC是默认排序,所以ORDERBY列1,列2表示两个降序,ORDERBY列1ASC,列2表示第一列升序,第二列降序。特别是这个ORDERBY列1,列2ASC;不要以为是两个升序,其实第一个只是默认为DESC。坑4:LIMIT语法问题,LIMITa,b第一个a表示起始位置,第二个b表示个数假设数据是a1,a2,a,a4,...anlimit1,2结果a2,alimit0,2结果a1,a2limit1结果a1limit,1结果a4¥第关,我会联表了

单表查询掌握之后,有些问题一张表数据不够,需要同时从多张表查数据,就用到联表语句了。

join联表,其实就是丰富FROM后面的内容,原始是FROMtabl一张表现在是FROMtabl1jointabl2两张表合成一张表看待!(这个思维很重要,其实联表完了看成新表就可以)学习时间:0.5天添加图片注释,不超过字(可选)坑1:内联,左连,右连傻傻搞不清,这几乎是每一个人都会出现的问题。我到底用哪个联表方法。关键就是记住一点,你要留下哪些数据tabl1联tabl2留下两个表都有的ID,tabl1innrjointabl2留下tabl1的所有数据tabl1lftjointabl2留下tabl2的所有数据tabl1rightjointabl2¥第4关,复杂查询IfollowU简单查询会了之后,有一种情况是查询条件用到的数据正好是第二张表里的数据,这时候就需要用到子查询了,也就是查询嵌套着查询。学习时间:0.5天添加图片注释,不超过字(可选)坑1:子查询一开始不好理解,其实可以这么理解,比如:slct*fromtablwhra=(slctcolfromtabl2whrcol1=xx)可以把这个sql拆成2步,先理解(slctcolfromtabl2whrcol1=xx),我们手动的去执行这个查询,假设得到的结果是那么:slct*fromtablwhra=是不是就是我们要的条件?思考一下:为什么不直接用两步,第一步查出,第二步直接用a=来查,而要用子查询呢?其实思考清楚这个问题,你对子查询就完全理解了。slct*fromtablwhra=slct*fromtablwhra=(slct)slct*fromtablwhra=(slctcolfromtabl2whrcol1=xx)上面三句,在现在这个时刻效果是一样的,都能查出要的数据。但是第三句的子查询有一个好处,就是当tabl2的col数据变更的时候(数据总是不断更新的),这种情况下第句任然可以查出正确的结果,但是1,2句就不行了。¥第5关,新增,更新和删除数据有时候需要自己去新增数据库的数据,所有要学习一下增,删,改的语法。也就是INSERT,UPDATE和DELETE学习时间:0.5天坑1:UPDATE和DELETE有一定的危险性,一定要注意先SELECT出来看一下是不是你要更新的数据。特别是对公司的数据库做操作的时候坑2:INSERT新增一定要注意ID重复问题,大多数表的ID都是不可以重复的,你重复写入相同的ID不会成功¥第6关,新建表和表的关系有时候会用到新建数据库和表的操作。库-表的关系是库大于表,不同名字的库下面可以建立相同的表。db1包含tabl1,tabl2db2包含tabl1,tabl这是允许的,可以用db1.tabl1,db2.tabl1这样来表示学习时间:0.5天添加图片注释,不超过字(可选)坑1:DROP操作极其危险,也就是平时我们听到的删库跑路操作,一般情况不要用。¥第7关,函数使用帮我解决难题在SQL运用的高级阶段,往往用到各种函数,查询条件里可以用函数,数据结果的计算也可以用函数。你可以把函数理解为数据库提供给我们的一些算法,这样我们就可以在SQL里直接计算了。这些算法组合到一起就能发挥给常大的能力。学习时间:1天添加图片注释,不超过字(可选)坑1:substr字符串截图函数,substr(a,b)老是有人纠结这个a和b的含义,其实真的记不住,实际用的时候去调一下a,b大小就可以了坑2:lik模糊匹配,简单点理解就是用一个字符串表示一个系列的字符串。把%符号理解成一张万能牌。坑:cas语法无法理解。这个是真的不好理解。你可以把cas心里想成if,如果的意思。作用就是把1堆数据按规则分类。¥第8关,汇总各种奇奇怪怪的SQL符号这一关复习一下,其实我发现SQL就是跟各种符号打交道,出错也大部分因为这些符号,所以做了一个整理汇总,尽量把这些符号搞清楚吧。学习时间:0.5天添加图片注释,不超过字(可选)总结SQL的语法,说多也不多,说少也不少,想要灵活运用,千万不能死记硬背。我还是忍不住把这个公式贴出来:SELECTcol,col,col找什么?FROMtabl从哪找?WHEREcol条件条件是啥?这个SQL法则告诉我们SELECT才是最重要的语法,INSERT,UPDATE等变更数据平时不怎么用,你记它干啥,需要的时候翻书就可以找到。第二点,写查询语句其实就是三板斧,先思考FROM这一段,再思考WHERE这一段,最后再优化SELECT后面的。要是你每一个SQL都能这么思考,我保证你可以学的贼快说说一个改变我思维你的SQL出过错吗?其实一开始我看到SQL出错是很烦的,谁不烦,谁不想一次性写对。无数次教训加上大牛的指导,我才明白SQL不是一次性写出来,真的是一步步调出来的(很多次看着大牛调试我的SQL)。遇到出错了,可以简化一下,换一换条件,甚至一个字一个字比对,一点点的调试+分析,要真有这个耐心。不知道你学习过程是不是也觉得SQL要一次性写出来,是的话真的可以换一个思维了。最后,练习真的很重要看遍,不如练习1遍(谁练谁知道)。

重点:除了SQL练习,我还重点整理了多个大厂的面试真题

其他更多资料领取

jingdata2

1
查看完整版本: 图解SQL8张图彻底学会SQL