SQL的语法最基本的结构为3部分:
- select 查询结果 (最后运行)
- from 从哪张表中查找数据
- where 查询条件
曾经我以为会写select * from XX表就可以了,做练习的时候才发现图样图森破。其实sql原理不难,但看到场景能够迅速反应过来用哪个关键词,怎样写能使执行效率更高,其实是需要不断练习和总结的。在练习的过程中往往还会发现一些剑走偏锋、让人称奇的思路,就是一种感觉吧,同样是简单的单词,我的在唱儿歌,人家却开始写诗了。
这里就对基本的知识点列举一些相应练习,就当巩固啦~
习题1:

1、获取法国的人口数(考察where)
sql语句:
SELECT population
FROM world
WHERE name = 'France'
2、获取国土面积>5000000平方公里的国家名称,国家的人口密度(考察基本运算,人口/面积;考察别名化)
sql语句:
SELECT name, population/area as density
FROM world
WHERE area > 5000000
3、获取“Luxembourg ”,“Mauritius ”和“Samoa ”的国家名称和人口(考察in的用法)
sql语句:
SELECT name, population
FROM world
WHERE name IN ('Luxembourg', 'Mauritius', 'Samoa')
4、获取国土面积在250,000 到300,000 之间的国家名称和面积(考察between……and……的用法)
sql语句:
SELECT name, area
FROM world
WHERE area BETWEEN 250000 AND 300000
习题2:

1、找出获奖者名字是'John'的人(考察模糊查询 %)
sql语句:
SELECT winner
FROM nobel
WHERE winner like 'John%'
2、找出1980年获物理奖项和1984年获化学奖项的,返回获奖时间、领域和获奖者名字(考察and,or的用法以及括号对运算顺序的干扰)
sql语句:
SELECT yr, subject, winner
FROM nobel
WHERE (subject = 'Physics' AND yr = '1980') OR (subject = 'Chemistry' AND yr = '1984')
3、找出1980年的获奖者时间、领域、名字,去除获化学或医药奖项(考察not in)
sql语句:
SELECT yr, subject, winner
FROM nobel
WHERE yr = 1980 AND subject NOT IN ('Chemistry','Medicine')
知识点总结
- 书写规则
- 中文需使用单引号来给'别名'重命名
- 查询时列名中不能有空格,不可以空行
- 运行顺序
- 先运行其他子句,按书写顺序,最后运行select子句
- 注释
- 单行注释:-- 注释啦
- 多行注释:/注释啦……省略一万字*/
- 运算符
- 计算的数据中含有空值结果也为空值
- 日期需要打引号
- 模糊查询
- like+%
- Like '王__' : 1个下划线表示任意1个字符
刷题网站
1、sqlzoo:
SQLZOOsqlzoo.net从最基本的sql语法开始讲解,讲解的同时就有操作练习,但语言上只有繁体中文,略觉得眼睛疼,看个人使用习惯
2、Leecode:
力扣leetcode-cn.com我之前刷题的网站,功能就是刷题,各种类型的题,根据难易程度有相应分级,比起sqlzoo更像一个社区,有题解和讨论,每道题除了官方解法以外,还有很多民间解法,可以多看看多对比,不得不感叹高手在民间。缺点是除了少部分题目以外,需要收费,不过一个月会员也够刷完题啦~
3、datacamp:
https://learn.datacamp.comlearn.datacamp.com我后悔没有早些发现的宝藏网站,里面有关数据分析的技能树几乎都有涉及,是一个日常练习技能的网站。采用的是短视频讲解知识点+练习题,练习有内置的代码环境,从excel到python都可以得到及时反馈,还挺容易有动力去学的。缺点是部分内容讲解较浅(excel),且更偏向技能讲解,缺少和实际项目或者业务的结合