《数据库系统概论》笔记九:数据库编程、日常运行相关

作者 Marlous 日期 2019-02-24
《数据库系统概论》笔记九:数据库编程、日常运行相关

一 数据库编程

1 嵌入式 SQL

参考:
Python数据库编程(MySQL)

  1. 概念:
  • 几个概念:
    几个概念

  • 几个概念间关系:
    几个概念间关系

  • connection 对象(生成对象的方法参数、对象方法):
    connection 对象(生成对象的方法参数、对象方法)
    connection 对象(生成对象的方法参数、对象方法)

  • cursor 对象(对象方法、fetch 方法):
    cursor 对象(对象方法)
    cursor 对象(对象方法)

  • 一些异常:
    一些异常

  1. 编码流程:
    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

  1. 概念:
  • 嵌入式 SQL(ESQL)将 SQL 语句嵌入程序设计语言,借助高级语言的控制功能实现过程化。
  • 过程化 SQL(PL/SQL)是对 SQL 的扩展,增加了过程化语句功能。
  • 这个过程化代码,经编译优化,存储在数据库服务器中,下次使用直接调用即可。
  1. 使用方法:
  • 创建:

    1
    2
    3
    CREATE Procedure 过程名(参数, 参数, ...)
    AS
    过程化 SQL 语句块;
  • 执行:

    1
    CALL Procedure 过程名(参数, 参数, ...);
  • 删除:

    1
    DROP Procedure 过程名();
  1. PL/SQL:
  • 语句:
    语句

  • 实例:
    实例

3 ODBC

  1. 概念:
    为解决异构数据库间的数据共享而产生的。一个基于 ODBC 的应用程序对数据库的操作不依赖任何 DBMS,不直接与 DBMS 打交道,所有的数据库操作由对应的 DBMS 的 ODBC 驱动程序完成。ODBC 使应用程序具有良好的互用性和可移植性,并且具备同时访问多种 DBS 的能力,从而克服了传统数据库应用程序的缺陷。

  2. ODBC 应用系统的体系结构:
    ODBC 应用系统的体系结构

二 关系查询处理和查询优化

参考:
1、 第九章 关系查询处理和查询优化
2、 关系查询处理和查询优化小结

关系查询处理和查询优化
关系查询处理和查询优化

三 数据库恢复技术

数据库恢复技术

四 并发控制

  1. 并发操作引起的问题:
    多个事务同时存取同一数据。/ 丢失修改、不可重复读、读 “脏” 数据。(破坏了隔离性)

  2. 并发的意义和实现技术:
    主要通过封锁技术实现(还有时间戳、乐观控制法)。保证事务的一致性、隔离性,需要对并发操作进行正确调度。

  3. 可串行化:
    并发执行结果等价于串行调度的调度。

  4. 锁相关:
    锁相关