SQL zoo(zh)习题记录Ⅰ

SELECT basics/zh

這個教程介紹SQL語言。我們會使用SELECT語句。我們會使用WORLD表格

name continent area population gdp

Afghanistan Asia 652230 25500100 20343000000

Albania Europe 28748 2831741 12960000000

...

name:國家名稱

continent:洲份

area:面積

population:人口

gdp:國內生產總值

1.修改此例子,以顯示德國 Germany 的人口。

這個例子顯示'France法國'的人口。字串應該在'單引號'中。

SELECT population FROM world WHERE name = 'Germany'

Per Capita GDP

2.查詢顯示面積為 5,000,000 以上平方公里的國家,該國家的人口密度(population/area)。人口密度並不是 WORLD 表格中的欄,但我們可用公式(population/area)計算出來。

修改此例子,查詢面積為 5,000,000 以上平方公里的國家,對每個國家顯示她的名字和人均國內生產總值(gdp/population)。

SELECT name, gdp/population FROM world WHERE area > 5000000

Scandinavia

3.檢查列表:單詞"IN"可以讓我們檢查一個項目是否在列表中。此示例顯示了"Luxembourg 盧森堡","Mauritius 毛里求斯"和"Samoa 薩摩亞"的國家名稱和人口。

顯示"Ireland 愛爾蘭","Iceland 冰島","Denmark 丹麥"的國家名稱和人口。

SELECT name, population FROM world WHERE name IN ('Ireland', 'Iceland', 'Denmark');

Just the right size

4.哪些國家是不是太小,又不是太大?

BETWEEN 允許範圍檢查 - 注意,這是包含性的。 此例子顯示面積為 250,000 及 300,000 之間的國家名稱和該國面積。

修改此例子,以顯示面積為 200,000 及 250,000 之間的國家名稱和該國面積。

SELECT name, area FROM world WHERE area BETWEEN 200000 AND 250000

SELECT names/zh

name continent

Afghanistan Asia

Albania Europe

...

name:國家名稱

continent:洲份

Pattern Matching Strings

此教程使用LIKE運算子來檢查國家名字,我們會在world表格中運用SELECT語句:

1.找出以 Y 為開首的國家。

你可以用WHERE name LIKE 'B%'來找出以 B 為開首的國家。%是萬用字元,可以用代表任何字完。

SELECT name FROM world WHERE name LIKE 'Y%'

2.找出以 Y 為結尾的國家。

SELECT name FROM world WHERE name LIKE '%Y'

3.找出所有國家,其名字包括字母x。

"Luxembourg 盧森堡"中有一個x字母,還有一個國家的名字中有x。列出這兩個國家。

SELECT name FROM world WHERE name LIKE '%x%'

4.找出所有國家,其名字以 land 作結尾。

"Iceland 冰島"和"Switzerland 瑞士"的名字都是以"land"作結束的。還有其他嗎?

SELECT name FROM world WHERE name LIKE '%land'

5.找出所有國家,其名字以 C 作開始,ia 作結尾。

"Columbia 哥倫比亞"是以 C 作開始,ia 作結尾的。還有兩個國家相同。

SELECT name FROM world WHERE name LIKE 'C%ia'

6.找出所有國家,其名字包括字母oo。

"Greece 希臘"中有雙 e 字。哪個國家有雙 o 字呢?

SELECT name FROM world WHERE name LIKE '%oo%'

7.找出所有國家,其名字包括三個或以上的a。

"Bahamas 巴哈馬"中有三個 a,還有嗎?

SELECT name FROM world WHERE name LIKE '%a%a%a%'

8.找出所有國家,其名字以t作第二個字母。

SELECT name FROM world WHERE name LIKE '_t%'

ORDER BY name

"India 印度"和"Angola 安哥拉"的第二個字母都是 n。

你可以用底線符_當作單一個字母的萬用字元。

SELECT name FROM world WHERE name LIKE '_n%'

ORDER BY name

9.找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔着。

"Lesotho 賴索托"和"Moldova 摩爾多瓦"都有兩個字母 o,被另外兩個字母相隔着。

SELECT name FROM world WHERE name LIKE '%o__o%'

10.找出所有國家,其名字都是 4 個字母的。

"Cuba古巴"和"Togo 多哥"都是 4 個字母。

SELECT name FROM world WHERE name LIKE '____'

更困難的問題

如你覺得以上題目太容易了,非常好。Well done for getting this far. 下面的題目更困難,更有挑戰性!

11.顯示所有國家名字,其首都和國家名字是相同的。

"Luxembourg 盧森堡"的首都 capital 都同樣叫"Luxembourg"。

SELECT name FROM world WHERE name =capital

12.顯示所有國家名字,其首都是國家名字加上"City"。

"Mexico 墨西哥"的首都是"Mexico City"。concat函數

SELECT name FROM world where capital like 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 capital!= name

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

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

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

SELECT name,replace(capital, name, '') FROM world

WHERE capital LIKE concat(name,'_%')

相关推荐
IvorySQL9 小时前
PostgreSQL 日报|修复截断 zstd 备份检测(10 月 9 日)
数据库·postgresql
敬往事一杯酒哈9 小时前
海康 AGV 导航读码器学习
学习
刘胡子大叔9 小时前
SQL 脚本的导入顺序
数据库·sql
代码什么用10 小时前
Spring对IoC的实现
数据库·spring
qq_2842740511 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
hz5678912 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC12 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
程序员Sunday12 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来
数据库·mysql
qq_2842740512 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
半杯咖啡半行码12 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略
数据库·qt