sql语言实践之自学SQL网(SQL Lesson 0-7)

sql语言实践之自学SQL网(SQL Lesson 0-7)

这是一个目录


自学SQl网链接入口

SQL Lesson 0: SQL Lesson 0: 让我给SQL做个自我介绍

SQL lesson 0链接入口

练习 do it — 请完成如下任务

1.【初体验】这是第一题,请你先将左侧的输入框里的内容清空,然后请输入下面的SQL,您将看到所有电影标题:

SELECT title FROM movies

--请输入sql
SELECT title 
FROM movies;
2.【初体验】请输入如下SQL你将看到4条电影(切记先清空数据框且出错要耐心比对):

SELECT title,director FROM movies WHERE Id < 5

SELECT title,director 
FROM movies 
WHERE Id < 5
;
3.【初体验】输入如下SQL你将看到电影总条数:

SELECT count(*) FROM movies

SELECT count(*) 
FROM movies
;
4.【初体验】SQL可以直接做计算,下面的SQL计算1+1的和,请输入:

SELECT 1+1

SELECT 1+1
;

SQL Lesson 1: SELECT 查询 101

SQL lesson 1链接入口

练习 do it — 请完成如下任务

1.【简单查询】找到所有电影的名称title
SELECT title FROM movies;
2.【简单查询】找到所有电影的导演
SELECT Director FROM movies;
3.【简单查询】找到所有电影的名称和导演
SELECT title,Director FROM movies;
4.【简单查询】找到所有电影的名称和上映年份
SELECT Title,Year FROM movies;
;
5.【简单查询】找到所有电影的所有信息
SELECT * FROM movies;
;
6.【简单查询】找到所有电影的名称,Id和播放时长
SELECT Title,Id,Length_minutes FROM movies;

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

SQL lesson 2链接入口

练习 do it — 请完成如下任务

1.【简单条件】找到id为6的电影
SELECT * 
FROM movies
WHERE Id=6
;
2.【简单条件】找到在2000-2010年间year上映的电影
SELECT * 
FROM movies
WHERE Year BETWEEN 2000 AND 2010
;
3.【简单条件】找到不是在2000-2010年间year上映的电影
SELECT * 
FROM movies
WHERE Year NOT BETWEEN 2000 AND 2010
;
4.【简单条件】找到头5部电影
SELECT * 
FROM movies
WHERE Id BETWEEN 1 AND 5
;
5.【简单条件】找到2010(含)年之后的电影里片长小于两个小时的片子
SELECT * 
FROM movies
WHERE Year>=2010 AND Length_minutes<120
;

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

SQL lesson 3链接入口

练习 do it — 请完成如下任务

1.【复杂条件】找到所有Toy Story系列电影
SELECT * 
FROM movies
WHERE Title LIKE 'Toy Story%'
;
2.【复杂条件】找到所有John Lasseter导演的电影
SELECT * 
FROM movies
WHERE Director = 'John Lasseter'
;
3.【复杂条件】找到所有不是John Lasseter导演的电影
SELECT * 
FROM movies
WHERE Director <> 'John Lasseter'
;
4.【复杂条件】找到所有电影名为 “WALL-” 开头的电影
SELECT * 
FROM movies
WHERE Title LIKE 'WAL%'
;
5.【复杂条件】有一部98年电影中文名《虫虫危机》请给我找出来
SELECT * 
FROM movies
WHERE Year=1998 AND Title LIKE '%bug%'
;

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

SQL lesson 4链接入口

练习 do it — 请完成如下任务

1.【结果排序】按导演名排重列出所有电影(只显示导演),并按导演名正序排列
SELECT DISTINCT Director
FROM movies
ORDER BY Director
;
2.【结果排序】列出按上映年份最新上线的4部电影
SELECT *
FROM movies
ORDER BY Year DESC
LIMIT 4 OFFSET 0
;
3.【结果排序】按电影名字母序升序排列,列出前5部电影
SELECT *
FROM movies
ORDER BY Title ASC
LIMIT 5 OFFSET 0
;
4.【结果排序】按电影名字母序升序排列,列出上一题之后的5部电影
SELECT *
FROM movies
ORDER BY Title ASC
LIMIT 5 OFFSET 5
;
5.【结果排序】如果按片长排列,John Lasseter导演导过片长第3长的电影是哪部,列出名字即可
SELECT Title
FROM movies
WHERE Director='John Lasseter'
ORDER BY length(Title)
LIMIT 1 OFFSET 4
;

SQL Review: 复习 SELECT 查询

SQL Review 链接入口

练习 do it — 请完成如下任务

1.【复习】列出所有加拿大人的Canadian信息(包括所有字段)
SELECT *
FROM north_american_cities
WHERE Country='Canada'
;
2.【复习】列出所有在Chicago西部的城市,从西到东排序(包括所有字段)
SELECT *
FROM north_american_cities
WHERE Longitude<(SELECT Longitude FROM north_american_cities WHERE City='Chicago')
ORDER BY Longitude 
;
3.【复习】用人口数population排序,列出墨西哥Mexico最大的2个城市(包括所有字段)
SELECT *
FROM north_american_cities
WHERE Country='Mexico'
ORDER BY population DESC
LIMIT 2 OFFSET 0
;
4.【复习】列出美国United States人口3-4位的两个城市和他们的人口(包括所有字段)
SELECT *
FROM north_american_cities
WHERE Country='United States'
ORDER BY Population DESC
LIMIT 2 OFFSET 2
;

SQL Lesson 6: 用JOINs进行多表联合查询

SQL Lesson 6 链接入口

练习 do it — 请完成如下任务

1.【联表】找到所有电影的国内Domestic_sales和国际销售额
SELECT * 
FROM movies INNER JOIN Boxoffice ON Id=Movie_id
;
2.【联表】找到所有国际销售额比国内销售大的电影
SELECT * 
FROM movies INNER JOIN Boxoffice ON Id=Movie_id
WHERE Domestic_sales<International_sales
;
3.【联表】找出所有电影按市场占有率rating倒序排列
SELECT * 
FROM movies INNER JOIN Boxoffice ON Id=Movie_id
ORDER BY Rating ASC
;
4.【联表】每部电影按国际销售额比较,排名最靠前的导演是谁,国际销量多少
SELECT Director,International_sales
FROM movies INNER JOIN Boxoffice ON Id=Movie_id
ORDER BY International_sales DESC
LIMIT 1
;

SQL Lesson 7: 外连接(OUTER JOINs)

SQL Lesson 7 链接入口

练习 do it — 请完成如下任务

1.【复习】找到所有有雇员的办公室(buildings)名字
SELECT DISTINCT Building_name
FROM  Buildings LEFT JOIN employees ON Building=Building_name
WHERE Name IS NOT NULL
;
2.【复习】找到所有办公室里的所有角色(包含没有雇员的),并做唯一输出(DISTINCT)
SELECT DiSTINCT Building_name,Role
FROM Buildings LEFT JOIN employees ON Building=Building_name
;
3.【难题】找到所有有雇员的办公室(buildings)和对应的容量
SELECT * 
FROM movies INNER JOIN Boxoffice ON Id=Movie_id
ORDER BY Rating ASC
;
4.【难题】找到所有有雇员的办公室(buildings)和对应的容量
SELECT DiSTINCT Building_name,Capacity
FROM Buildings LEFT JOIN employees ON Building=Building_name
WHERE Name IS NOT NULL
;

结尾 (其它参考答案)

sql语言实践之自学SQL网(SQL Lesson12)
sql语言实践之自学SQL网(SQL Lesson10,11)
sql语言实践之自学SQL网(SQL Lesson8,9)
sql语言实践之自学SQL网(SQL Lesson 0-7)

----------EOF----------

### 关于头歌列表自学引导的答案或解析 目前提供的引用内容并未直接涉及“头歌列表”的具体答案或解析。然而,可以从其他相关内容中推测可能的学习路径和解答方式。 #### 可能的解决方案 如果目标是找到类似于 SQL 或算法学习的题解,则可以参考类似的结构化学习方法: 1. **SQL 学习路径** 如果头歌列表涉及到数据库操作,那么可以通过 SQL 的基本语法来完成任务。例如,在 `Lesson 0` 到 `Review 5` 中提到的内容涵盖了基础查询、条件筛选、连接表的操作等知识点[^1]。假设头歌列表是一个音乐播放器的数据集,可以用如下 SQL 查询获取相关信息: ```sql SELECT song_name, artist_name FROM songs INNER JOIN artists ON songs.artist_id = artists.id WHERE playlist_name = 'Headphone List'; ``` 2. **算法学习路径** 若头歌列表更偏向于算法设计问题,则可以根据常见的算法训练框架来进行思考。例如,对于排序或者推荐系统的实现,可以采用以下步骤[^4]: - 数据预处理:清洗并整理歌曲数据。 - 排序逻辑:基于用户偏好或其他指标对歌曲进行排序。 - 输出结果:返回最终排列好的歌曲列表。 3. **综合应用** 结合以上两种思路,如果是关于如何构建一个高效的音乐推荐系统,可以考虑使用 SQL 进行数据提取,并利用 Python 实现复杂的计算逻辑。例如: ```python import sqlite3 conn = sqlite3.connect('music.db') cursor = conn.cursor() query = """ SELECT s.song_name, a.artist_name, b.international_sales FROM songs AS s INNER JOIN artists AS a ON s.artist_id = a.id INNER JOIN boxoffice AS b ON s.boxoffice_id = b.movie_id; """ results = cursor.execute(query).fetchall() sorted_songs = sorted(results, key=lambda x: x[2], reverse=True) for song in sorted_songs[:10]: print(f"{song[0]} by {song[1]}") ``` #### 解析注意事项 由于未提供具体的题目描述,上述代码仅为示例展示。实际应用时需根据需求调整字段名称及逻辑关系[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ヌヌ イホ キT エ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值