当前位置: 首页 > news >正文

如何在 Jupyter Notebook 执行和学习 SQL 语句(上)—— 基本原理详解和相关库安装篇

        近期我找工作很多岗位问到sql,由于我简历上有写,加上我实习的时候确实运用了,所以我还是准备复习一下SQL语句,常见的内容,主要包括一些内容,比如SQL基础(主要是取数select,毕竟用的时候基本上不会让我一个实习生进行一个删除之类的操作)和一些进阶的用法比如窗口函数之类的!

FROM:指定表格或视图,支持多表连接。

WHERE:条件过滤,筛选符合条件的行。

GROUP BY:按指定列分组,通常配合聚合函数使用。

HAVING:分组后的条件过滤,应用于聚合结果。

ORDER BY:排序结果,默认升序,支持降序。

LIMIT:限制返回的行数,常用于分页。

步骤功能说明常用方法示例
SELECT选择要返回的列、表达式、聚合函数- 列名SELECT name, SUM(price), COUNT(id)
- 聚合函数(COUNT, SUM, AVG, MAX, MINSELECT CASE WHEN age > 18 THEN 'Adult' ELSE 'Child' END AS age_group
- CASE 表达式
FROM指定要查询的表格或视图- 单表查询FROM users u JOIN transactions t ON u.id = t.user_id
- 多表连接 (JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN)
- 笛卡尔积 (CROSS JOIN)
WHERE条件过滤,筛选符合条件的行- 条件运算符 (=, <>, >, <, BETWEEN)WHERE age > 25
- 模式匹配 (LIKE, RLIKE)WHERE email LIKE '%example.com'
- 集合运算 (IN, EXISTS)WHERE id IN (SELECT id FROM other_table)
GROUP BY对结果按某些列进行分组,通常配合聚合函数使用- 列名分组GROUP BY user_id
- 多列分组 (GROUP BY col1, col2)GROUP BY department, role
HAVING在分组后的结果上进一步过滤,通常用于聚合结果- 聚合函数条件 (HAVING SUM(price) > 1000)HAVING COUNT(*) > 2
HAVING SUM(total_price) > 500
ORDER BY对结果进行排序,按指定列升序(ASC)或降序(DESC)- 按单列排序 (ORDER BY col)ORDER BY transaction_date DESC
- 按多列排序 (ORDER BY col1 ASC, col2 DESC)ORDER BY name ASC, age DESC
LIMIT限制返回的行数,通常用于分页- LIMITLIMIT 10
- OFFSETLIMIT 10 OFFSET 20

        然后由于我在自己的小破电脑上没有安装SQL的环境,但还是想要联系一下,除了牛客我只能选择了在Jupyter Notebook中使用SQL,我通过以下步骤创建一个数据库并连接到该数据库:

1. 安装SQLite和SQLAlchemy

SQLite 是一个轻量级的数据库系统,适合本地小型项目。SQLAlchemy 是一个强大的数据库连接工具,可以在Jupyter中方便地运行SQL查询。

在Jupyter Notebook的单元格中运行以下命令来安装:

!pip install sqlalchemy sqlite

2. 创建SQLite数据库

SQLite数据库是一个文件,我选择直接在本地创建一个SQLite数据库文件。

import sqlite3# 创建一个名为 example.db 的SQLite数据库
conn = sqlite3.connect('example.db')# 创建游标对象,用于执行SQL语句
cursor = conn.cursor()# 创建一个示例表格
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER NOT NULL)
''')# 插入一些数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 25)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 30)")# 提交事务保存数据
conn.commit()# 关闭连接
conn.close()

3. 连接到数据库并查询

再次打开连接并执行SQL查询。

# 重新连接到数据库
conn = sqlite3.connect('example.db')# 使用 pandas 方便读取 SQL 查询结果
import pandas as pd# 查询数据
query = "SELECT * FROM users"
df = pd.read_sql_query(query, conn)# 展示数据
print(df)# 关闭连接
conn.close()

1. 基础SQL操作——简历一个数据表

execute()使用这个方法就可以轻松在python的环境中是执行一些sql语言,由于我本人没有安装sql的环境,我为了紧急复习一下sql也是煞费苦心

创建数据库和表,插入数据:
import sqlite3# 创建SQLite数据库并连接
conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 创建用户表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER NOT NULL,email TEXT)
''')# 插入数据
cursor.execute("INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com')")
cursor.execute("INSERT INTO users (name, age, email) VALUES ('Bob', 30, 'bob@example.com')")
cursor.execute("INSERT INTO users (name, age, email) VALUES ('Charlie', 35, 'charlie@example.com')")
cursor.execute("INSERT INTO users (name, age, email) VALUES ('David', 40, 'david@example.com')")conn.commit()
conn.close()

查询数据:

conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 查询所有用户
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()for row in rows:print(row)conn.close()

比如user表长这样!

然后是这个表格

然后是

 

下一篇我将从所有类型的数据,比如数值数据和字符数据,和时间数据的种种操作,和一些常见函数比如sum()之类简单函数和子查询和窗口函数大法的理论(超级常用),进行一个系统的复习!下下篇是我珍藏已久的实战操作题目,一个题包含了种种做法!基本上我感觉学会了我珍藏的实战题目,其他的都无敌了。

代码即将开源在github哈哈,希望各位大佬给我点歌星星!


http://www.mrgr.cn/news/50089.html

相关文章:

  • (十二)rsync 远程数据同步
  • 深度学习架构:MOE架构
  • FFmpeg 4.3 音视频基础到工程应用-多路H265监控录放C++开发一 : 环境搭建1 vs2019 安装,
  • 【C语言】动态内存管理(下)
  • mysql学习教程,从入门到精通,SQL导入数据(43)
  • 生信技能61 - 获取比对后BAM文件的多项基础统计指标
  • 基于FPGA的以太网设计(三)
  • 本地DLL劫持
  • Java基础概览和常用知识(五)
  • 机器学习篇-day07-朴素贝叶斯和特征降维
  • 已发布金融国家标准目录(截止2024年3月)
  • 算法工程师重生之第二十五天(加油站 分发糖果 柠檬水找零 根据身高重建队列 )
  • 【React】父组件如何调用子组件的方法
  • RTThread-Nano学习一-基于MDK移植
  • 基于Arduino的车辆门禁管理系统
  • Python中的itertools模块详解
  • 试着了解YOLOx
  • Web3的挑战与机遇:技术发展的现状分析
  • CSS背景调整
  • 【Pycharm系列】如何使用Windows的pycharm来远程连接linux做开发?