大数据数据库:从SQL到NoSQL和NewSQL
立即解锁
发布时间: 2025-08-29 10:28:02 阅读量: 6 订阅数: 17 AIGC 

# 大数据数据库:从 SQL 到 NoSQL 和 NewSQL
## 1. 关系数据库与结构化查询语言(SQL)
### 1.1 SQL 基本操作
在处理数据库时,`pandas` 的 `read_sql` 方法在幕后使用 `Cursor` 来执行查询并访问结果行。下面我们来看看 SQL 中常见的插入、更新和删除操作。
#### 1.1.1 插入操作(INSERT INTO)
`INSERT INTO` 语句用于向表中插入一行数据。例如,我们要向 `authors` 表中插入一个名为 Sue Red 的新作者:
```python
cursor = connection.cursor()
cursor = cursor.execute("""INSERT INTO authors (first, last)
VALUES ('Sue', 'Red')""")
```
这里,`INSERT INTO` 关键字后面跟着要插入新行的表名,括号内是用逗号分隔的列名列表。列名列表后面是 `VALUES` 关键字和括号内用逗号分隔的值列表。需要注意的是,我们没有为 `id` 列指定值,因为它是 `authors` 表中的自增列,SQLite 会为每一行分配一个唯一的 `id` 值。
#### 1.1.2 单引号字符串处理
在 SQL 中,字符串用单引号(`'`)分隔。如果字符串中包含单引号,比如 `O’Malley`,必须在单引号出现的位置使用两个单引号(例如 `'O''Malley'`),第一个单引号作为第二个单引号的转义字符。
#### 1.1.3 更新操作(UPDATE)
`UPDATE` 语句用于修改现有值。假设数据库中 Sue Red 的姓氏有误,我们将其更新为 `Black`:
```python
cursor = cursor.execute("""UPDATE authors SET last='Black'
WHERE last='Red' AND first='Sue'""")
```
`UPDATE` 关键字后面跟着要更新的表名,`SET` 关键字和用逗号分隔的 `column_name = value` 对,表示要更改的列及其新值。如果不指定 `WHERE` 子句,更改将应用于每一行。为了确保只修改一行,最好在 `WHERE` 子句中使用行的唯一主键。
#### 1.1.4 删除操作(DELETE FROM)
`DELETE FROM` 语句用于从表中删除行。我们使用 Sue Black 的作者 ID 从 `authors` 表中删除她:
```python
cursor = cursor.execute('DELETE FROM authors WHERE id=6')
```
可选的 `WHERE` 子句决定要删除哪些行。如果省略 `WHERE` 子句,将删除表中的所有行。
#### 1.1.5 关闭数据库连接
当不再需要访问数据库时,应调用 `Connection` 的 `close` 方法断开与数据库的连接:
```python
connection.close()
```
### 1.2 操作示例代码及结果
以下是上述操作的完整示例代码及结果:
```python
import pandas as pd
# 插入操作
cursor = connection.cursor()
cursor = cursor.execute("""INSERT INTO authors (first, last)
VALUES ('Sue', 'Red')""")
# 查询 authors 表内容
result = pd.read_sql('SELECT id, first, last FROM authors',
connection, index_col=['id'])
print(result)
```
输出结果:
```
first last
id
1 Paul Deitel
2 Harvey Deitel
3 Abbey Deitel
4 Dan Quirk
5 Alexander Wald
6 Sue Red
```
```python
# 更新操作
cursor = cursor.execute("""UPDATE authors SET last='Black'
WHERE last='Red' AND first='Sue'""")
# 确认更新的行数
print(cursor.rowcount)
# 再次查询 authors 表内容
result = pd.read_sql('SELECT id, first, last FROM authors',
connection, index_col=['id'])
print(result)
```
输出结果:
```
1
first last
id
1 Paul Deitel
2 Harvey Deitel
3 Abbey Deitel
4 Dan Quirk
5 Alexander Wald
6 Sue Black
```
```python
# 删除操作
cursor = cursor.execute('DELETE FROM authors WHERE id=6')
# 确认删除的行数
print(cursor.rowcount)
# 最后查询 authors 表内
```
0
0
复制全文
相关推荐









