Home

XUESQL 平台题目练习(一)

2020/03/11

最近发现了一个SQL 在线练习平台:http://xuesql.cn/
题目难度比较有层次,适合用来巩固SQL相关知识,花了两天的时间把平台所有的题目刷了一遍,还挺有收获的。

SQL Lesson 1: SELECT 查询 101

image
这部分整体非常简单,中间进行相同操作的题目省略了
1.找到所有电影的名称title

1
SELECT title FROM movies;

5.找到所有电影的所有信息

1
SELECT * FROM movies;

7.请列出所有电影的ID,名称和出版国(即美国)

1
2
SELECT Id,Title,"美国" Country FROM movies;
-- 这里美国得用中文,用英文一直没通过_(:3J∠)_

SQL Lesson 2: 条件查询 (constraints) (Pt. 1)

image
1.找到id为6的电影

1
SELECT * FROM movies WHERE id=6;

2.找到在2000-2010年间year上映的电影

1
SELECT * FROM movies WHERE Year>=2000 AND Year<=2010;

3.找到不是在2000-2010年间year上映的电影

1
SELECT * FROM movies WHERE Year<2000 OR Year>2010;

4.找到头5部电影

1
SELECT * FROM movies LIMIT 5;

5.找到2010(含)年之后的电影里片长小于两个小时的片子

1
SELECT * FROM movies WHERE Year>=2010 AND Length_minutes<120;

6.找到99年和09年的电影,只要列出年份和片长看下

1
SELECT Year,Length_minutes FROM movies WHERE Year=1999 OR Year=2009;

SQL Lesson 3: 条件查询(constraints) (Pt. 2)

image
1.找到所有Toy Story系列电影

1
SELECT * FROM movies WHERE Title LIKE "Toy Story%";

2.找到所有John Lasseter导演的电影

1
SELECT * FROM movies WHERE Director="John Lasseter";

3.找到所有不是John Lasseter导演的电影

1
SELECT * FROM movies WHERE Director!="John Lasseter";

4.找到所有电影名为 “WALL-“ 开头的电影

1
SELECT * FROM movies WHERE Title LIKE "WALL-%";

5.有一部98年电影中文名《虫虫危机》请给我找出来

1
SELECT * FROM movies WHERE Year=1998;

6.找出所有Pete导演的电影,只要列出电影名,导演名和年份就可以

1
SELECT Title,Director,Year FROM movies WHERE Director LIKE "Pete%";

7.John Lasseter导演了两个系列,一个Car系列一个Toy Story系列,请帮我列出这John Lasseter导演两个系列千禧年之后的电影

1
SELECT * FROM movies WHERE Year>=2000 AND Director="John Lasseter";

SQL Lesson 4: 查询结果Filtering过滤 和 sorting排序

image
1.导演名排重列出所有电影,并按导演名正序排列

1
SELECT DISTINCT Director FROM movies ORDER BY Director;

2.列出按上映年份最新上线的4部电影

1
SELECT * FROM movies ORDER BY Year DESC LIMIT 4;

3.按电影名字母序升序排列,列出前5部电影

1
SELECT * FROM movies ORDER BY Title LIMIT 5;

4.按电影名字母序升序排列,列出上一题之后的5部电影

1
SELECT * FROM movies ORDER BY Title LIMIT 5,5;

5.如果按片长排列,John Lasseter导演导过片长第3长的电影是哪部,列出名字即可

1
2
3
SELECT Title FROM movies WHERE Director="John Lasseter"
ORDER BY Length_minutes DESC LIMIT 2,1;
-- 这道题一开始理解错了,理解成按照片名长度排序,想了半天为啥没通过

6.按导演名字母升序,如果导演名相同按年份降序,取前10部电影给我

1
SELECT * FROM movies ORDER BY Director,Year DESC LIMIT 10;

SQL Review: 复习 SELECT 查询

image
1.列出所有加拿大人的Canadian信息(包括所有字段)

1
SELECT * FROM north_american_cities WHERE country="Canada";

2.列出所有美国United States的城市按纬度从北到南排序(包括所有字段)

1
2
SELECT * FROM north_american_cities WHERE country="United States"
ORDER BY Latitude DESC;

3.列出所有在Chicago西部的城市,从西到东排序(包括所有字段)

1
SELECT * FROM north_american_cities WHERE Longitude<-87.629798;

4.用人口数population排序,列出墨西哥Mexico最大的2个城市(包括所有字段)

1
2
SELECT * FROM north_american_cities WHERE Country="Mexico"
ORDER BY Population DESC LIMIT 2;

5.列出美国United States人口3-4位的两个城市和他们的人口(包括所有字段)

1
2
SELECT * FROM north_american_cities WHERE Country="United States"
ORDER BY Population DESC LIMIT 2,2;

6.北美所有城市,请按国家名字母序从A-Z再按人口从多到少排列看下前10位的城市(包括所有字段)

1
2
SELECT * FROM north_american_cities
ORDER BY Country,Population DESC LIMIT 10;