ABFrame系统设计开发规范
WHERE B.DEPTNO = A.DEPTNO
GROUP BY B.DEPTNAME, B.DEPTNO HAVING EMPTNOCOUNT >2;
SELECT MOVIE_NAME, RATING, LENGTH FROM MOVIES
WHERE (RATING, LENGTH) IN (SELECT RATING, MAX(LENGTH) FROM MOVIES
GROUP BY RATING);
有关联表的SELECT语句
对于从几个表中取数据,要注意表与表之间的正确关联。是内部连接还是外部连接,以免造成选取数据的遗漏。
内部连接,是两个表中的字段进行一一对应,如果在B表中找不 到A表中的相应字段,则A表中的这条记录也不会被选取出来。
外部连接,有左连接和右连接两种。A表左连接B表,即相当于B表右连接A表。此时,A表是主表,A表中所有符合条件的记录都应被选取出来,即使在B表中找不到相应字段,则只是该选取字段为NULL而已。
关于外部连接,不同数据库的语法稍有不同。见下例:
EMPLOYEES表为主表,需根据DEPTNO从DEPARTMENTS表中取得DEPTNAME ? DB为DB2时:
SELECT A.DEPTNO, A.EMPTNO, B.DEPTNAME FROM EMPLOYEES A LEFT OUTER JOIN DEPARTMENTS B ON A.DEPTNO = B.DEPTNO
? DB为SQL SERVER时:
SELECT A.DEPTNO, A.EMPTNO, B.DEPTNAME FROM EMPLOYEES A LEFT JOIN DEPARTMENTS B ON A.DEPTNO = B.DEPTNO
? DB为ORACLE时:
SELECT A.DEPTNO, A.EMPTNO, B.DEPTNAME FROM EMPLOYEES A , DEPARTMENTS B WHERE A.DEPTNO = B.DEPTNO(+)
6.4.4.高效的SELECT语句
? 将最小的表放在最后。
? 将最具限制性的条件放在最后。
? 避免在查询中使用函数,特别是在查询中含有被设为索引的列时更是如此,这会使索
引失效。
? 避免在LIKE函数的起始处使用通配符。 ? 不要使用过多的子查询。 ? 不要请求太多的列。 ? 不要请求太多的行。
共61页 第21页
ABFrame系统设计开发规范
6.4.5.在程序中嵌入SQL语句时要注意的问题
? ? ? ? ? ? ?
由于在程序中嵌入的SQL语句可能非常大,应该及时将字符串变量赋空,以回收资源。 如无特殊需要,程序中应只建一个连接。
如果使用的是远程数据库,应仔细考虑失败时的处理。 字符串变量加入SQL语句时,单引号必须加上。 在调试窗口打印出最终或重要的SQL语句。 当数据库对象不需要时,及时释放。
写较长的SQL文,尽量用字符串拼接,这样SQL文可以按子句分行,可加注释,便于以后的维护。
7. 构件设计开发规范
7.1. 命名规范
EOS6中以构件包为复用的基本对象,构件包中包含包、组合构件、逻辑构件、Java构件、运算逻辑、页面流、数据集、命名Sql集、工作流逻辑、页面资源、配置信息等概念,项目资源树如下图所示(蓝色字体及带框的节点属于开发人员自定义的,黑色字体属于开发工具产生的节点。): 图一:项目主目录结构:(此目录结构在LA2后将有变化)
共61页 第22页
ABFrame系统设计开发规范
说明:
1、 一个项目可以包含多个构件包
2、 每个构件包通过“分类浏览”方式浏览,可以看到包含的系统级的目录包括
构件装配、构件实现、运算逻辑、页面流、工作流、数据(数据模型、命名Sql)、页面资源、Java、配置信息、WEB。
图二:项目详细目录结构(分上下两部分)
共61页 第23页
ABFrame系统设计开发规范
共61页 第24页
ABFrame系统设计开发规范
说明:
创建构件包时,将产生一个与构件包同名的“包”,因此,在构件装配、构件实现、页面流、数据模型等目录下创建相应资源时,都缺省挂在了这个“包”下(上图没有显示“包”)
以下针对上面涉及的概念定义相应的命名规范。
共61页 第25页