一、SQL zoo

SQL zoo链接地址: http://zh.sqlzoo.net/wiki/SELECT_basics/zh

SQL zoo答案链接地址:https://blog.csdn.net/q370835062/article/details/83025363

1. select basics:

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

1.1 显示德国Germany的人口:

select population  from world where name = 'germany';

1.2 查询面积为5000000以上平方公里的国家,对每个国家显示她的名字和人均国内生产总值:

select name, gdp/population from world where area>5000000;

1.3  显示“Ireland 爱尔兰”,“Iceland 冰岛”,“Denmark 丹麦”的国家名称和人口:

select name ,population from world where name in ('ireland', 'iceland', 'denmark');

1.4 显示面积为 200,000 及 250,000 之间的国家名称及国家面积:

select name, area from world where area>200000 and area<250000;

select names/zh

1.1 找出以Y为开头的国家

select name from world where name like 'Y%';

1.2 找出以Y为结尾的国家

select name from world where name like '%Y';

1.3 找出所有国家,其名字包括字母x:

select name from world where name like '%x%';

1.4 找出所有国家,其名字以land 作结尾:

select name from world where name like '%land';

1.5 找出所有国家,其名字以C作为开始,ia作结尾:

select name from world where name like 'c%ia';

select name from world where name rlike '^c.*ia$';

1.6 找出所有国家,其名字包括字母oo:

select name from world where name like '%oo%';

1.7 找出所有国家,其名字包括三个或以上的a:

select name from world where name like '%a%a%a%';

1.8 找出所有国家,其名字以t作为第二个字母:

select  name from world where name like '_t%';

1.9 找出所有国家,其名字都有两个字母o,被另外两个字母相隔着

select name from world where name like '%o__o%';

2.0 找出所有国家,其名字都是4个字母的:

select name from world where name like '____';

2.1 显示所有国家名字,其首都和国家名字都是相同的:

select name from world where name = capital;

2.2 显示所有国家的名字,其首都都是国家名字加上‘city'

select name from world where capital  =  concat(name, ' city');  # city前有空格

2.3 找出所有首都和其国家名字,而首都要有国家名字中出现:

select capital, name from world where capital like concat ('%', name ,'%');

2.4  找出所有首都和其国家名字,而首都是国家名字的延伸。
你应显示 Mexico City,因它比其国家名字 Mexico 长。
你不应该显示 Luxembourg,因它的首都和国家名是相同的。

SELECT name, capital
FROM world
WHERE capital LIKE concat(name, '%') AND (capital != name);

2.5 

"Monaco-Ville"是合併國家名字 "Monaco" 和延伸詞"-Ville".

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

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

SELECT name, REPLACE(capital, name, '') as ext
  FROM world
 WHERE capital LIKE concat(name, '%') AND (capital != name);

 

2. select from world:

2.1 观察运行一行简单的SQL命令的结果

select name, continent, population from world;

2.2 显示具有至少2亿人口的国家名称:

select name from world where population >=200000000; 

2.3 找出至少有200百万人口的国家名称及人均国内生产总值:

select name , gdp/population from world where population>200000000;

2.4 显示’South America' 南美洲大陆国家的名字和以百万为单位人口数。将人口population 除以一百万(1000000)可得到以百万为单位的人口数。

select name, population/1000000 from world where continent in ('South America');

2.5 显示法国、德国、意大利的国家名称和人口:

select name,population from world where name in ('France', 'Germany','Italy');

2.6 显示包含单词‘united'为名称的国家

select name from world where name like '%united%';

2.7 展示大国名称,人口和面积(3百万平方公里以上或2.5亿以上人口为大国)

select name,population,area from world where population >250000000 or area>3000000;

2.8 显示以人口或面积为大国的国家,但不两者不能同时并存。

SELECT name, population, area FROM world
WHERE (area > 3000000 AND population < 250000000) OR(area < 3000000 AND population > 250000000);

2.9 

除以為1000000(6個零)是以百萬計。除以1000000000(9個零)是以十億計。使用 ROUND 函數來顯示的數值到小數點後兩位。

對於南美顯示以百萬計人口,以十億計2位小數GDP。
 

3. select from nobel:

4. select in select:

5. sum and count:

6. join:

7. more join:

8. using null:

9. self join: