INFORMIX-4GL 知识汇总.txt

INFORMIX-4GL常用的定义变量 的基本数据类型;
CHAR         DECIMAL   SMALLINT   INTEGER
SMALLFLOAT   FLOAT     DATE       MONEY     SERIAL
DECIMAL      小数类型  DECIMAl(6,2)  2位小数 共6位
DECIMAl(6)   浮动小数点的数据类型 有效位为6位。绝对值在 10(-128)到10(126)之间
DECIMAl      默认为 DECIMAl(16)  
SMALLINT     短整型  -32767 到 +32767   2 个字节  
INTEGER      整数类型  4个字节
SMALLFLOAT   单精度浮点型   相当于 c语言中的float 数据类型,占4个字节
FLOAT        双精度浮点型 8个字节
DATE         缺省月日 年
MONEY(m,n)   m 有效数字位数 n 小数点后数字位数。 缺省n 隐含n=2.缺省m,隐含m=16   
::序列型 SERIAL 取正整数  占4个字节最大值 2147483647  自动赋值,不能修改.依次递增 从1开始.  SERIAL(100) 100 开始.  
::记录型数据结构
DEFINE rd01 RECORD
x,y,z INTEGER
  END RECORD
DEFINE rd02 RECORD
name CHAR(8),
age SMALLINT,
wage SMALLFLOAT
  END RECORD
-------------------------
display "第四代语言关系数据库系统" at 10,10
message "第四代语言关系数据库系统"
error "第四代语言关系数据库系统"
程序的调试运行
$ fglpc prg1       $ fglpc prg1.4gl
fglpc编译源文件(.4gl) |- 成功 -> P-代码文件(.4go)    ->  fglgo 执行
                      |- 失败 -> 错误信息文件(.err)
------------------------
fglpc md1
fglpc md2
fglpc md3
cat md1.4go md2.4go md3.4go > md.4gi
fglgo md
----------------------------
########数据库管理#########################
数据库访问权限(3种): CONNECT RESCOURCE DBA
DATABASE dbn   
GRANT CONNECT TO user1
GRANT RESOURCE TO user1,user2 
GRANT CONNECT TO PUBLIC   #所有用户
撤销权限:
REVOKE RESOURCE FROM user1
REVOKE DBA FROM user1,user2
表访问权限(7种):  SELECT INSERT UPDATE DELETE INDEX ALTER ALL
GRANT SELECT ON tbn TO PUBLIC
GRANT SELECT(a1,a2) ON tbn TO user1,user2
GRANT ALTER ON tbn TO user1
WITH GRANT OPTION       授权同时可传递
数据库结构修改:
DROP TABLE XX
RENAME TABLE tbn TO ntbn 重命名表
CLOSE DATABASE dbn  
DROP DATABASE dbn   # 删除数据库之前先关闭    
LET x="dbn"     DROP DATABASE x 删除数据库  
RENAME COLUMN tbn.a1 TO b1 修改列名 
ALTER TABLE tbn ADD(a1 CHAR(4),a2 INTEGER) 增加列名 
ALTER TABLE tbn ADD(b1 SMALLINT BEFORE a3) 增加一个新列b1,位于tbn中原有列a3之前  
ALTER TABLE tbn DROP(a1,a2)
ALTER TABLE tbn MODIFY(a1 CHAR(8),a2 INTEGER) 修改列的数据类型
CREATE VIEW vn4(c1,c2,c3)
AS SELECT tb1.a1,tb1.a2,tb2.a1 FROM tb1,tb2
WHERE tb1.a2=tb2.a2
CREATE VIEW vnx(b1,b2,b3,b4,b5,b6)
AS SELECT c1,c3,SUM(c2),MAX(c2),MIN(c2),COUNT(*)
FROM vn4
WHERE c2<2000
DROP VIEW vnx
   视图:不能含ORDER BY 子句;  不能含UNION操作符;  不能含程序变量
数据库日志文件
CREATE DATABASE dbn WITH LOG IN "usr/swc/logf"
START DATABASE dbn WITHLOG IN "usr/swc/logf" 建立历史文件
BEGIN WORK 事务开始
COMMIT WORK
ROLLBACK WORK
检查全程变量SQLCA 获知该语句执行的成败


预定义的常量 TRUE=1 FALSE=0 NOTFOUND=100


EXIT PROGRAM  # 立即终止程序的运行
RETURN  # 终止函数的运行


c语言程序的编译
cfglgo fgiusr.c cfunf.c -o newfglgo       生成可执行文件newfglgo


RDSQL
1数据定义 2数据操纵 3权限控制 4光标操作 5数据封锁控制 6动态语句管理
1
CREATE DATABASE 
DATABASE
CLOSE DATABASE
DROP DATABASE
CREATE TABLE
ALTER TABLE
RENAME TABLE
DROP TABLE
CREATE VIEW
DROP VIEW
CREATE SYNONYM  [CREATE SYNONYM x FOR mytable   建立同义名x.对x的访问就是对mytable 的访问]
DROP SYNONYM
RENAME COLUMN
CREATE INDEX
ALTER INDEX
DROP INDEX
UPDATE STATISTICS [FOR TABLE T]  --更新系统表 表T中当前所含有的数据行数记录到系统表 systables 上 
CREATE INDEX idx22 ON T(a1)
ALTER INDEX idx22 TO CLUSTER       物理上按照a1的升序存储表t中的数据行. 
ALTER INDEX idx22 TO NOT CLUSTER       
==  CREATE CLUSTER INDEX idx22 ON T(a1)
2.INSERT SELECT UPDATE DELETE
3.GRANT REVOKE
4.对SELECT语句选出的多个数据行进行处理
DECLARE -- FOREACH -- OPEN -- FETCH -- CLOSE
向表中插入数据行的过程'
DECLARE -- OPEN -- FLUSH -- CLOSE   
DECLARE mc22 CURSOR FOR INSERT INTO T(a1,a2) VALUES (x,y)
全程变量 status 和 SQLCA.SQLERRD[3]  可判断操作的成败.
3种情况:
1)status = 0     SQLCA.SQLERRD[3] = 0           --RDSQL成功地把数据行存放到内存缓冲区,但没有插入到磁盘上的表中
2)status = 0     SQLCA.SQLERRD[3] = 已插入的行数      --RDSQL成功把内存缓冲区中所有数据行组成的数据块插入到磁盘上的表中
3)status < 0     SQLCA.SQLERRD[3] = 已成功插入的行数  --RDSQL在欲把内存缓冲区中的数据块写到磁盘上时,出现异常
5.LOCK TABLE   UNLOCK TABLE   SET LOCK MODE
6. 管理动态可变语句的语句:   PREPARE  EXECUTE  DECLARE
--临时表 TEMP
SELECT .,. FROM T1 WHERE [条件] INTO TEMP tmp_T1
--UNION ALL  并操作不把两张表中重复的行从新的结果表中删去.
--NULL 空值-空值不是零,也不是空格,表示未知和不确定.
隐藏列 ROWID SQLCA.SQLERRD[6]=最后一个数据行的ROWID值
SELECT ROWID,* FROM T1   
---------------END--------------------------
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值