目录
学前须知
sqlzoo数据介绍
world
nobel
covid
ge
game、goal、eteam
teacher、dept
movie、casting、actor
基础语句
select&from
基础查询select单列&多列&所有列&别名应用
例题一
例题二
例题三
select使用distinct去重
例题四
例题五
select计算字段的使用
例题六
总结
where
运算符
例题七
例题八
例题九
编辑
例题十
迷糊查询like
例题十一
例题十二
例题十三
多条件查询
例题十四
例题十五
例题十六
总结
练习题
编辑1
2
3
4
order by
例题十七
总结
练习题
limit
例题十八
例题十九
总结
练习题
聚合函数&group by
单独使用聚合函数
例题二十
例题二十一
例题二十二
单独使用group by
例题二十三
聚合函数和group by 联合使用
例题二十四
例题二十五
总结
练习题
1
2
having
例题二十六
例题二十七
总结
练习题
常见函数
数学函数(round)
字符串函数(concat、replace、left、right、substring)
数据类型转换函数(cast)
日期时间函数
year、month、day
date_add、date_sub
datediff
date_format
条件判断函数(if、case when)
例题二十八
总结
练习题
1
2
学前须知



sqlzoo数据介绍

world





nobel




covid




ge




game、goal、eteam














teacher、dept





movie、casting、actor














基础语句

select&from



SELECT from WORLD Tutorial - SQLZoo
基础查询select单列&多列&所有列&别名应用
例题一


SELECT name, continent, population FROM world
例题二


SELECT * FROM world
例题三



SELECT name as 国家名,continent 大洲,population 人口 from world

as是可以不加的,一般直接用空格代替
select使用distinct去重

例题四



SELECT distinct continent from world
例题五




SELECT distinct name, continent from world


SELECT name,distinct continent from world
select计算字段的使用


例题六


SELECT name,gdp,population,gdp/population 人均gdp from world
总结

where



运算符


下面这种是空值

下面这种是null字符串

例题七


SELECT name,gdp/population 人均gdp from world where population >= 200000000
例题八



SELECT population from world where name = 'Germany'
例题九

SELECT name,population from world where name in ('Germany','Norway','Denmark')
例题十



SELECT name,area FROM world
WHERE area between 250000 and 300000
迷糊查询like



例题十一


SELECT name from world where name like 'C%ia'
例题十二


SELECT name from world where name like '_t%'
例题十三


SELECT name from world where name like '%o__o%'
多条件查询



例题十四


SELECT name,area from world where name like '%a%a%a%' and area >= 600000
例题十五


SELECT name,area from world
where name like '%a%a%a%'
and area >= 600000
or population > 1300000000
and area >= 5000000
这里没有按顺序去执行是因为,and的优先级大于or

SELECT name,area from world
where (name like '%a%a%a%'
and area >= 600000)
or (population > 1300000000
and area >= 5000000)
例题十六


SELECT name,population from world
where name = 'Germany' or name = 'Norway'or name = 'Denmark'

SELECT name,area FROM world
WHERE area >= 250000 and area <= 300000
总结


练习题
1
SELECT from Nobel Tutorial - SQLZoo

select name,population/1000000 population_in_millions from world
where continent = 'South America'
2
SELECT from Nobel Tutorial - SQLZoo


select * from nobel
where yr = 1980 and subject not in ('Chemistry','Medicine')
3


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 '% %'
4


select * from nobel
where (subject = 'Medicine' and yr < 1910)
or (subject = 'Literature' and yr >= 2004)
order by

例题十七

SELECT from Nobel Tutorial - SQLZoo




select winner,yr,subject from nobel
where winner like 'Sir%'
order by yr desc,winner asc

总结

练习题


SELECT winner, subject FROM nobel
WHERE yr=1984
ORDER BY subject IN ('physics','chemistry'),subject,winner

limit


例题十八


SELECT name FROM world order by area desc limit 3
例题十九



SELECT name FROM world order by population desc limit 3,4
总结

练习题


select * from nobel limit 99,21
聚合函数&group by



单独使用聚合函数
例题二十




SELECT SUM(population) 人口总数 FROM world
where continent='Africa'

SELECT Max(population) 最大人口 FROM world
where continent='Africa'

SELECT Avg(population) 平均人口 FROM world
where continent='Africa'

SELECT Min(population) 最小人口 FROM world
where continent='Africa'
例题二十一


SELECT count(*) FROM world
例题二十二



SELECT count(name),count(continent),
count(area),count(population),
count(gdp),count(*) FROM world




例如下面加一个name就会报错

单独使用group by

例题二十三


SELECT continent FROM world
group by continent
聚合函数和group by 联合使用
例题二十四





例题二十五




select yr,subject,count(winner) 获奖人数 from nobel
where yr between 2013 and 2015
group by yr,subject
order by yr desc,count(winner) asc
总结


练习题
1

2

having

having是基于聚合运算的结果进行筛选的(是在数据透视表创建之后进行筛选的,已经进行聚合运算了,再进行的筛选)
where是聚合前进行筛选的(是在数据透视表创建之前进行筛选的)
例题二十六


例题二十七






select continent,avg(gdp) from world
where (gdp > 20000000000 and population > 60000000)
or (gdp < 8000000000 and capital like '%a%a%a%')
group by continent
having sum(population) >= 300000000
order by count(name) desc
limit 1
总结

练习题

SELECT continent,population FROM world
where gdp between 20000000000 and 30000000000
group by continent
having sum(gdp)/sum(population) > 3000
常见函数


数学函数(round)

字符串函数(concat、replace、left、right、substring)

数据类型转换函数(cast)

日期时间函数

year、month、day

date_add、date_sub


datediff

date_format



条件判断函数(if、case when)

例题二十八






总结

练习题
1

2

