1.对于满足SQL92标准的SQL语句:SELECT foo,count(foo) FROM pokes WHERE foo>10 GROUP BY foo HAVING ORDER BY foo,其执行的顺序应该为( )
FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY
解析:
标准的 SQL 的解析顺序为:
(1).FROM 子句, 组装来自不同数据源的数据 (2).WHERE 子句, 基于指定的条件对记录进行筛选 (3).GROUP BY 子句, 将数据划分为多个分组 (4).使用聚合函数进行计算 (5).使用 HAVING 子句筛选分组 (6).计算Select所有的表达式 (7).使用 ORDER BY 对结果集进行排序
也可以按照基本逻辑思路来理解:一步步缩减范围,再在所选范围中计算结果,处理计算出的结果。
1,先确定大范围,选择表,也即是from;
2,再一步步缩减范围,从表中确定符合条件的范围,用where,再group by,再having;
3,确定最终范围后,在范围中进行计算题目要求计算的数,用select;
4,计算之后,对计算结果进行排序,用order by。
2.数据库运行于哪种状态下可以防止数据的丢失? Archivelog状态
解析:关于归档日志:Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archived redo log)。
其对数据库备份和恢复有下列用处: 数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。 在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。
数据库可运行在两种不同方式下: NOARCHIVELOG方式或ARCHIVELOG 方式数据库在NOARCHIVELOG方式下使用时,不能进行在线日志的归档,如果数据库在ARCHIVELOG方式下运行,可实施在线日志的归档。
3. 下面有关sql绑定变量的描述,说法错误的是?d
a 绑定变量是指在SQL语句中使用变量,改变变量的值来改变SQL语句的执行结果
b 使用绑定变量,可以减少SQL语句的解析,能减少数据库引擎消耗在SQL语句解析上的资源
c 使用绑定变量,提高了编程效率和可靠性,减少访问数据库的次数
d 使用绑定变量,查询优化器会预估的比字面变量更加真实
解析:绑定变量是相对文本变量来讲的,所谓文本变量是指在SQL直接书写查询条件,这样的SQL在不同条件下需要反复解析,绑定变量是指使用变量来代替直接书写条件,查询bind value在运行时传递,然后绑定执行。优点是减少硬解析,降低CPU的争用,节省shared_pool ;缺点是不能使用histogram,sql优化比较困难
4. 如下语句:
SELECT i.id_number,m.id_number FROM inventory i,manufacturer m
WHERE i.manufacturer_id = m.id_number Order by inventory.description
执行时是错误的,请问以下措施哪个能够改正这个错误? a
a. 在order by的子句中使用表的别名
b. 在where子句中去掉表的别名
c. 在where子句中用表名代替表的别名
d. 在order by子句中去掉表名,只要字段名称即可
解析: 如果为表分配了别名,那么 Transact-SQL 语句中对该表的所有显式引用都必须使用别名,而不能使用表名。