一、网安学习成长路线图
网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

讯享网
二、网安视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

三、精品网安学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、网络安全源码合集+工具包
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、网络安全面试题
最后就是大家最关心的网络安全面试题板块


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化资料的朋友,可以点击这里获取
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
首先看到上面的思想,就知道的使用循环来实现这个目的,在我的另外一篇博客里面就说到,相关子查询就是一个循环。所以,这里得使用相关子查询来实现。
其次前面说了,要使用否定之否定来做,所以要使用not exists。而且,对于exists和not exists来说,也必须和相关子查询来搭配使用。(个人理解)
我们看到第二重查询中有一个 y.Sno='’这个就是为了后面三张表在做连接的使用导致y.Sno只能是,那么就会导致y.Cno只能是所选择的课程的Cno(这个也就是我们的目的),所以,z.Cno也会被限制住。z.Cno被限制后,导致z.Sno也被限制住,同时影响x.Sno。如果大家不理解的画,可以先单独写一哈这样的语句:
select * from tb_SC x,tb_SC y,tb_SC z where x.Sno=z.Sno and y.Cno=z.Cno
讯享网
这个就是把三张表连接起来,至于为什么要这样连,不写成
讯享网where x.Cno=z.Cno and y.Sno=z.Sno
这个原因就是上面的那段话,通过一些限制就可以达到这个效果了。我还试过这样写:

select distinct Sno from tb_SC x where not exists ( select * from tb_SC y where not exists ( select * from tb_SC Z where z.Cno=y.Cno and z.Sno=x.Sno and y.Sno='' ) )
结果也是错误的。为什么也是错误的呢?我是这样想的。对于正确写法而言,我们最终相当于是在下面这个SQL语句得出的表中匹配结果。
讯享网select * from tb_SC x,tb_SC y,tb_SC z where z.Cno=y.Cno and z.Sno=x.Sno
上面的结果得出的表,我截一部分来看看:结果有很多组合!

但是按照错误的写法来看,我们就是在这样的SQL语句得出的表中来匹配结果:
select * from tb_SC x,tb_SC y,tb_SC z where z.Cno=y.Cno and z.Sno=x.Sno and y.Sno=''
这个是它的结果:结果相对来说就很少了。

最后,大家可以看到,写成错误的写法,显然会将有些应该匹配的数据丢失。记得,当你之后回头复习发现还是不会的时候,可以自己把上面的函数去执行一下就可以了,看看结果到底是什么。图片终究是不真实的,自己实际看到的才真实。
最上面的结果是会返回学生的,但是我现在要查询的是:至少选修了学生选修的全部课程的其他学生的学号。
讯享网select distinct Sno from tb_SC x where not exists ( select * from tb_SC y where y.Sno='' and not exists ( select * from tb_SC Z where z.Cno=y.Cno and z.Sno=x.Sno and x.Sno!='' ) )
说了很多,其实还是得自己多多理解,这个复杂的SQL语句靠别人是学不会的,的自己理解。加油?
查询至少选修了0001号和0002号课程的学生的学号。
一开始遇到这个题目,就想到的使用否定之否定。但是,发现自己写不出来了。欸,只能说自己还是没有掌握吧!为什么说这里可以不用使用否定之否定呢?是因为上面是要我们求“至少选修了学生选修的全部课程的学生号码”,我们并不知道到底选修了什么。但是这题不一样,题目明确说了,就是至少选修了0001和0002号课程的学生。所以,我们使用一个谓词in就可以了。SQL语句如下:
select distinct Sno from tb_SC where Sno in( select x.Sno from tb_SC x,tb_SC y where x.Sno=y.Sno and x.Cno='0001' and y.Cno='0002');
如果这里没有加上distinct的话,就会有很多重复的记录,就像这个样子

原因很简单,就是因为嵌套查询的原理都是拿出一条元组记录一个一个去比配,满足的话就放到结果集中去。所以,因为选课表是一个学生可能选择多门课,所以,就会有重复的记录了。
还有为什么要使用自身连接,这个为之前的博客里面有说到过,链接给大家去看啦!https://blog.csdn.net/suliangkuanjiayou/article/details/
讯享网select Sno from tb_Student where not exists( 还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包! 王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。 对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料! 【完整版领取方式在文末!!】 *93道网络安全面试题*    内容实在太多,不一一截图了 黑客学习资源推荐 最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助! 对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。 1️⃣零基础入门 ① 学习路线 对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。  ② 路线对应学习视频 同时每个成长路线对应的板块都有配套的视频提供:  网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。 [需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ffa03fab5e56a57acb) 一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/42203.html