数据库系统——第十讲 嵌入式SQL语言之动态SQL

数据库系统——第十讲 嵌入式SQL语言之动态SQL

  • 动态SQL的概念和作用
  • SQL语句的动态构造
  • 动态SQL语句的执行方式
  • 数据字典及其作用
    • 数据字典的概念
    • 数据字典的内容构成
  • SQLDA与数据字典的应用
  • ODBC/JDBC简介
    • 什么是ODBC
    • 什么是JDBC
      • JDBC是什么
      • JDBC的功能
      • 应用程序使用JDBC API访问数据库的过程
    • ODBC-JDBC-嵌入式之比较
  • 小结


动态SQL的概念和作用

动态SQL是相对于静态SQL而言的
动态SQL特点:SQL语句可以在程序中动态构造,形成一个字符串,如上例sqltext,然后再交给DBMS执行,交给DBMS执行时仍旧可以传递变量


SQL语句的动态构造

重点与难点:熟练掌握SQL语句的动态构造技巧

  • 示例:
    数据库系统——第十讲 嵌入式SQL语言之动态SQL_第1张图片数据库系统——第十讲 嵌入式SQL语言之动态SQL_第2张图片
    数据库系统——第十讲 嵌入式SQL语言之动态SQL_第3张图片
    数据库系统——第十讲 嵌入式SQL语言之动态SQL_第4张图片
    数据库系统——第十讲 嵌入式SQL语言之动态SQL_第5张图片
    数据库系统——第十讲 嵌入式SQL语言之动态SQL_第6张图片

动态SQL语句的执行方式

动态SQL的两种执行方式:

  1. 立即执行语句: 运行时编译并执行
    EXEC SQL EXECUTE IMMEDIATE :host-variable
  2. Prepare-Execute-Using语句:PREPARE语句先编译,编译后的SQL语句允许动态参数,EXECUTE语句执行,用USING语句将动态参数值传送给编译好的SQL语句
    EXEC SQL PREPARE sql_temp FROM :host-variable;
    … …
    EXEC SQL EXECUTE sql_temp USING :cond-variable

数据字典及其作用

重点与难点:了解数据字典的作用,掌握其使用技巧

数据字典的概念

数据字典(Data dictionary),又称为系统目录(System Catalogs)
是系统维护的一些表或视图的集合,这些表或视图存储了数据库中各类对象的定义信息,这些对象包括用Create语句定义的表、列、索引、视图、权限、约束等,这些信息又称数据库的元数据–关于数据的数据。
不同DBMS术语不一样:数据字典(DataDictionary(Oracle))、目录表(DB2UDB)、系统目录(INFORMIX)、系统视图(X/Open)
不同DBMS中系统目录存储方式可能是不同的,但会有一些信息对DBA公开。这些公开的信息,DBA可以使用一些特殊的SQL命令来检索。

数据字典的内容构成

数据字典通常存储的是数据库和表的元数据,即模式本身的信息:

  1. 与关系相关的信息
  2. 用户与账户信息,包括密码
  3. 统计与描述性数据
  4. 物理文件组织信息
  5. 索引相关的信息

SQLDA与数据字典的应用

数据库系统——第十讲 嵌入式SQL语言之动态SQL_第7张图片


ODBC/JDBC简介

重点与难点:理解ODBC/JDBC的工作原理

什么是ODBC

ODBC:Open DataBase Connection
ODBC是一种标准—不同语言的应用程序与不同数据库服务器之间通讯的标准。
一组API(应用程序接口),支持应用程序与数据库服务器的交互
应用程序通过调用ODBC API, 实现与数据服务器的连接、向数据库服务器发送SQL命令、一条一条的提取数据库检索结果中的元组传递给应用程序的变量
具体的DBMS提供一套驱动程序,即Driver库函数,供ODBC调用,以便实现数据库与应用程序的连接。
ODBC可以配合很多高级语言来使用,如C,C++, C#, Visual Basic, Power-Builder等等

  • 应用程序如何通过ODBC连接一个数据库服务器?
    数据库系统——第十讲 嵌入式SQL语言之动态SQL_第8张图片
  • 应用程序如何通过ODBC与数据库服务器进行通讯?
    数据库系统——第十讲 嵌入式SQL语言之动态SQL_第9张图片

什么是JDBC

JDBC是什么

JDBC:Java DataBase Connection
JDBC是一组Java版的应用程序接口API,提供了Java应用程序与数据库服务器的连接和通讯能力。
JDBCAPI分成两个程序包:
Java.sql 核心API --J2SE(Java2标准版)的一部分。使用java.sql.DriverManager类、java.sql.Driver和java.sql.Connection接口连接到数据库
Javax.sql 可选扩展API–J2EE(Java2企业版)的一部分。包含了基于JNDI(JavaNamingandDirectoryInterface,Java命名和目录接口)的资源,以及管理连接池、分布式事务等,使用DataSource接口连接到数据库。

JDBC的功能

数据库系统——第十讲 嵌入式SQL语言之动态SQL_第10张图片

应用程序使用JDBC API访问数据库的过程

  • 概念性的基本过程
    打开一个连接;创建“Statement”对象,并设置查询语句;使用Statement对象执行查询,发送查询给数据库服务器和返回结果给应用程序;处理错误的例外机制
  • 具体实施过程
    传递一个Driver给DriverManager,加载数据库驱动。
    Class.forName()
    通过URL得到一个Connection对象, 建立数据库连接
    DriverManager.getConnection(sDBUrl)
    •DriverManager.getConnection(sDBUrl,sDBUserID,sDBPassword)

    接着创建一个Statement对象(PreparedStatement或CallableStatement),用来查询或者修改数据库。
    Statement stmt=con.createStatement()
    查询返回一个ResultSet。
    ResultSet rs=stmt.executeQuery(sSQL)

ODBC-JDBC-嵌入式之比较

(1)嵌入式SQL的思维模式
数据库系统——第十讲 嵌入式SQL语言之动态SQL_第11张图片

(2)ODBC的思维模式
数据库系统——第十讲 嵌入式SQL语言之动态SQL_第12张图片

(3)JDBC的思维模式
数据库系统——第十讲 嵌入式SQL语言之动态SQL_第13张图片

(4)基于ODBC/JDBC的数据库访问
数据库系统——第十讲 嵌入式SQL语言之动态SQL_第14张图片


小结

数据库系统——第十讲 嵌入式SQL语言之动态SQL_第15张图片

你可能感兴趣的:(sql,数据库,dba)