informix之一

load from 文件名 insert into table_name;
unload to 文件名 select ... from table_name;


模糊匹配:where 某字段 matches ‘[A-Z]’是A—Z,但[AZ]是A或Z
 

在select语句后加入into temp子句可以将查询结果保存在临时表,后接表名
在创建临时表的应用程序或一次SQL会话结束,临时表自动删除
使用临时表的目的:反复使用查询到的结果


union会自动过滤重复的行


利用存储过程将一部分代码保存在服务器中,可以减轻网络负载,从而提高系统性能,
创建存储过程用create or replace proceduce 语句。
存储过程的相关信息保存在系统目录表SysProcedures。
存储过程的授权情况保存在sysprocauth表。



导出数据库中的所有对象(包含表,存储过程,触发器。。。)到文件db_createsql
    dbschema -d db_name db_create.sql
导出一个存储过程定义到文件db.sql
    dbschema -d db_name -f procedure_name procedure.sql


Informix 进程隔离级(isolation level)
隔离级是指并发执行相同操作的进程相互隔离的程度。
OnLine通过设定进程在读操作时上锁的不同规则而提供了四种隔离级:
Dirty Read(脏读)隔离、Committed Read(提交后读)隔离、Cursor Stability(游标固定)隔离和Repeatable Read(可重复读)隔离。
    1、Dirty Read(脏读)隔离
    Dirty Read是最简单的隔离级,类同于无隔离级当进程在读数据据时并不对所读的数据上锁,也不管其他进程上没上锁或在做什么。
    可能读到未提交(commited)的记录,可能读到最后被回滚的记录,该记录是一个phantom。 在一些查询中,使用此隔离级别,可提高效率。因为不受其他进程锁表,锁记录的影响。
    2、Committed Read(提交后读)隔离(缺省的隔离级别)
    当进程请求Committed Read隔离级时,OnLine保证进程得到的数据不是数据库未提交的数据即此时没有其他进程在对这些数据做修改。
    读到的数据均为提交后的数据。两个进程可同时update同一条记录。
    3、Cursor Stability(游标固定)隔离
    当进程使用Cursor Stability隔离级时,OnLine对进程最后获取的一行数据上锁,对普通的游标上一个共享锁,而对修改游标一个升级锁(更新锁)。
    当隔离级别设置为cursor stability 时,在某一游标内,当前记录不能被其他的进程update,delete ,但游标内其他的记录可被其他进程update ,delete。
    4、Repeatable Read(可重复读)隔离
    Repeatable Read隔离级请求数据库服务器对进程读到的每一行数据都加锁为普通的游标加上共享锁而为修改游标上更新锁这些锁直到游标关闭或事务结束时才释放。
    Repeatable Read允许用户使用滚动游标对所选择的数据多次读取并保证这些数据没有被修改或被删除。
    当隔离级别设置为repeatable read 时,在某一游标内有两种情况
        a.该游标的where 子句有索引,则满足条件的所有记录均不能被其他进程update ,delete。(该索引的搜索树的所有节点)
        b.该游标的where 子句不在索引上,则该表的所有记录均不能被其他进程 update,delete 。
        所以,当使用repeatable read 时,最好有索引,否则相当于锁表,极大损害系统效率。

用户设置隔离级的方法是用“Set Isolation To isolationlevel”SQL语句,其中isolationlevel是Dirty Read、Committed Read、Cursor Stability和Repeatable Read之一。




数据导入:    

第一步:编写导入脚本(load.sql)
load from table1.txt DELIMITER '|' INSERT INTO table1;
load from table2.txt DELIMITER '|' INSERT INTO table2;

第二步:
在dbaccess工具环境下直接输入 dbaccess gdxy < load.sql、


数据导出:
单个表格导出:unload to fileName.txt select * from table_name

关键字: dbschema工具:
1)导出数据库中所有的表结构到文件db.sql
  $>dbschema -d your_database -t all db.sql
2)导出数据库中所有的存储过程到文件db.sql
  $>dbschema -d your_database -f all  db.sql
3)导出数据库中的所有对象(包含表,存储过程,触发器。。。)到文件db.sql
  $>dbschema -d your_database db.sql
4)导出数据库中一个表的结构到文件db.sql
  $>dbschema -d your_database_name -t your_table_name db.sql
5)导出一个存储过程定义到文件db.sql
  $>dbschema -d your_database_name -f your_procedure_name  db.sql
6)如果导出更多的表的信息(EXTENT...)
  $>dbschema -d your_database_name -ss db.sql
7)导出数据库中对用户或角色的授权信息
  $>dbschema -d your_database_name -p all
  $>dbschema -d your_database_name -r all
8)导出数据库中的同义词
  $>dbschema -d your_database_name -s all

导出数据库表结构:
dbschema -d database > database.sql
dbschema -t tablename >tablename.sql
-d表示导出整个数据库的表结构,-t表示导出某一个数据表的表结构。

你可能感兴趣的:(informix之一)