温馨提示×

Linux Informix视图创建和使用方法

小樊
47
2026-01-03 12:19:54
栏目: 智能运维

Linux 下 Informix 视图创建与使用

一 环境准备与连接

  • 配置环境变量(示例):
    • 设置 INFORMIXDIRINFORMIXSERVERONCONFIGINFORMIXSQLHOSTS,并把 $INFORMIXDIR/bin 加入 PATH
  • 连接与建库示例(命令行交互):
    • 使用 dbaccess 连接并建库:
      dbaccess -e <<'EOF'
      CREATE DATABASE testdb WITH BUFFERPOOL BP8K, LOG;
      CONNECT TO testdb;
      EOF
      
    • 也可直接用 dbaccess 进入交互菜单选择数据库后执行 SQL。

二 创建与修改视图

  • 基本语法:
    • 最简形式:
      CREATE VIEW view_name AS
      SELECT column1, column2, ...
      FROM table_name
      WHERE condition;
      
    • 显式指定视图列名(推荐在复杂查询或多表连接时使用):
      CREATE VIEW view_name (col1_alias, col2_alias, ...) AS
      SELECT c1, c2, ...
      FROM t1 JOIN t2 ON ...
      WHERE ...;
      
  • 修改视图:
    • 使用 CREATE OR REPLACE VIEW 替换定义(Informix 支持该语法):
      CREATE OR REPLACE VIEW view_name AS
      SELECT ... -- 新的查询定义
      
  • 删除视图:
    DROP VIEW view_name;
    
  • 示例(单表):
    CREATE VIEW emp_view AS
    SELECT emp_id, emp_name, salary
    FROM employees
    WHERE salary > 0;
    
  • 示例(多表 + 显式列名):
    CREATE VIEW emp_dept_view (first_name, last_name, dept_name) AS
    SELECT e.first_name, e.last_name, d.dept_name
    FROM employees e
    JOIN departments d ON e.dept_id = d.dept_id;
    
  • 使用要点:
    • 视图是虚拟表,查询视图与查询普通表一致(如:SELECT * FROM emp_view;)。
    • 创建者需具备相应权限;视图定义中的查询不应违反安全策略。

三 查询与权限控制

  • 查询视图:
    SELECT * FROM emp_view WHERE salary > 5000;
    
  • 权限管理:
    • 通过 GRANT/REVOKE 授予或回收对视图的 SELECT 等权限(与表权限一致):
      GRANT SELECT ON emp_view TO analytics_user;
      REVOKE SELECT ON emp_view FROM analytics_user;
      
    • 视图的权限检查遵循基表权限与视图定义的安全策略。

四 查看与维护视图定义

  • 查询系统目录查看视图与定义片段:
    • systables 中识别视图(tabtype=‘V’),通过 sysviews.viewtext 查看定义(按 seqno 排序拼接):
      -- 1) 先找到视图的 tabid
      SELECT tabid, tabname, tabtype
      FROM systables
      WHERE tabname = 'EMP_DEPT_VIEW';
      
      -- 2) 再按 tabid 查看视图文本(可能分多行)
      SELECT seqno, viewtext
      FROM sysviews
      WHERE tabid = :view_tabid
      ORDER BY seqno;
      
    • 提示:也可使用 dbschema 工具导出对象 DDL,便于审阅与迁移。
  • 性能与维护建议:
    • 视图性能取决于基表结构与查询复杂度;必要时为参与 JOIN/WHERE/ORDER BY 的列建立合适索引,并定期执行 UPDATE STATISTICS 提升执行计划质量。
    • 避免在视图定义中使用过多 OR,可用 INUNION 改写以利用索引;复杂查询可先 INTO TEMP 再处理以减少排序/连接开销。

0