• 第三十七章 持久对象和SQL


    第三十七章 持久对象和SQL

    简介

    IRIS 是一个与面向对象编程语言相结合的多模型数据平台。因此,可以编写灵活的代码来执行以下所有操作:

    • 通过 SQL 执行批量插入数据。
    • 打开一个对象,对其进行修改并保存,从而无需使用 SQL 即可更改一个或多个表中的数据。
    • 创建并保存新对象,将行添加到一个或多个表中,而无需使用 SQL
    • 使用 SQL 从记录中检索与给定条件匹配的值,而不是迭代大量对象。
    • 删除对象,即在不使用 SQL 的情况下从一个或多个表中删除记录。

    也就是说,可以随时选择适合需要的访问模式。

    在内部,所有访问都是通过直接Global访问完成的,也可以在适当的时候以这种方式访问的数据。 (如果有类定义,则不建议使用直接Global访问来更改数据。

    SQL

    还可以直接在 SQL Shell(在终端中)和管理门户中执行 SQL。其中每个都包含一个用于查看查询计划的选项,它可以帮助确定提高查询效率的方法。

    SQL 支持完整的入门级 SQL-92 标准,但有一些例外和一些特殊扩展。 SQL 还支持索引、触发器、BLOB 和存储过程(这些是典型的 RDBMS 功能,但不是 SQL-92 标准的一部分)。

    ObjectScript 使用 SQL

    可以使用以下一种或两种方式从 ObjectScript 执行 SQL

    动态 SQL%SQL.Statement%SQL.StatementResult 类),如下例所示:

     SET myquery = "SELECT TOP 5 Name, DOB FROM Sample.Person"
     SET tStatement = ##class(%SQL.Statement).%New()
     SET tStatus = tStatement.%Prepare(myquery)
     SET rset = tStatement.%Execute()
     DO rset.%Display()
     WRITE !,"End of data"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    可以在 ObjectScript 方法和例程中使用动态 SQL

    • 嵌入式SQL,如下例所示:
     &sql(SELECT COUNT(*) INTO :myvar FROM Sample.Person)
        IF SQLCODE<0 {WRITE "SQLCODE error ",SQLCODE," ",%msg  QUIT}
        ELSEIF SQLCODE=100 {WRITE "Query returns no results"  QUIT}
     WRITE myvar
    
    • 1
    • 2
    • 3
    • 4

    可以在 ObjectScript 方法和例程中使用嵌入式 SQL

    Python 使用 SQL

    可以使用以下一种或两种方式从 Python 执行 SQL

    • 可以直接执行SQL查询,如下例所示:
    import iris
    rset = iris.sql.exec("SELECT TOP 5 Name, DOB FROM Sample.Person") 
    for row in rset:
        print(row)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    也可以先准备 SQL 查询,然后执行它,如下例所示:

    import iris
    statement = iris.sql.prepare("SELECT TOP 5 Name, DOB FROM Sample.Person")
    rset = statement.execute()
    for row in rset:
        print(row)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    可以使用这两种方法之一在 Python 终端或 Python 方法中执行 SQL 查询。

    SQL 的对象扩展

    为了更轻松地在对象应用程序中使用 SQLIRIS 包含了许多 SQL 对象扩展。

    这些扩展中最有趣的功能之一是能够使用隐式连接运算符 (–>)(有时称为“箭头语法”)跟踪对象引用。例如,假设有一个 Vendor 类,它引用另外两个类:ContactRegion。可以使用隐式连接运算符引用相关类的属性:

    SELECT ID,Name,ContactInfo->Name
    FROM Vendor
    WHERE Vendor->Region->Name = 'Antarctica'
    
    • 1
    • 2
    • 3

    当然,也可以使用 SQL JOIN 语法表达相同的查询。隐式连接运算符语法的优点是简洁,一目了然。

  • 相关阅读:
    怎样提升小程序日活?签到抽奖可行吗?
    如何在内网中通过docker部署gitlab
    Spring Cloud 综述
    Java编码与解码
    C# 任务调度 c# TaskScheduler
    NVIDIA NCCL 源码学习(十一)- ring allreduce
    Linux 基础-文件及目录管理
    分布式数据中心网络互联技术实现
    ES6学习
    字符串左旋 与 字符串旋转结果
  • 原文地址:https://blog.csdn.net/yaoxin521123/article/details/133265027