第七章 数据库操作
这一章涉及到了SQL的操作部分,所以你要提前学习有关数据库的安装以及数据库客户端的基本知识。
SQL 语言的基本概念和语法
SQL(Structured Query Language)是一种用于操作关系型数据库的编程语言,它是数据库的标准语言之一。在 SQL 中,通过使用一系列的命令和语法来查询、插入、更新和删除数据库中的数据。下面我们将介绍 SQL 的基本概念和语法,以及一些常用的 SQL 命令。
- 数据库和表
在 SQL 中,数据被组织成一个个数据库(database),每个数据库包含一个或多个表(table)。表由一些列(column)和行(row)组成。列定义了表中数据的类型,行则表示表中的一条记录。
例如,下面是一个名为 users
的表的定义:
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
email VARCHAR(50)
);
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
email VARCHAR(50)
);
在这个例子中,我们创建了一个名为 users
的表,包含了四个列:id
、name
、age
和 email
。其中,id
列是主键,用于唯一标识每条记录。
- 查询数据
在 SQL 中,使用 SELECT
命令来查询数据库中的数据。下面是一个查询 users
表中所有记录的例子:
SELECT * FROM users;
SELECT * FROM users;
在这个例子中,我们使用 SELECT
命令查询了 users
表中的所有记录。*
表示查询所有列。如果我们只想查询部分列,可以使用列名来代替 *
,例如:
SELECT name, age FROM users;
SELECT name, age FROM users;
在这个例子中,我们只查询了 users
表中的 name
和 age
两列。
除了查询所有记录和指定列,我们还可以对查询结果进行排序、过滤和分组等操作。例如,下面是一个查询 users
表中年龄大于 25 的记录,并按照年龄从小到大排序的例子:
SELECT * FROM users WHERE age > 25 ORDER BY age ASC;
SELECT * FROM users WHERE age > 25 ORDER BY age ASC;
在这个例子中,我们使用了 WHERE
子句来过滤年龄大于 25 的记录,使用 ORDER BY
子句按照年龄从小到大排序。
- 插入数据
在 SQL 中,使用 INSERT INTO
命令来插入数据到数据库中。下面是一个向 users
表中插入一条记录的例子:
INSERT INTO users (id, name, age, email) VALUES (1, 'John', 25, '[email protected]');
INSERT INTO users (id, name, age, email) VALUES (1, 'John', 25, '[email protected]');
在这个例子中,我们使用 INSERT INTO
命令向 users
表中插入了一条记录,包含了 id
、name
、age
和 email
四个列的值。
如果我们想插入多条记录,可以使用 INSERT INTO
命令和 VALUES
子句组合起来使用。例如,下面是一个向 users
表中插入两条记录的例子:
INSERT INTO users (id, name, age, email) VALUES
(1, 'John', 25, '[email protected]'),
(2, 'Mary', 30, '[email protected]');
INSERT INTO users (id, name, age, email) VALUES
(1, 'John', 25, '[email protected]'),
(2, 'Mary', 30, '[email protected]');
在这个例子中,我们使用了多个值来插入两条记录。
- 更新数据
在 SQL 中,使用 UPDATE
命令来更新数据库中的数据。下面是一个更新 users
表中 id
为 1 的记录的例子:
UPDATE users SET age = 26 WHERE id = 1;
UPDATE users SET age = 26 WHERE id = 1;
在这个例子中,我们使用 UPDATE
命令更新了 users
表中 id
为 1 的记录的 age
列的值为 26。
如果我们想更新多条记录,可以使用 UPDATE
命令和 WHERE
子句组合起来使用。例如,下面是一个更新 users
表中年龄大于 25 的记录的例子:
UPDATE users SET age = age + 1 WHERE age > 25;
UPDATE users SET age = age + 1 WHERE age > 25;
在这个例子中,我们使用 UPDATE
命令更新了 users
表中年龄大于 25 的记录的 age
列的值加 1。
- 删除数据
在 SQL 中,使用 DELETE FROM
命令来删除数据库中的数据。下面是一个删除 users
表中 id
为 1 的记录的例子:
DELETE FROM users WHERE id = 1;
DELETE FROM users WHERE id = 1;
在这个例子中,我们使用 DELETE FROM
命令删除了 users
表中 id
为 1 的记录。
如果我们想删除多条记录,可以使用 DELETE FROM
命令和 WHERE
子句组合起来使用。例如,下面是一个删除 users
表中年龄大于 25 的记录的例子:
DELETE FROM users WHERE age > 25;
DELETE FROM users WHERE age > 25;
在这个例子中,我们使用 DELETE FROM
命令删除了 users
表中年龄大于 25 的记录。
这些例子展示了 SQL 的基本概念和语法,以及一些常用的 SQL 命令。通过学习这些例子,我们可以更好地理解如何使用 SQL 操作数据库中的数据,并将其应用到实际的项目中。
连接和操作数据库
连接和操作数据库是很多应用程序必备的功能之一,它们使得程序能够存储和检索数据。下面我们将介绍如何连接和操作数据库,以及一些通用的数据库操作。
- 连接数据库
在 Python 中连接数据库通常需要使用第三方库,最常用的是 pymysql
库。首先我们需要安装该库,可以使用以下命令:
pip install pymysql
pip install pymysql
连接数据库的步骤通常如下:
- 导入 pymysql 库。
- 建立数据库连接。
- 创建游标对象。
- 执行 SQL 语句。
- 关闭游标对象和数据库连接。
下面是一个连接 MySQL 数据库的例子:
import pymysql
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 语句
cursor.execute('SELECT * FROM users')
# 处理查询结果
results = cursor.fetchall()
for row in results:
print(row)
# 关闭游标对象和数据库连接
cursor.close()
conn.close()
import pymysql
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 语句
cursor.execute('SELECT * FROM users')
# 处理查询结果
results = cursor.fetchall()
for row in results:
print(row)
# 关闭游标对象和数据库连接
cursor.close()
conn.close()
在这个例子中,我们使用 pymysql
库连接了一个名为 test
的 MySQL 数据库。首先我们建立了数据库连接,然后创建了一个游标对象,使用游标对象执行了一个查询语句,最后处理了查询结果并关闭了游标对象和数据库连接。
- 插入数据
插入数据是数据库操作中最常见的操作之一。下面是一个向 MySQL 数据库中插入一条记录的例子:
import pymysql
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 语句
sql = "INSERT INTO users(name, age, email) VALUES (%s, %s, %s)"
values = ('John', 25, '[email protected]')
cursor.execute(sql, values)
# 提交修改
conn.commit()
# 关闭游标对象和数据库连接
cursor.close()
conn.close()
import pymysql
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 语句
sql = "INSERT INTO users(name, age, email) VALUES (%s, %s, %s)"
values = ('John', 25, '[email protected]')
cursor.execute(sql, values)
# 提交修改
conn.commit()
# 关闭游标对象和数据库连接
cursor.close()
conn.close()
在这个例子中,我们向一个名为 users
的表中插入了一条记录。首先建立数据库连接和游标对象,然后定义了一个 SQL 语句和参数值,使用游标对象执行了 SQL 语句并提交了修改,最后关闭了游标对象和数据库连接。
- 更新数据
更新数据是数据库操作中另一个常见的操作。下面是一个更新 MySQL 数据库中记录的例子:
import pymysql
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 语句
sql = "UPDATE users SET age = %s WHERE name = %s"
values = (26, 'John')
cursor.execute(sql, values)
# 提交修改
conn.commit()
# 关闭游标对象和数据库连接
cursor.close()
conn.close()
import pymysql
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 语句
sql = "UPDATE users SET age = %s WHERE name = %s"
values = (26, 'John')
cursor.execute(sql, values)
# 提交修改
conn.commit()
# 关闭游标对象和数据库连接
cursor.close()
conn.close()
在这个例子中,我们更新了一个名为 users
的表中 John 的年龄。首先建立数据库连接和游标对象,然后定义了一个 SQL 语句和参数值,使用游标对象执行了 SQL 语句并提交了修改,最后关闭了游标对象和数据库连接。
- 删除数据
删除数据也是数据库操作中常见的操作之一。下面是一个从 MySQL 数据库中删除记录的例子:
import pymysql
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 语句
sql = "DELETE FROM users WHERE name = %s"
values = ('John',)
cursor.execute(sql, values)
# 提交修改
conn.commit()
# 关闭游标对象和数据库连接
cursor.close()
conn.close()
import pymysql
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 语句
sql = "DELETE FROM users WHERE name = %s"
values = ('John',)
cursor.execute(sql, values)
# 提交修改
conn.commit()
# 关闭游标对象和数据库连接
cursor.close()
conn.close()
在这个例子中,我们从一个名为 users
的表中删除了名为 John 的记录。首先建立数据库连接和游标对象,然后定义了一个 SQL 语句和参数值,使用游标对象执行了 SQL 语句并提交了修改,最后关闭了游标对象和数据库连接。
这些例子展示了如何连接和操作数据库,并提供了一些通用的数据库操作,包括插入数据、更新数据和删除数据。通过学习这些例子,我们可以更好地理解如何在 Python 中连接和操作数据库,并将其应用到实际的项目中。