博客
关于我
【数据库系统概念】第5章 高级SQL 知识总结
阅读量:393 次
发布时间:2019-03-05

本文共 3046 字,大约阅读时间需要 10 分钟。

《系统概念》第5章知识点总结

高级SQL

本章主要介绍了如何利用通用程序设计语言访问SQL,以及触发器等高级功能。

JDBC

JDBC(Java Database Connectivity)定义了Java程序连接数据库服务器的标准API。其核心操作包括:

  • 打开数据库连接
  • 执行SQL语句或查询
  • 处理查询结果
  • 关闭数据库连接
  • Java程序需要引用java.sql.*包中的接口,实现数据库访问。以下是一个JDBC连接数据库的示例代码:

    public static void JDBCexample(String userid, String passwd) {    try {        Class.forName("oracle.jdbc.driver.OracleDriver");        Connection conn = DriverManager.getConnection(            "jdbc:oracle:thin:@db.yale.edu:1521:univdb",            userid, passwd        );        Statement stmt = conn.createStatement();        try {            stmt.executeUpdate("insert into instructor values('77987','Kim','Physics',98000)");        } catch (SQLException sqle) {            System.out.println("Could not insert tuple." + sqle);        }        ResultSet rset = stmt.executeQuery(            "select dept_name, avg(salary) from instructor group by dept_name"        );        while (rset.next()) {            System.out.println(                rset.getString("dept_name") + " " + rset.getFloat(2)            );        }        stmt.close();        conn.close();    } catch (Exception sqle) {        System.out.println("Exception:" + sqle);    }}
    JDBC驱动程序

    在JDBC程序中,首先需要加载相应的数据库驱动。例如,使用Oracle数据库时,可以使用以下代码加载驱动:

    Class.forName("oracle.jdbc.driver.OracleDriver");

    驱动程序通常提供于数据库厂商,需要将其添加到Java类路径中。

    连接数据库

    通过DriverManager.getConnection()方法建立数据库连接。连接字符串格式为:

    jdbc:oracle:thin:@db.yale.edu:1521:univdb

    参数说明:

  • db.yale.edu:数据库所在的服务器地址
  • 1521:数据库通信的端口号
  • univdb:指定使用的数据库名称
  • userid:数据库用户标识
  • passwd:数据库密码
  • 执行SQL语句

    通过Statement类执行SQL语句。executeUpdate()用于执行插入、更新、删除等语句,executeQuery()用于执行查询语句。

    处理结果集

    ResultSet对象用于处理查询结果。通过next()方法逐行读取结果,并使用getString()getFloat()等方法获取字段值。

    关闭资源

    确保在完成数据库操作后关闭StatementConnection,释放数据库资源。未关闭的连接可能导致连接限制被触发。

    预备语句

    通过?符号在SQL语句中表示未知值,支持动态参数化查询。例如:

    update teacher_info ?_salsary = 1000;

    预备语句在执行复杂查询时特别有优势。

    元数据支持

    ResultSetMetaData对象提供了关于查询结果的元数据信息,如字段数量、字段名称、字段类型等。即使不知道数据库 schema,也能通过元数据获取所需信息。

    ODBC

    ODBC(Open Database Connectivity)是另一种数据库访问API,主要用于C语言程序与数据库连接。其核心操作包括:

  • 打开数据库连接
  • 执行SQL语句
  • 提取查询结果
  • 绑定C语言变量与查询结果
  • 嵌入式SQL

    嵌入式SQL允许在宿主语言(如C、Java)中直接嵌入SQL语句。SQL语句前需添加EXEC SQL关键字。例如:

    EXEC SQL insert into teacher values('李明', '数学', 35);
    游标操作

    在嵌入式SQL中,通过声明游标(declare cursor)获取结果集。例如:

    declare c cursor for select id, name from student;open c;fetch c into si, sn; -- si和sn分别存储id和nameclose c;

    fetch语句用于读取结果集中的元组,close语句用于释放游标。

    更新操作

    通过游标可以对数据库关系进行更新。例如:

    declare c cursor for select id from teacher;open c;fetch c into tid;update teacher set salary = salary + 100 where id = tid;close c;

    此方法适用于批量更新。

    函数和过程

    SQL支持函数和过程。函数返回结果集,过程可接受输入参数并返回结果。例如:

    create function get_top_students return refcursor;select * from student order by score;open get_top_students;fetch into sid, sname;close get_top_students;

    过程可以接收输入参数并执行动态操作。

    触发器

    触发器是一种自动执行的数据库对象,当数据库发生修改时触发相应操作。常见用途包括约束检查和数据同步。例如:

    create trigger update_grade before insert on takesfor each rowbegin    insert into audit_log values('更新grade', '操作人', get_time());end;

    触发器通过when条件判断触发条件,for each row指定触发方式,begin...end包裹触发逻辑。

    总结

    本章主要介绍了JDBC、ODBC等数据库访问API的使用方法、嵌入式SQL的特点以及触发器的应用场景。这些技术为Java程序与数据库的高效交互提供了重要支持。

    转载地址:http://rrqwz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C享元模式(Flyweight)
    查看>>
    Objective-C以递归的方式实现二叉搜索树算法(附完整源码)
    查看>>
    Objective-C内存管理教程和原理剖析(三)
    查看>>
    Objective-C实现 Greedy Best First Search最佳优先搜索算法(附完整源码)
    查看>>
    Objective-C实现 jugglerSequence杂耍者序列算法 (附完整源码)
    查看>>
    Objective-C实现 lattice path格子路径算法(附完整源码)
    查看>>
    Objective-C实现1000 位斐波那契数算法(附完整源码)
    查看>>
    Objective-C实现2 个数字之间的算术几何平均值算法(附完整源码)
    查看>>
    Objective-C实现2d 表面渲染 3d 点算法(附完整源码)
    查看>>
    Objective-C实现2D变换算法(附完整源码)
    查看>>
    Objective-C实现3n+1猜想(附完整源码)
    查看>>
    Objective-C实现3n+1猜想(附完整源码)
    查看>>
    Objective-C实现9x9乘法表算法(附完整源码)
    查看>>
    Objective-C实现9×9二维数组数独算法(附完整源码)
    查看>>
    Objective-C实现A*(A-Star)算法(附完整源码)
    查看>>
    Objective-C实现A-Star算法(附完整源码)
    查看>>
    Objective-C实现abbreviation缩写算法(附完整源码)
    查看>>
    Objective-C实现ABC人工蜂群算法(附完整源码)
    查看>>
    Objective-C实现activity selection活动选择问题算法(附完整源码)
    查看>>
    Objective-C实现AC算法(Aho-Corasick) 算法(附完整源码)
    查看>>