sqlzoo练习答案

这是关于在一个SQL学习网站的练习题答案记录:SQL教程

SQL基础

由一些简单的查询开始

这里的默认表格为WORLD表格 。

name continent area population gdp
Afghanistan Asia 652230 25500100 20343000000
Albania Europe 28748 2831741 12960000000
Algeria Africa 2381741 37100000 188681000000
Andorra Europe 468 78115 3712000000
Angola Africa 1246700 20609294 100990000000
....

name:国家名称 continent:大洲 area:面积 population:人口 gdp:国内生产总值


SQL对大小写不敏感。

  1. 以显示德国德国的人口。
SELECT population 
FROM world
WHERE name = 'Germany'
  1. 查询面积为5,000,000以上平方公里的国家,对每个国家显示她的名字和人均国内生产总值。gdp/population
SELECT name, gdp/population 
FROM world
WHERE area > 5000000
  1. 查询“Ireland 爱尔兰”,“Iceland 冰岛”,“Denmark 丹麦”的国家名称和人口。
SELECT name, population 
FROM world
WHERE name IN ('Ireland', 'Iceland', 'Denmark');--IN 操作符允许我们在 WHERE 子句中规定多个值
  1. 面积为200,000及250,000之间的国家名称和该国面积。
SELECT name, area 
FROM world
WHERE area 
BETWEEN 200000 AND 250000;
--操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

SELECT国家名字

name continent
Afghanistan Asia
Albania Europe
Algeria Africa
Andorra Europe
Angola Africa
....

name:国家名称 continent:大洲


SQL 通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。

在 SQL 中,可使用以下通配符:

通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist] 不在字符列中的任何单一字符

  1. 找出以Y为开首的国家
SELECT name 
FROM world
WHERE name LIKE 'Y%'
--LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
  1. 找出以Y为结尾的国家。
SELECT name 
FROM world
WHERE name LIKE '%Y'
  1. 找出包含字母x的所有国家。
SELECT name 
FROM world
WHERE name 
LIKE '%x%'
  1. 找出名字以land结尾的所有国家。
SELECT name 
FROM world
WHERE name 
LIKE '%land'
  1. 查找以C开头,ia结尾的所有国家。
SELECT name 
FROM world
WHERE name 
LIKE 'C%ia'
  1. 找出名字包含双oo的国家
SELECT name 
FROM world
WHERE name 
LIKE '%oo%'
  1. 找出名字包含三个或三个以上a的国家
SELECT name 
FROM world
WHERE name 
LIKE '%a%a%a%'
  1. 找出名字第二个字母为t的国家
SELECT name 
FROM world
WHERE name 
LIKE '_t%'
ORDER BY name
  1. 找出所有国家,其名字都有两个字母 o,被另外两个字母相隔着。
SELECT name 
FROM world
WHERE name 
LIKE '%o__o%'

10 . 找出名字是4个字母的国家。

SELECT name 
FROM world
WHERE name 
LIKE '____'
  1. 找出首都和国家名字相同的国家。
SELECT name
FROM world
WHERE name = capital; --可以加空格
  1. “Mexico 墨西哥”的首都是”Mexico City”。找出所有国家名字,其首都是国家名字加上”City”。
SELECT name
FROM world
WHERE capital = concat(name,' City');--注意City前面的空格
  1. 找出所有首都和其国家名字,而首都要有国家名字中出現。
SELECT capital,name
FROM world
WHERE capital 
LIKE concat('%',name,'%')
  1. 找出所有首都和其国家名字,而首都是国家名字的延伸。
    你愿显示 Mexico City,因它比其国家名字 Mexico 長。
    你不愿显示 Luxembourg,因它的首都和国家名相是相同的。
SELECT name,capital
FROM world
WHERE capital 
LIKE concat(name,'%')  --注意审题,国家名字的延伸,那么国家名字应该在最前面。
AND capital != name;--这里也可以用"<>"
  1. "Monaco-Ville"是合併國家名字 "Monaco" 和延伸詞"-Ville".

    顯示國家名字,及其延伸詞,如首都是國家名字的延伸。

    你可以使用SQL函數 REPLACE 或 MID。

    SELECT name,replace(capital, name, '') 
    FROM world 
    WHERE capital 
    LIKE concat(name,'%_')
    /*replace函数定义
    replace(original-string,search-string,replace-string)
    original-string: 被搜索的字符串。可为任意长度。
    search-string: 要搜索并被 replace-string 替换的字符串。该字符串的长度不应超过 255 个字节。如果 search-string 是空字符串,则按原样返回原始字符串。
    replace-string: 该字符串用于替换 search-string。可为任意长度。如果 replacement-string 是空字符串,则删除出现的所有 search-string。
    说明
    用字符串表达式3替换字符串表达式1中出现的所有字符串表达式2的匹配项。返回新的字符串。
    如果有某个参数为 NULL,此函数返回 NULL。
    */
    

SQLZOO练习题之SELECT from WORLD Tutorial/zh

查询世界


name continent area population gdp
Afghanistan Asia 652230 25500100 20343000000
Albania Europe 28748 2831741 12960000000
Algeria Africa 2381741 37100000 188681000000
Andorra Europe 468 78115 3712000000
Angola Africa 1246700 20609294 100990000000
...

name:国家名称 continent:大洲 area:面积 population:人口 gdp:国内生产总值

**表格说明 **


  1. *查询大于2亿人口的国家。
SELECT name 
FROM world
WHERE population>200000000;
  1. 查询大于2亿人口的国家,及国内生产总值
SELECT name,gdp/population
FROM world
WHERE population > 200000000;
  1. 查询在South America南美洲的国际爱和以百万为单位的人口數
SELECT name,population / 1000000
FROM world
WHERE continent = 'South America';--别忘记单引号,代表字符串
  1. 查询法国,德国,意大利(France, Germany, Italy)的国家名称和人口
SELECT name,population
FROM world
WHERE name in ('France', 'Germany', 'Italy')--别忘记单引号,代表字符串
  1. 查询包含单词“United”的国家
SELECT name
FROM world
WHERE name
LIKE '%United%';
  1. 查询大国(面积大于300万平方公里或者人口大于2.5亿)的名字,面积,人口
SELECT name,population,area
FROM world
WHERE area > 3000000 
OR population > 250000000;
  1. 美国,印度,中国(USA, India, China)是人口又大,同时面积又大的國家。排除这些国家。

    顯示以人口或面积为大国的國家,但不能同时面积大且人口多的国家名称,人口,面积。

SELECT name,population,area
FROM world
WHERE (area > 3000000 AND population < 250000000)
OR (area < 3000000 AND population > 250000000);
  1. 查询并显示南美洲国家以百万计人口和10亿计gdp(保留小数点2位)。
SELECT name,ROUND(population/1000000,2),ROUND(gdp/1000000000,2)
FROM world
WHERE continent = 'South America';
/*ROUND 函数用于把数值字段舍入为指定的小数位数。
SELECT ROUND(column_name,要保留的位数) FROM table_name*/

ROUND() 函数

  1. 查询万亿元国内生产总值国家的人均国内生产总值,四捨五入到最近的$ 1000。
SELECT name,ROUND(gdp/population,-3)
FROM world
WHERE gdp > 1000000000000;

继续使用round函数。因为留一位小数1,不留小数是0,-1就好比153不留3,直接四舍五入150,同样-2就是153,不留53,直接四舍五入200。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345