一 数据库编程
1 嵌入式 SQL
- 概念:
几个概念:
几个概念间关系:
connection 对象(生成对象的方法参数、对象方法):
cursor 对象(对象方法、fetch 方法):
一些异常:
- 编码流程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37"""
创建一个 connection 对象
"""
db = pymysql.connect(
host=settings.DB_HOST,
port=int(settings.DB_PORT),
user=settings.DB_USER,
passwd=settings.DB_USER_PASSWORD,
charset=settings.DB_CHARSET)
"""
创建一个 cursor 对象
"""
cur = db.cursor()
"""
使用 cursor 对象的方法执行 SQL 语句
"""
cur.execute('SHOW DATABASES;')
"""
使用 cursor 对象的方法获取执行过 MySQL 返回的数据
fetchall() 是获取多行。返回多个元组,即返回多条记录(rows),如果没有结果,则返回 ()
fetchone() 获取一行。返回单个的元组,也就是一条记录(row),如果没有结果,则返回 None
"""
db_list = list(cur.fetchall())
"""
补充:使用 connection 对象提交事务(如果是对数据库定义、操作、控制,非查询)
"""
db.commit()
"""
关闭 cursor、connection 对象
"""
cur.close()
db.close()
2 过程化 SQL
- 概念:
- 嵌入式 SQL(ESQL)将 SQL 语句嵌入程序设计语言,借助高级语言的控制功能实现过程化。
- 过程化 SQL(PL/SQL)是对 SQL 的扩展,增加了过程化语句功能。
- 这个过程化代码,经编译优化,存储在数据库服务器中,下次使用直接调用即可。
- 使用方法:
创建:
1
2
3CREATE Procedure 过程名(参数, 参数, ...)
AS
过程化 SQL 语句块;执行:
1
CALL Procedure 过程名(参数, 参数, ...);
删除:
1
DROP Procedure 过程名();
- PL/SQL:
语句:
实例:
3 ODBC
概念:
为解决异构数据库间的数据共享而产生的。一个基于 ODBC 的应用程序对数据库的操作不依赖任何 DBMS,不直接与 DBMS 打交道,所有的数据库操作由对应的 DBMS 的 ODBC 驱动程序完成。ODBC 使应用程序具有良好的互用性和可移植性,并且具备同时访问多种 DBS 的能力,从而克服了传统数据库应用程序的缺陷。ODBC 应用系统的体系结构:
二 关系查询处理和查询优化
参考:
1、 第九章 关系查询处理和查询优化
2、 关系查询处理和查询优化小结
三 数据库恢复技术
四 并发控制
并发操作引起的问题:
多个事务同时存取同一数据。/ 丢失修改、不可重复读、读 “脏” 数据。(破坏了隔离性)并发的意义和实现技术:
主要通过封锁技术实现(还有时间戳、乐观控制法)。保证事务的一致性、隔离性,需要对并发操作进行正确调度。可串行化:
并发执行结果等价于串行调度的调度。锁相关: