sql语法练习 (持续更新)

了解

select中子句的顺序:

select、from、where、group by、having、order by、limit

网址:

SELECT basics - SQLZoo

表名word

namecontinentareapopulationgdp
AfghanistanAsia6522302550010020343000000
AlbaniaEurope28748283174112960000000
AlgeriaAfrica238174137100000188681000000
AndorraEurope468781153712000000
AngolaAfrica124670020609294100990000000
....

基础练习 

基础查询

1、阅读关于这张表的注释。观察运行此SQL命令的结果,以显示所有国家的名称、大陆和人口

select 
name AS '国家',
continent AS '大陆',
population AS '人口' 
from world

2、如何使用WHERE筛选记录。显示人口至少为2亿的国家的名称。2亿等于2亿,有8个零

SELECT 
name AS '国家' 
FROM world
WHERE 
population >= 200000000

计算

1、请给出人口至少为2亿的国家的名称和人均GDP。

帮助:如何计算人均GDP

人均GDP是GDP除以人口GDP/人口

select name, 
gdp/population AS GDP
from world 
where population >= 200000000

2、显示“南美洲”大陆国家的名称和人口(以百万计)。将人口除以1000000,得到以百万为单位的人口。

select 
name,
population/1000000 
from world 
where continent ='South America'

关键词查询

1、显示法国、德国、意大利的名称和人口

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

2、显示名称中包含单词“United”的国家

select 
name 
from world 
where name like '%United%' 

3、做大有两种方式:一个国家的面积超过300万平方公里,或者人口超过2.5亿,那么它就是大国家。

显示按面积或按人口划分的大国。显示名称、人口和面积。

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

4、显示面积大(超过300万)或人口大(超过2.5亿)的国家,但不能同时显示这两个国家。显示名称、人口和面积。

例:澳大利亚面积大,但人口少,应该包括在内。

印尼人口众多,但面积很小,应该包括在内。

中国人口多,面积大,应该把它排除在外。

联合王国人口少,面积小,应该将其排除在外

select 
name,
population,
area 
from world 
where 
(area<=3000000 and population>250000000) or 
(area>3000000 and population<=250000000)

函数

1、显示“南美洲”大陆国家的名称和人口(以百万计)以及GDP(以十亿计)。使用ROUND函数将值显示为小数点后两位。

对于美洲,以百万计的人口和以十亿计的GDP都显示在小数点后2位。显示数百万和数十亿

SELECT 
name ,
round(population/1000000,2) AS '人口',
round(gdp/1000000000,2) AS 'GDP'
FROM world
WHERE continent = 'South America';

2、显示GDP至少为1万亿(1000000000000;即12个零)的国家的名称和人均GDP。将此值四舍五入到最接近的1000。 显示万亿美元国家的人均GDP,精确到1000美元。

SELECT 
name, 
round(gdp/(population*1000),0)*1000 as 'per-capita GDP'
FROM world
WHERE gdp >= 1000000000000;

3、希腊的首都是雅典。字符串“Greece”和“Athens”中的每一个都有6个字符

显示国家和首都字符数相同的数据。显示出“国家”、“首都”两个字段

可以使用LENGTH函数来查找字符串中的字符数

select 
name AS '国家',
capital  AS '首都'
from world 
where LENGTH(name)=LENGTH(capital)

4、瑞典的首都是斯德哥尔摩。这两个单词都以字母“S”开头。

显示国家、首都第一个大写字母一样的数据,不要包括名称和首都是同一个单词的国家。 显示字段“国家”“首都”。 可以使用函数LEFT来隔离第一个字符。

使用<>作为NOT EQUALS运算符。

SELECT 
name, 
capital
FROM world
where 
LEFT(name,1)=LEFT(capital,1) and name<>capital

5、赤道几内亚和多米尼加共和国的名字都有元音(a e i o u)。

查找名称中包含所有元音且没有空格的国家。

您可以使用短语名称NOT LIKE“%a%”从结果中排除字符。

SELECT name
FROM world
WHERE name LIKE '%a%'
AND name LIKE '%e%'
AND name LIKE '%i%'
AND name LIKE '%o%'
AND name LIKE '%u%'
AND name NOT LIKE '% %'

嵌套查询

嵌套查询的方式先处理内查询,在处理外层查询。先利用内部查询的结果。

子查询的规则:

  • 子查询的select查询总是使用括号括起来。
  • 子查询最多可以嵌套32层。个别查询可能不会支持32层。
  • 任何可以使用表达式的地方都可以使用子查询,但是只要让它返回的是单个字段
  • 如果某个表只出现在子查询中不出现在外部查询中,那么该表的列就无法包含在输出中。

1、列出人口多于“俄罗斯”的每个国家名称。

--优先查询出俄罗斯的人口
--把俄罗斯人数作为查询条件,记得打括号
select name 
from world 
where population >
(select population from world where name='Russia')

2、显示人均GDP高于“英国”的欧洲国家。

--查询出英国的人均gdp
--作为查询条件嵌套
select name 
from world 
where  gdp/population > 
(select gdp/population AS GDP from world where name='United Kingdom' )
and continent ='Europe'

3、列出包含阿根廷或澳大利亚的大陆中,国家的名称和大陆。按国家名称排序。

--优先查询出阿根廷与澳大利亚所属大陆
--再次查询出这两个大陆中的国家,进行排序
select name,continent
 from world 
where continent in(select continent 
                    from world 
                    where name in('Argentina ','Australia')
                    ) order by name asc

4、哪个国家的人口比英国多但比德国少?显示姓名和人口。

select name,population 
from world 
where (select population from world where name ='Germany')> population 
and  
population>(select population from world where name ='United Kingdom')

5、德国(人口8000万)是欧洲人口最多的国家。奥地利(人口850万)占德国人口的11%。 显示欧洲每个国家的名称和人口。显示人口占德国人口的百分比。

--优先查询德国人口*100
--ROUND函数计算每个国家的人口/德国人口,得出每个国家的人口占德国人口的比例
--CONCAT函数拼接%
SELECT name,
   CONCAT(
      ROUND(population/
          (SELECT population FROM world WHERE name= 'Germany')*100,0),'%')
FROM world 
WHERE continent='Europe'

总数和计数

1、SUM总数

显示世界总人口。

SELECT SUM(population)
FROM world

显示非洲的GDP总量

select sum(gdp) 
from world 
where continent='Africa'

'Estonia', 'Latvia', 'Lithuania'三个国家的总人口

select sum(population) 
from world 
where name in('Estonia', 'Latvia', 'Lithuania') 

2、DISTINCT去重

显示所有大陆名称

select DISTINCT continent  from world

3、COUNT计数

显示有多少国家的面积至少为1000000

select count(*) 
from world 
where area >=1000000

4、GROUP BY

显示每个大陆和国家数量

select continent,COUNT(name) 
from world 
group by continent

显示每个大陆人口至少为1000万的国家数量。

select continent ,COUNT(name) 
from world 
where population >=10000000
GROUP BY continent ;

列出总人口至少为1亿的大陆

select continent 
from world 
group by continent 
having sum(population) >=100000000 

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值