在SQL语言中!是什么意思啊?

您所在的位置:网站首页 数据库中on是什么意思 在SQL语言中!是什么意思啊?

在SQL语言中!是什么意思啊?

#在SQL语言中!是什么意思啊?| 来源: 网络整理| 查看: 265

直接上图吧,我把SQL语法全部总结成几张图了,这应该是最节省时间的方式了吧。

!是非的意思,如果对SQL语法不熟悉,其实花1周时间基本可以学会

¥第一步,用20%语法解决80%的数据

学习SQL同样适用 20/80原则,学会20%的语法就能解决80%的问题,第一步学会基础的查询语句,足够运用在实际工作中了。

练习时间:2天。

坑点分析:第一步不要去安装什么数据库,或者去学创建表,写入数据那些语法,你会被坑。为什么呢,相比于查询哪些语法更复杂,可以先照猫画虎把查询语句练起来

简单入手,可以提振自信心。一练就有效果sai~。

推荐一个初学者用到 《SQL手册》,用查字典的方法写SQL,在线的可查,避免死记语法。我这里截图不全,可以在线打开

手册网址:点击打开手册网址

关键点,打死记住SQL法则:SELECT col,col,col 找什么? FROM table 从哪找? WHERE col 条件 条件是啥?

这个法则教你怎么一步步写一个查询SQL,可以当做一种写SQL的思维吧,我觉得非常好用。

简言之,写任何一个查询语句,都分解成3步:

第一步:思考FROM后面的(也即是表)

第二步:思考WHERE条件(查手册就可以)

第三步:完善SELECT后面的(也就是老板要显示的数据)。

可能跟大部分普通的思路不太一样,不过适用于初学,训练。

再说一个坑点,关于时间。

简单SELECT查询的入门学习时间,安排50%都不过分,这部分突破之后,后面很顺。这块我是反反复复折腾几次,大家吸取我的教训sai~。

¥第2关,搞定统计和排序

统计都是写在SELECT后面,也就是对结果统计,可以用WHERE筛选数据后统计。

排序都是最后执行,也就是所有计算做完,才做排序. 也就是最终结果排序。

练习时间:1天

坑1: 第一次对GROUP BY分组不好理解,这时候你可以用COUNT计数做实验,比如按某一个列分组,你可以自己看一下表里的数据,自己分分组,再和SQL计算出来的比对一下。

坑2:SELECT count(*) = 100 不要出现类似的这种语法错误,SELECT后面不能做条件

坑3:多列排序问题,DESC是默认排序,所以

ORDER BY列1, 列2 表示两个降序, ORDER BY列1 ASC, 列2 表示第一列升序,第二列降序。 特别是这个 ORDER BY列1, 列2 ASC;不要以为是两个升序,其实第一个只是默认为DESC。

坑4:LIMIT 语法问题,LIMIT a,b 第一个a表示起始位置,第二个b表示个数

假设数据是 a1,a2,a3,a4,...an limit 1,2 结果 a2,a3 limit 0,2 结果 a1,a2 limit 1 结果 a1 limit 3,1 结果 a4¥第3关,我会联表了

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

join联表,其实就是丰富FROM后面的内容,原始是FROM table一张表

现在是FROM table1 join table2 两张表合成一张表看待!(这个思维很重要,其实联表完了看成新表就可以)

练习时间:0.5天

坑1:内联,左连,右连 傻傻搞不清,这几乎是每一个人都会出现的问题。我到底用哪个联表方法。关键就是记住一点,你要留下哪些数据

table1 联 table2

留下两个表都有的ID, table1 inner join table2 留下table1的所有数据 table1 left join table2 留下table2的所有数据 table1 right join table2¥第4关,复杂查询I follow U

简单查询会了之后,有一种情况是查询条件用到的数据正好是第二张表里的数据,这时候就需要用到子查询了,也就是查询嵌套着查询。

练习时间:0.5天

坑1: 子查询一开始不好理解,其实可以这么理解,比如:

select * from table where a = (select col from table2 where col1 = xx)

可以把这个sql拆成2步,先理解 (select col from table2 where col1 = xx),我们手动的去执行这个查询,假设得到的结果是100

那么:

select * from table where a = 100 是不是就是我们要的条件?

思考一下:为什么不直接用两步,第一步查出100,第二步直接用a=100来查,而要用子查询呢?

其实思考清楚这个问题,你对子查询就完全理解了。

select * from table where a = 100 select * from table where a = (select 100) select * from table where a = (select col from table2 where col1 = xx)

上面三句,在现在这个时刻效果是一样的,都能查出要的数据。

但是第三句的子查询有一个好处,就是当table2的col数据变更的时候(数据总是不断更新的),这种情况下第3句任然可以查出正确的结果,但是1,2句就不行了。

¥第5关,新增,更新和删除数据

有时候需要自己去新增数据库的数据,所有要学习一下 增,删,改的语法。也就是INSERT,

UPDATE 和 DELETE

练习时间:0.5天

坑1:UPDATE 和 DELETE有一定的危险性,一定要注意先SELECT出来看一下是不是你要更新的数据。特别是对公司的数据库做操作的时候

坑2:INSERT新增一定要注意ID重复问题,大多数表的ID都是不可以重复的,你重复写入相同的ID不会成功

¥第6关,新建表和表的关系

有时候会用到新建数据库和表的操作。库-表的关系是库大于表,不同名字的库下面可以建立相同的表。

db1 包含 table1,table2 db2 包含 table1,table3

这是允许的,可以用 db1.table1, db2.table1 这样来表示

练习时间:0.5天

坑1:DROP 操作极其危险,也就是平时我们听到的删库跑路操作,一般情况不要用。

¥第7关,函数使用帮我解决难题

在SQL运用的高级阶段,往往用到各种函数,查询条件里可以用函数,数据结果的计算也可以用函数。

你可以把函数理解为数据库提供给我们的一些算法,这样我们就可以在SQL里直接计算了。这些算法组合到一起就能发挥给常大的能力。

练习时间:1天

坑1:substr字符串截图函数,substr(a,b) 老是有人纠结这个a和b的含义,其实真的记不住,实际用的时候去调一下a,b大小就可以了

坑2:like模糊匹配,简单点理解就是用一个字符串 表示一个系列的字符串。把%符号理解成一张万能牌。

坑3:case 语法无法理解。这个是真的不好理解。你可以把case 心里想成if,如果的意思。

作用就是把1堆数据按规则分类。

¥第8关,汇总各种奇奇怪怪的SQL符号

这一关复习一下,其实我发现SQL就是跟各种符号打交道,出错也大部分因为这些符号,所以做了一个整理汇总,尽量把这些符号搞清楚吧。

练习时间:0.5天

总结

SQL的语法,说多也不多,说少也不少,想要灵活运用,千万不能死记硬背。我还是忍不住把这个公式贴出来:

SELECT col,col,col 找什么? FROM table 从哪找? WHERE col 条件 条件是啥?

这个SQL法则告诉我们SELECT才是最重要的语法,INSERT ,UPDATE等变更数据平时不怎么用,你记它干啥,需要的时候翻书就可以找到。

第二点,写查询语句其实就是三板斧,先思考FROM这一段,再思考 WHERE这一段,最后再优化SELECT后面的。

要是你每一个SQL都能这么思考,我保证你可以学的贼快

说说一个改变我思维

你的SQL出过错吗?其实一开始我看到SQL出错是很烦的,谁不烦,谁不想一次性写对。 无数次教训加上大牛的指导,我才明白SQL不是一次性写出来,真的是一步步调出来的(很多次看着大牛调试我的SQL)。遇到出错了,可以简化一下,换一换条件,甚至一个字一个字比对,一点点的调试+分析,要真有这个耐心。

不知道你学习过程是不是也觉得SQL要一次性写出来,是的话真的可以换一个思维了。

最后,练习真的很重要

看100遍,不如练习1遍(谁练谁知道)。

附件(资料):

教程网站 xuesql.cn

电子书 《SQL必知必会》



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3