每个 Python 开发人员都应该知道的 Python 中的顶级 SQL 查询

已发表: 2021-01-29

SQL 代表结构化查询语言,它有助于管理、操作和存储关系数据库。 关系数据库包括以一种或另一种形式相关的表的集合。 多个表允许我们分离目标信息的不同实体,并避免数百列被合并在一个表中,这可能使管理数据库变得困难。

它是一种查询语言,而不是数据库本身。 这些查询可以在任何关系数据库管理系统(如 Oracle、Microsoft SQL Server)上执行,但有一种 Python 方法来创建和执行 SQL 查询。

目录

SQLite3

这是 Python 内置库,它允许我们创建轻量级数据库,而无需运行实际的客户端-服务器模型。 应用程序可以在内部使用它来存储数据和执行 SQL 命令。 该软件包易于使用,并允许在任何基于生产的数据库(如 Postgresql)中复制相同的模式。 让我们看看如何设置数据库。

  • 标准进口声明:

将 sqlite3 导入为 sq

该库作为别名“sq”导入。

  • 现在,我们需要创建到数据库的连接。 连接对象将用于此目的:

连接 = sq.connect(“example.db”)

如果之前没有创建这个文件,那么它将在执行这个命令后立即创建。

  • 要从数据库访问和获取信息,需要创建一个游标对象。

游标 = 连接。游标()

现在基本设置已经完成,我们可以通过创建相应的表将数据推送到数据库中,但在此之前,让我们修改一些 SQL 命令。

SQL 中的基本命令

SQL 在英文可读命令方面非常出色。 这些通常以大写形式输入,对此没有限制。 通常这样做是为了突出显示查询关键字,并且它们可以与表属性区分开来。 但是现在我们有强大的 IDE 可以用不同的颜色突出显示它们,任何方法都可以工作。

1.创建表

这允许您在数据库中创建数据保存对象、表。 一个数据库可以有许多具有一个或多个关系的表。 这些表的每一列都有标题,描述了它所包含的值。 创建表时,您需要指定列名、它将保存的数据类型和大小。 您可以添加其他属性,例如列是否为主键、是否可以具有空值等。

可以将基本表创建为:

创建表 company_data (

id int,

名称 varchar (24),

no_of_employee int

);

2. 选择和从

顾名思义,它用于从表中选择和获取数据。 这是让您查看数据的最重要步骤。 它类似于 Pandas 的头部或尾部功能。

使用这些命令的简单查询如下所示:

SELECT <列名>

来自 <table_name>;

要从表中获取所有列,您可以使用星号 (*) 代替所有列名。 LIMIT 关键字有助于定义最大行数。 考虑这个查询:

选择 *

来自 example_table

限制 5;

3. 在哪里

where 子句用于指定查询的附加条件。 您可以包括列的范围、任何特定的比较或否定。

例如:

选择客户名称,公司名称

FROM company_data

WHERE company_name = 'upGrad';

4.插入

此子句用于将值添加到数据表中。 这些值的插入顺序与在 create table 命令中将列名添加到表中的顺序相同。 可以一次插入多行或一行。

例如,下面的查询将 3 条记录插入到表中:

INSERT INTO company_data (id, name, no_of_employees)

价值观

(1, 'companyz_A', 100),

(2, '公司_B', 200),

(3, 'company_C', 500);

通过 Python 执行

现在您已经了解了这些命令,是时候在代码中执行它们了。 到目前为止,我们已经连接到数据库并创建了一个游标对象。 该对象将有助于在数据库上执行命令:

cursor.execute(''' <QUERY> ''')

查询作为字符串传递,并在三引号中。 在您提交此更改之前,此更改不会反映在数据库中。 最后关闭与数据库的连接可确保在此之后不会进行新的执行。

看看这个简单的代码:

将 sqlite3 导入为 sq

连接 = sq.connect(“example.db”)

游标 = 连接。游标()

光标.执行(“”

创建表表 1 (

id int,

名称 varchar (24)

)

”')

光标.执行(“”

INSERT INTO table1 (id, name)

价值观

(1, '升级'),

(2,“博客”)

”')

光标.执行(“”

选择 *

从表 1

”')

连接.commit()

连接.close()

重要提示

1. 由于查询是作为字符串传递的,使用 f-string 修改它们似乎是使程序动态和用户控制的好选择,但它可能会导致一些安全问题,例如 SQL 注入攻击。 要避免这些,请使用占位符“?” 无论您想替换查询中的某些值的任何位置。 例如:

cursor.execute('“SELECT ? FROM ?''', col_name, table_name)

您可以要求用户提供列名,该值将在此处替换。

2. 使用诸如 fetchone() 和 fetchall() 之类的函数来迭代结果。 Fetchone 返回查询中的下一行,而 fetchall 返回游标获取的所有行。 结果作为元组返回,因此它们不能被程序中的外部函数修改。

3. 如果要向数据库添加批量值,则可以使用 executemany() 函数并传递包含要添加的值的元组列表。 例如:

to_add = [(1, 'hello') , (2, 'World')]

cursor.executemany('INSERT INTO table VALUES (?, ?)', to_add)

另请阅读: Python 项目理念和主题

从世界顶级大学在线学习数据科学课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

SQL 是最受欢迎的数据库语言,并且易于理解。 建议大多数数据科学初学者练习 SQL,因为它改进了数据检索过程并让您了解数据工程的执行方式。 它是任何数据库操作的标准语言,并提供对数据库的更快访问。

如果您想了解数据科学,请查看 IIIT-B 和 upGrad 的数据科学 PG 文凭,该文凭专为在职专业人士而设,提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导、1-与行业导师面对面交流,400 多个小时的学习和顶级公司的工作协助。

您对 SQL 中的约束了解多少?

约束确定将在表中输入的数据类型。 它们是在创建表期间指定的,可以应用于单个字段或多个字段。 SQL中的约束是:
NOT NULL - 防止在字段中输入 NULL 值。
CHECK - 检查字段中的所有值是否满足给定条件。
DEFAULT - 如果未输入任何值,则自动为字段分配默认值。
UNIQUE - 仅允许在字段中输入唯一值。
INDEX- 索引一个字段,提供更快的记录检索。
PRIMARY KEY - 唯一标识表中的每条记录。
FOREIGN KEY - 限制可能损害表之间链接的操作。

解释索引及其类型?

索引或数据库索引可以称为特殊的查找表,它使数据检索操作更快。 为了更快地搜索数据,它会消耗更多的内存和额外的写入。 索引可以有 4 种类型:
1.唯一索引
2. 非唯一索引
3. 聚集索引

SQL 中的关系是什么,它的类型是什么?

多个实体或多个相互关联的有形和无形对象之间的关系称为关系。 SQL 中有 4 种类型的关系:
1. 一对一
2. 一对多/多对一
3.多对多
4. 自我参照关系。