05 Advanced SQL
Accessing SQL from a Programming Lang.#
- 不是所有 query 都能表达为 SQL 语句
- 非声明式操作,例如交互,不能用 SQL 完成
- 2 approaches- dynamic SQL: 使用一些函数与 db 进行交流,运行时- JDBC, Python Database API, ODBC
 
- embedded SQL: 将源码中的 SQL 语句在编译时特殊处理,转换为函数调用
 
- dynamic SQL: 使用一些函数与 db 进行交流,运行时
JDBC#
- app makes calls to- 与数据库服务器建立连接
- 发送 SQL 命令
- fetch tuples of result one-by-one into program variables
 
- JDBC- 支持 metadata 查询,例如查询有什么 relation,有什么 attr,attr 的类型
 
Prepared Statement#
- query 能够一次编译,多次使用不同的参数运行
- 如果需要用户输入,也很方便
- 能够避免 SQL 注入风险
Metadata Features#

Transaction Control#
SQLJ#
embedded SQL in Java
- host language 宿主语言
- EXEC SQL语句来标记嵌入 SQL- EXEC SQL <embedded SQL statement>
Embedded SQL#
omitted
Functions and Procedures#
Functions#
| function | |
|---|---|
- db 支持表函数,返回的是 relation
Procedures#
| procedure | |
|---|---|