又和小海豚见面了,虽然是通过navicat见的。对sql查询最大的感受就是简单有序:语句简洁,一个where,一个select就直奔主题;有序,按照顺序进行,读取顺序和书写顺序并不相同。第一步,先读from:找到表,即找到组织;第二步读where,看看查询条件是啥,这任务逻辑是否清楚?第三步,读select,看看是去哪列完成任务?
1. sql简单查询语句
主要语句如下图。
2.练习错误汇总
练习sqlzoo的select basics及quiz部分,无差错。 SELECT from WORLD Tutorial和quiz部分,错题总结如下。
SELECT from WORLD Tutorial部分:
3. Give the
name
and the
per capita GDPfor those countries with a
population
of at least 200 million.
这一题做错了:
第一次,我写了所有用到计算的列,并且新的列名per capita GDP没有加单引号。系统报错,
第二次,新列名加了单引号,‘per capita GDP’,但我以为所有用到计算的列都需要select,系统报错。
第三次,删除了多余列,只写name和新建的列名,终于正确。结果如下图。
5.显示France, Germany, Italy的name和population
第一次,我写错了,如下。and是三个条件都具有,显然没有这样的name,所以只返回name和population列名,无结果。
第二次,我修改了where语句,意识到用in即可展示三个国家的情况,运行成功。
6.显示含有United的国家名称
使用like 'United%'即可,因为常识告诉我,国家名称United只会在前面,所以用'United%'而和'%United%'都可以,但'%United'不对,因为国家名称没有United位置在后的。正确结果如下。
7.找到大国家:人口大于250w或者面积大于300w平方公里
使用where 条件1 or 条件2,满足一个条件即可。答案如下。
8.找到7中的大国家,但不包括2个条件都满足的
学到了新的条件判断:xor。where 条件1 or 条件2,包括三种结果:满足任一条件,以及2个条件都满足。xor:仅满足任一条件。语句及结果如下。
9.使用百万和十亿表示人口和gdp在南美的国家,并精确到小数点后两位。
学到了round函数:round(f,p),表达f后面的p个小数位。从错误中学到的注意事项:
- round直接写在select后面,不需要再写列名,列名会按照f显示
- round之间用逗号
- round结束后不要写逗号,继续换行写from
错误展示:round结束后写了逗号
正确代码:
10.round函数应用:显示人均gdp,以1000为单位,且gdp至少为1万亿的国家。
错误注意:
- round语句里面除/1000,然后在round结束后(此时变为除1000后的整数)*1000,此时结果才会以1000为单位。
- 有条件,gdp>=1万亿。
正确语句:
11.length()函数:找到国家名和首都名的字符长度相同的国家。正确语句如下。
12.left(f,n)函数:取f中左边起n个字符,可作为比较。找到国家和首都第一个字母相同的,显示国家和首都,排除国家名和首都完全一样的。
13. like ‘%字符’的多条件应用:找到同时含有aeoiu字母的国家名称,且不能含有两个单词。
quiz部分:题目解析,sql语句读取顺序:
第一步,读取from语句,从world表中查询
第二步,读取where语句,查询条件是population小于10000
第三步,读取select语句,选择name和population列,其中population列除以10显示。