Informix数据库作为一款历史悠久且性能卓越的关系型数据库管理系统,广泛应用于金融、电信、政府等关键业务领域,掌握其常用命令是数据库管理员和开发人员的基本功,这些命令涵盖了数据库连接、用户管理、表操作、数据查询与维护、备份恢复等多个方面,以下将详细介绍Informix数据库的常用命令及其使用场景。

在开始操作之前,通常需要连接到Informix数据库服务器,常用的连接命令是dbaccess
,它提供了交互式的SQL执行环境,在命令行中输入dbaccess 数据库名称
即可连接到指定的数据库,如果需要连接到远程服务器,可以使用-e
选项指定服务器名,如dbaccess -e 远程服务器名 数据库名称
。onmode
命令用于管理数据库服务器的运行状态,如onmode -m
将服务器切换为单用户模式,onmode -y
关闭服务器,onmode -p
重新启动服务器等,这些命令通常在数据库维护或故障处理时使用。
用户和权限管理是数据库安全的重要环节,创建用户可以使用CREATE USER
语句,例如CREATE USER user_name WITH PASSWORD 'password' IN GROUP group_name;
,授予用户权限则使用GRANT
语句,如GRANT CONNECT, RESOURCE TO user_name;
授予连接和创建对象的权限,GRANT SELECT, INSERT ON table_name TO user_name;
授予对特定表的查询和插入权限,撤销权限使用REVOKE
语句,语法与GRANT
类似,只是将TO
替换为FROM
,查看用户权限可以通过查询系统表sysusers
和sysauth
来实现,例如SELECT * FROM sysusers WHERE username = 'user_name';
。
表操作是数据库应用中最频繁的操作之一,创建表使用CREATE TABLE
语句,需指定表名、列名、数据类型、约束等。CREATE TABLE employee (emp_id INT PRIMARY KEY, emp_name CHAR(50), hire_date DATE, salary DECIMAL(10,2));
,修改表结构可以使用ALTER TABLE
命令,如添加列ALTER TABLE employee ADD COLUMN department CHAR(30);
,修改列数据类型ALTER TABLE employee MODIFY emp_name VARCHAR(60);
,或删除列ALTER TABLE employee DROP COLUMN department;
(注意:Informix对删除列可能有版本限制),删除表则使用DROP TABLE employee;
,此操作不可逆,会删除表及其所有数据,创建索引可以提高查询效率,例如CREATE INDEX idx_emp_name ON employee(emp_name);
,删除索引使用DROP INDEX idx_emp_name;
。
数据查询与维护是核心操作,查询数据最基本的是SELECT
语句,如SELECT * FROM employee WHERE salary > 5000;
,可以使用ORDER BY
排序结果,GROUP BY
进行分组,HAVING
过滤分组结果,插入数据使用INSERT INTO
语句,例如INSERT INTO employee (emp_id, emp_name, hire_date, salary) VALUES (1, 'John Doe', '2023-01-15', 6000.00);
,更新数据使用UPDATE
语句,如UPDATE employee SET salary = 6500.00 WHERE emp_id = 1;
,需注意WHERE
条件的使用,否则会更新所有行,删除数据使用DELETE FROM employee WHERE emp_id = 1;
,同样需要注意WHERE
条件,批量数据导入导出可以使用LOAD
和UNLOAD
命令,例如UNLOAD TO 'employee.unl' SELECT * FROM employee;
将表数据卸载到文件,LOAD FROM 'employee.unl' INSERT INTO employee;
将文件数据加载到表。

数据库备份与恢复是保障数据安全的关键,Informix提供了ontape
和onbar
等工具进行备份。ontape
是基于磁带的备份工具,常用命令包括ontape -s
(开始级别0完全备份)、ontape -a
(开始级别增量备份)、ontape -c
(开始级别0备份并校验)、ontape -r
(恢复模式)。onbar
则是更灵活的基于存储管理器(如IBM TSM)的备份工具,支持在线备份和更细粒度的恢复,逻辑备份可以使用dbexport
和dbimport
工具,dbexport
将数据库或表导出为一系列文本文件,dbimport
则将这些文件导入,常用于数据库迁移或升级,导出整个数据库:dbexport 数据库名称
,导入:dbimport -d 数据库名称 -p /path/to/export
。
数据库性能监控与维护命令同样重要。onstat
是常用的状态查看工具,onstat -
显示所有状态信息摘要,onstat -d
显示空间分配信息,onstat -k
显示锁表信息,onstat -g mem
显示内存使用情况,onstat -g ses
显示会话信息,这些命令有助于诊断性能瓶颈和锁等待问题,日志管理方面,onlog
命令用于查看逻辑日志和物理日志内容,如onlog -l
显示逻辑日志,对于临时表空间,可以使用onspaces
命令管理,如onspaces -c -d dbspace_name -p size -o offset
创建 dbspace,onspaces -d dbspace_name
删除dbspace(需确保为空)。
以下是Informix数据库常用命令的简要总结表格:
命令类别 | 常用命令/语句 | 主要功能描述 |
---|---|---|
连接与服务器管理 | dbaccess | 连接到Informix数据库,执行SQL |
onmode | 管理数据库服务器状态(启动、关闭、切换模式等) | |
用户与权限管理 | CREATE USER | 创建新用户 |
GRANT/REVOKE | 授予/撤销用户权限 | |
表操作 | CREATE TABLE/ALTER TABLE/DROP TABLE | 创建/修改/删除表结构 |
CREATE INDEX/DROP INDEX | 创建/删除索引 | |
数据查询与维护 | SELECT/INSERT/UPDATE/DELETE | 查询/插入/更新/删除数据 |
LOAD/UNLOAD | 从文件加载数据/卸载数据到文件 | |
备份与恢复 | ontape/onbar | 物理备份/恢复(基于磁带或存储管理器) |
dbexport/dbimport | 逻辑导出/导入数据库或表 | |
性能监控与维护 | onstat | 查看数据库服务器运行状态、锁、内存等信息 |
onlog | 查看数据库日志内容 | |
空间管理 | onspaces | 管理dbspace(表空间) |
掌握上述命令并结合实际场景灵活运用,能够有效提升对Informix数据库的管理效率和问题解决能力,在实际操作中,务必注意数据安全,特别是在执行删除、修改结构等高危操作前,应进行充分测试和备份。

相关问答FAQs:
问题1:如何查看Informix数据库中当前所有用户的列表及其所属用户组?
解答: 可以通过查询系统表sysusers
来获取Informix数据库中所有用户的信息,包括用户名和用户组,具体SQL语句如下:
SELECT username, usergroup FROM sysusers;
此语句会返回数据库中所有用户的用户名(username
)和其所属的用户组(usergroup
),如果需要更详细的信息,例如用户的创建时间、密码状态(加密后)等,可以查询sysusers
表的其他列,如usrid
(用户ID)、password
(加密后的密码)、createdate
(创建日期)等。
问题2:在执行Informix数据库LOAD
命令加载数据时,如果目标表已有数据,如何处理?
解答: Informix的LOAD FROM
命令默认情况下会将文件数据追加到目标表中,如果目标表已有数据,新数据会添加在现有数据之后,但如果希望清空目标表后再加载数据,或者需要在加载前进行特定处理,有以下几种方式:
- 手动清空表后加载:在执行
LOAD
命令前,先使用DELETE FROM table_name;
清空目标表数据,然后再执行LOAD FROM file_name INSERT INTO table_name;
,注意:此操作会删除表中所有现有数据,需谨慎使用。 - 使用
LOAD
的-d
选项(部分版本支持):某些版本的InformixLOAD
工具支持-d
或--delete
选项,该选项会在加载数据前自动删除目标表中的所有行。LOAD FROM file_name -d INSERT INTO table_name;
,使用前需确认当前Informix版本是否支持此选项。 - 使用临时表:可以先数据加载到一个临时表,然后通过事务操作将数据从临时表迁移到目标表,例如在迁移前开始事务,删除目标表数据(如果需要),然后从临时表插入,最后提交事务,这种方式提供了更高的灵活性和安全性。
需要注意的是,LOAD
命令是高速的数据加载工具,通常要求目标表的结构与文件数据格式严格匹配,并且在加载过程中会对表加锁,可能影响并发访问。