前言
本文章记录sqlzoo刷题过程以及解题思路,每个小节不仅包含练习,还有选择题(quiz)部分的实现思路
网址:sqlzoo
一、代码输入
- 更改查詢以顯示1950年諾貝爾獎的獎項資料
查询结果包含哪些列——全部
有什么条件——年份1950
查询逻辑——选择表所有列,年份=1950
SELECT *
FROM nobel
WHERE yr = 1950
- .顯示誰贏得了1962年文學獎(Literature)
查询结果列——获奖者
条件——
1、年份:1962
2、学科:文学奖
3、注意where中多个条件用and连接,不是逗号。
查询逻辑——选择全表的winner列,年份=1962,学科=文学奖
select winner
from nobel
where yr=1962 and subject='Literature'
- 顯示“愛因斯坦”(‘Albert Einstein’) 的獲獎年份和獎項。
查询结果列——年份,奖项
条件——获奖者:爱因斯坦
查询逻辑——选择表yr,subject列,winner=爱因斯坦
select yr,subject
from nobel
where winner='Albert Einstein'
- 顯示2000年及以後的和平獎(‘Peace’)得獎者。
查询结果列——获奖者
条件——
1、年份:>=2000
2、奖项:和平奖
查询逻辑——选择全表的winner列,yr>=2000,奖项=和平奖
select winner
from nobel
where yr>=2000 and subject='Peace'
- 顯示1980年至1989年(包含首尾)的文學獎(Literature)獲獎者所有細節(年,主題,獲獎者)。
查询结果列——全部
条件——
1、年份:[1980,1989]
2、奖项:文学奖
查询逻辑——选择全表的列,年份用between…and…代表时间范围,奖项=文学奖
select *
from nobel
where yr between 1980 and 1989 and subject='Literature'
- 顯示總統獲勝者的所有細節:
西奧多•羅斯福 Theodore Roosevelt
伍德羅•威爾遜 Woodrow Wilson
吉米•卡特 Jimmy Carter
查询结果列——全部
条件——获奖者:三个人(使用in关键字,表示在这个范围内的人都符合条件)
查询逻辑——选择表所有列,winner in()
SELECT * FROM nobel
WHERE winner IN ('Theodore Roosevelt',