E-SQL
Posted love-life-insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了E-SQL相关的知识,希望对你有一定的参考价值。
E-SQL
1.学会用嵌入式SQL对数据库进行增、删、改、查操作。
2.多行查询使用游标和STATE
3.SQL事物操作
4. 集群和模式
1:以SQL嵌入C语言为例说明实现嵌入式SQL的方法
1.1声明:通信的变量就是SQL与C语言进行数据传递
C语言和SQL语言之间是通过共享变量来进行数据的传送。
(1)EXEC SQL BEGIN DECLARE SECTION;
char name[20];
Int age;
char sex[4];
EXEC SQL END DECLARE SECTION;
(2)声明使用共享变量
嵌入式SQL在执行的时候需要在前面添加EXEC SQL
插入语句:inset into table_name(,,,)values(:xx,:ss)
插入语句的格式为:
EXEC SQL INSERT
INTO Student (id, name)
VALUES (:s_id, :s_name); :后面的变量需要在开始的时候进行声明。
1.2、执行SQL
插入语句:
插入语句的格式为:
EXEC SQL INSERT
INTO Student (StudentNo, StudentName)
VALUES (:sno, :sname);
修改语句:
修改语句的格式为:
update table_name set age = 12 where Id = 12
EXEC SQL UPDATE Student
SET(name=:s_name, age=:s_age) WHERE id=:s_id;
删除语句:
删除语句的格式为:
delete from table_name where id = s_id
EXEC SQL DELETE
FROM student
WHERE id= ( select id FROM Student WHERE name=:s_name );
查询语句:
当查询的结果只有一个元组时,
EXEC SQL
SELECT status,date INTO :qstatus,:qdate
FROM Student WHERE id=:s_id;
2:游标的使用
(1) 查询多个数据的时候需要使用游标进行查询
(2) 经常配合循环使用来获取多个数据
2.1:游标的声明:
EXEC SQL DECLARE <游标名> CURSOR FOR
SELECT …FROM…WHERE…;
示例:ECEX SQL DECLARE RC_QRY CURSOR FOR SELECT
l From STUDENT WHERE ID =:s_id
2.2:打开游标
在打开游标时,执行与游标相联系的SQL查询语句。此时游标处于打开状态,游标指向第一个元组之前。
EXEC SQL OPEN <游标名>
2.3移动游标
EXEC SQL FETCH <游标名> INTO <变量表> 移动赋值给共享变量
2.4关闭游标
EXEC SQL CLOSE <游标名>;
3: SQL中的事务
数据库操作的某些组合需要以原子的方式完成,也就是说,它们或者都做,或者都不做。
一个通常的解决方式是让对数据库的所有改变在本地的工作区完成,并且只有当所有的工作完成以后才把这种改变提交给数据库。
例如:银行转账 A卡转B卡 A卡扣钱后同时要更新B卡的数量当且两个数据都更新成功之后才能提交数据。这就是事务,只是例子实际也许不这么操作。
EXEC SQL ROLLBACK; //数据失败
EXEC SQL COMMIT ; //数据提交
4: SQL集群
模式(Schema):是指数据库模式,而不是关系模式,是表、视图、域等数据库元素的聚集。模式是整个体系结构的基本单位。
Create table st.trichsuvn //表示在st这个模式下创建trichsuvn这个表.
创建模式:CREATE SCHEMA StudentSchema
切换模式: SET SCHEMA StudentSchema;
目录(Catalog):是模式的聚集,即每个目录都有一个或多个模式。在一个目录中模式的名字必须是唯一的。
在目录中建立模式类似于在模式中建立表或视图之类的模式元素。可以设想用如下语句建立学生目录:
CREATE CATALOG StudentCatalog
SET CATALOG StudentCatalog;
群集(Cluster):是目录的聚集。每个用户都有相关的群集,也就是该用户可以访问的所有目录的集合。群集是数据库可以操作的最大范围,因此,对于特定的用户,群集就是“数据库”。
以上是关于E-SQL的主要内容,如果未能解决你的问题,请参考以下文章