SQLZOO的练习(1-3)

网址是:sqlzoo.net。做了前三章,简单的题还是遇坑了,记录总结一下。

  1. SELECT basics 略
    2. SELECT IN SELECT
    a. ROUND函数
    SQLZOO的练习(1-3)_第1张图片

    ROUND函数有2个参数:ROUND(你需要修改的数字,保留的小数点位数)
    默认是不显示小数点,正数是保留的小数点的位数,负数是向左进行保留

ROUND (10/3,2) = 3.33
ROUND (10/3) = 3
ROUND (12345,-2) = 12300

b. 同时选择
只选一个可以用“|”来分隔,但同时选择就要每个条件写一个语句了,再用and连在一起。

SELECT name FROM world
WHERE name like '%a%' 
AND name like '%e%'
AND name NOT LIKE '% %'

3. SELECT from Nobel
a. 输入单引号,可以用两个单引号'',也可以用反斜杠。

SELECT * FROM nobel WHERE winner='EUGENE O\'NEILL'
SELECT * FROM nobel WHERE winner='EUGENE O''NEILL'

b. 排序


SQLZOO的练习(1-3)_第2张图片
a.png

这两道题都讲到了排序,sql中默认是升序,所以asc不用写,降序desc要写。
另外一个是用IF和IN来排序特定分类。单个条件用IF,范围用IN
例:将snake放在前面

if (species='snake',1,0),DESC,species;

这句话的意思是,对species进行排序的同时,附加一个隐藏属性,可以是1或者0。
因此,在对species排序的时候,优先级是判断species是否为snake,如果是,返回1,如果不是,返回0。
如果想把snake的这一行放在查询结果尾部,那就是

SELECT * FROM pet ORDER BY if(species='snake',1,0) species;

第一步是查询species的隐藏属性,因为species=snake的返回值是1,所以进行升序排列时,就被排在了最后

上面是满足单个条件,如果需要用到一个范围,则可以使用IN语句,就是上面例图这样。

你可能感兴趣的:(SQLZOO的练习(1-3))