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

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

时间:2024-10-14 18:48:16浏览次数:9  
标签:execute Jupyter users age cursor Notebook SQL conn name

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

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

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

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

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

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

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

步骤功能说明常用方法示例
SELECT选择要返回的列、表达式、聚合函数- 列名SELECT name, SUM(price), COUNT(id)
- 聚合函数(COUNT, SUM, AVG, MAX, MIN)SELECT 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, '[email protected]')")
cursor.execute("INSERT INTO users (name, age, email) VALUES ('Bob', 30, '[email protected]')")
cursor.execute("INSERT INTO users (name, age, email) VALUES ('Charlie', 35, '[email protected]')")
cursor.execute("INSERT INTO users (name, age, email) VALUES ('David', 40, '[email protected]')")

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哈哈,希望各位大佬给我点歌星星!

标签:execute,Jupyter,users,age,cursor,Notebook,SQL,conn,name
From: https://blog.csdn.net/qq_44117805/article/details/142925746

相关文章

  • SQL注入基础速通
    <aside>......
  • orthanc 编译安装mysql S3
    克隆代码orthancserverhgclonehttps://orthanc.uclouvain.be/hg/orthanc/sudoapt-getinstallcurlzipunziptarcdvcpkg&&./bootstrap-vcpkg.shmysqlinstalllibmysqlclinet-devset(CMAKE_BUILD_TYPE"Release")set(ORTHANC_FRAMEWORK_VE......
  • MySQL表的操作
    前面我们学习了库的操作,之后学习了MySQL中的数据类型,有了这些数据类型,我们就可以来进行表的相关操作了1.查看所有表showtables;在查看表之前,我们要先选择库在选择了库之后,查看2.创建表2.1语法CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name(fieldda......
  • Docker 使用Mysql 部署Baget
    一、建立配置文件1.新建文件夹mkdir/panel/docker/baget-data/packages2.新建配置文件mk/panel/docker/baget-data/baget.envApiKey=APISSSSSStorage__Type=FileSystemStorage__Path=/panel/docker/baget-data/packagesDatabase__Type=MySqlDatabase__ConnectionS......
  • 【未公开0day】9.9付费进群系统 wxselect SQL注入漏洞【附poc下载】
    免责声明:本文仅用于技术学习和讨论。请勿使用本文所提供的内容及相关技术从事非法活动,若利用本文提供的内容或工具造成任何直接或间接的后果及损失,均由使用者本人负责,所产生的一切不良后果均与文章作者及本账号无关。fofa语法body="template/layuiadmin/xinadmin"一、漏洞......
  • 一文为你解读MySQL8.0 Instant DDL源码实现
    一、背景介绍数据库中每一行数据都被持久化存储在磁盘中。当我们对表进行ADD/DROPCOLUMN操作时,磁盘中的数据也会相应地被修改,所需时间与对应表的大小成正比。因此,对大表进行ADD/DROPCOLUMN操作时,花费的时间可能长达数小时或数天,这给用户的业务带来了诸多不便。MySQL5.5版本......
  • python3.6 解析svg保存到mysql
     1importjson2fromcollectionsimportCounter3fromjsonimportJSONDecodeError45importmysql6importrequests7fromlxmlimportetree89#定义远程SVG文件的URL10file=r'D:\tmp_files\jmx\0919_3568.txt'11dat......
  • MySQL Workbench的安装
    MySQLWorkbench是一款由MySQL官方开发和提供的统一可视化工具,专为数据库管理员、开发者和数据架构师设计。它提供了数据建模、SQL开发和数据库管理的全面功能,支持Windows、Linux和macOS操作系统。MySQLWorkbench是一个强大的工具,它通过图形界面简化了许多复杂的数据......
  • 基于Java+Jsp+Ssm+Mysql实现的在线乡村风景美食景点旅游平台功能设计与实现一
    一、前言介绍:1.1项目摘要乡村风景美食旅游平台的课题背景主要基于我国旅游产业的现状与发展需求。当前,我国旅游产业虽然发展迅速,但仍然存在基础薄弱、管理手段滞后、信息化程度低等问题。旅游行政管理部门的管理方式相对落后,缺乏有效的信息化管理手段,信息沟通渠道不畅,这......
  • 基于Java+Jsp+Ssm+Mysql实现的在线乡村风景美食景点旅游平台功能设计与实现二
    一、前言介绍:1.1项目摘要乡村风景美食旅游平台的课题背景主要基于我国旅游产业的现状与发展需求。当前,我国旅游产业虽然发展迅速,但仍然存在基础薄弱、管理手段滞后、信息化程度低等问题。旅游行政管理部门的管理方式相对落后,缺乏有效的信息化管理手段,信息沟通渠道不畅,这......