SQL学习-sqlzoo练习题记录(1)

0-SELECT 基础
1)SELECT population FROM world WHERE name='Germany'
2)SELECT name, gdp/population FROM world WHERE area > 5000000
3)SELECT name, population FROM world WHERE name IN ('Ireland', 'Iceland', 'Denmark')
注意点IN的用法,检查是否在列表中
4)SELECT name, area FROM world WHERE area BETWEEN 200000 AND 250000
注意点BETWEEN…AND… 包括首尾

1-SELECT name
1)SELECT name FROM world WHERE name LIKE 'Y%'
2)SELECT name FROM world WHERE name LIKE '%Y'
3)SELECT name FROM world WHERE name LIKE '%x%'
4)SELECT name FROM world WHERE name LIKE '%land'
5)SELECT name FROM world WHERE name LIKE 'C%ia'
6)SELECT name FROM world WHERE name LIKE '%oo%'
7)SELECT name FROM world WHERE name LIKE '%a%a%a%'
注意点% 替代0个多个字符,注意第3题和第7题
常用通配符[],[^](任何单一字符)
8)SELECT name FROM world WHERE name LIKE '_t%' ORDER BY name
9)SELECT name FROM world WHERE name LIKE '%o__o%'
10)SELECT name FROM world WHERE name LIKE '____'
注意点_ 替代1个字符
11)SELECT name FROM world WHERE capital=name
错误点:是’=’,非’==’
12)SELECT name FROM world WHERE capital=concat(name,' City')
注意点concat(,) ,连接作用,注意str需要加上”
13)SELECT capital,name FROM world WHERE capital like concat('%',name,'%')
错误点:通配符没有加上’ ’
14)SELECT name,capital FROM world WHERE capital like concat(name,'_%')
15)SELECT name,replace(capital,name,'') FROM world WHERE capital LIKE concat(name,'%_')
错误点:读题仔细,concat在这里记得与LIKE搭配
注意点REPLACE(家庭,原配,小三);MID(字段,开始位置[长度])
问题:MID()如何解决

2-SELECT FROM world
1)SELECT name, continent, population FROM world
2)SELECT name FROM world WHERE population>200000000
3)SELECT name,gdp/population FROM world WHERE population>=200000000
4)SELECT name,population/1000000 FROM world WHERE continent='South America'
5)SELECT name,population FROM world WHERE name IN ('France','Germany','Italy')
6)SELECT name FROM world WHERE name like '%United%'
7)SELECT name,population,area FROM world WHERE area>3000000 OR population>250000000
8)SELECT name,population,area FROM world WHERE (area>3000000 OR population>250000000) and (name not IN ('United States','India','China') )
注意点:多个条件用()表示
9)SELECT name,ROUND(population/1000000,2),ROUND(gdp/1000000000,2) FROM world WHERE continent='South America'
10)SELECT name,ROUND(gdp/population,-3) FROM world WHERE gdp>1000000000000
注意点ROUND(,返回小数位数|可为负数)
正数是保留的小数点的位数
负数是向左进行保留,默认0
11)

SELECT name, 
CASE WHEN continent='Oceania' THEN 'Australasia' 
ELSE continent END
FROM world WHERE name LIKE 'N%'

12)

SELECT name,
CASE WHEN continent IN('Europe','Asia')
     THEN 'Eurasia'
     WHEN continent IN('North America','South America','Caribbean')
     THEN 'America'
     ELSE continent END
FROM world
WHERE name LIKE 'A%' OR name LIKE 'B%'

13)

SELECT name,continent,
CASE WHEN continent IN ('Eurasia', 'Turkey')
     THEN 'Europe/Asia'
     WHEN continent = 'Oceania' 
     THEN 'Australasia'
     WHEN continent = 'Caribbean'
          THEN
          CASE 
          WHEN name LIKE 'B%' 
          THEN 'North America'
          ELSE 'South America'
          END
     ELSE continent 
     END
FROM world
ORDER BY name ASC

注意点
简单Case函数:

CASE XXX 
WHEN 条件1 THEN True返回值
WHEN 条件2 THEN True返回值
……   
ELSE 其他条件 END
WHERE

Case搜索函数

CASE  
WHEN XXX+条件1 THEN True返回值
WHEN XXX+条件2 THEN True返回值
……   
ELSE 其他条件 END
WHERE

用于计算条件列表的表达式,并返回可能的结果之一
case后加表达式——根据表达式结果返回
case 后不加表达式——根据When条件返回
Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值