一、基本查询
掌握MySQL的简单查询,整理了猴子老师live的部分内容,原内容链接:从零学会SQL:简单查询www.zhihu.com
1、书写规则英文符号需特别注意
2、注释(单行、多行不同)
3、运行顺序select开头始终不变
4、基本运算符日常使用,少用not
5、其他(模糊查询like)
二、练习
1、SELECT basics
(1)查询德國 Germany 的人口。
SELECT population
FROM world
WHERE name = 'Germany';
(2)查詢面積為 5,000,000 以上平方公里的國家,對每個國家顯示她的名字和人均國內生產總值(gdp/population)。
SELECT name, gdp/population
FROM world
WHERE area > 5000000;
(3)顯示“Ireland 愛爾蘭”,“Iceland 冰島”,“Denmark 丹麥”的國家名稱和人口。
SELECT name, population
FROM world
WHERE name IN ('Ireland', 'Iceland', 'Denmark');
(4)顯示面積為 200,000 及 250,000 之間的國家名稱和該國面積。
SELECT name, area
FROM world
WHERE area BETWEEN 200000 AND 250000;
2、SELECT from WORLD
(1)顯示具有至少2億人口的國家名稱。 2億是200000000,有八個零。
SELECT name
FROM world
WHERE population>=200000000;
(2)找出有至少200百萬(2億)人口的國家名稱,及人均國內生產總值。
select name,gdp/population
from world
where population>=200000000;
(3)顯示'South America'南美洲大陸的國家名字和以百萬為單位人口數。
select name,population/1000000
from world
where continent='South America';
(4)顯示法國,德國,意大利(France, Germany, Italy)的國家名稱和人口。
select name,population
from world
where name in ('France','Germany','italy');
(5)顯示包含單詞“United”為名稱的國家。
select name
from world
where name like '%United%';
(6)展示大國的名稱,人口和面積。
select name,population,area
from world
where area>3000000
or population>250000000;
(7)顯示以人口或面積為大國的國家,但不能同時兩者。顯示國家名稱,人口和面積。
select name,population,area
from world
where (area>3000000 and population<=250000000)
or (area<=3000000 and population>250000000);
(8)對於南美顯示以百萬計人口,以十億計2位小數GDP。
select name,round(population/1000000,2),round(gdp/1000000000,2)
from world
where continent='South America';
(9)顯示萬億元國家的人均國內生產總值,四捨五入到最近的$ 1000。
select name,round(gdp/population,-3)
from world
where gdp>1000000000000;
(10)Show the name - but substitute Australasiafor Oceania- for countries beginning with N.
SELECT name,
CASE WHEN continent='Oceania' THEN 'Australasia'
ELSE continent END
FROM world
WHERE name LIKE 'N%';
(11)Show the name and the continent - but substituteEurasiafor Europe and Asia; substituteAmerica- for each country inNorth AmericaorSouth AmericaorCaribbean. Show countries beginning with A or B.
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%';
3、SELECT names(模糊查询)
(1)找出以 Y 為開首的國家。
SELECT name
FROM world
WHERE name LIKE 'y%';
(2)找出以 Y 為結尾的國家。
SELECT name
FROM world
WHERE name LIKE '%y';
(3)找出所有國家,其名字包括字母x。
SELECT name
FROM world
WHERE name LIKE '%x%';
(4)找出所有國家,其名字以 land 作結尾。
SELECT name
FROM world
WHERE name LIKE '%land';
(5)找出所有國家,其名字以 C 作開始,ia 作結尾。
SELECT name
FROM world
WHERE name LIKE 'C%o%ia';
(6)找出所有國家,其名字包括字母oo。
SELECT name
FROM world
WHERE name LIKE '%oo%';
(7)找出所有國家,其名字包括三個或以上的a。
SELECT name
FROM world
WHERE name LIKE '%a%a%a%';
(8)找出所有國家,其名字以t作第二個字母。
SELECT name
FROM world
WHERE name LIKE '_t%'
ORDER BY name;
(9)找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔着。
SELECT name
FROM world
WHERE name LIKE '%o__o%';
(10)找出所有國家,其名字都是 4 個字母的。
SELECT name
FROM world
WHERE name LIKE '____';
(11)顯示所有國家名字,其首都和國家名字是相同的。
SELECT name
FROM world
WHERE name = capital;
(12)顯示所有國家名字,其首都是國家名字加上”City”。
SELECT name
FROM world
WHERE capital = concat(name,' City');
(13)找出所有首都和其國家名字,而首都要有國家名字中出現。
select capital,name
from world
where capital like concat('%',name,'%');
(14)找出所有首都和其國家名字,而首都是國家名字的延伸。
你應顯示 Mexico City,因它比其國家名字 Mexico 長。
你不應顯示 Luxembourg,因它的首都和國家名相是相同的。
select name,capital
from world
where capital like concat('%',name,'%')
and NOT capital = name;
(15)顯示國家名字,及其延伸詞,如首都是國家名字的延伸。
select name,REPLACE(capital,name,'')
from world
where capital like concat('%',name,'%')
and NOT capital = name;