Sql Hacks 阅读感悟——联机应用 SQL应用服务器PowerBuilderExcelWeb
SQL基础:《SQL HACKS》第6章——联机应用,总共列举了8个tips,将WEB页面复制到表中、使用SVG图像化地展示数据和将导航特性添加到Web应用上等,下述为我对这8个tips的评析。
#41 将web页面复制到表中
场景描述及解决方案:作者利用xslt技术将特定格式的web页面提取到数据表中。
评析:个人认为,现在从web页面提取内容没必要搞的那么复杂,借助excel通用工具,简单的复制、粘贴web页面到excel表单,继续加工处理,可以满足绝大多数数据提取需求。当然高级用户还可以直连用excel把web页面作为数据源进行提取。
#42 使用SVG图像化地展示数据
场景描述:给定表格数据如下,要求饼图输出。
Id |
Color |
v |
l |
h |
Conservative |
Blue |
40 |
0 |
40 |
Labour |
Red |
30 |
40 |
70 |
Lib-Dem |
Yellow |
20 |
70 |
90 |
Other |
white |
10 |
90 |
100 |
评析:就本tip本身使用svg图像化地展示数据,个人并不推荐这个做法。但是,其中涉及到的根据已给的v,求low-high区间倒是在实际应用中挺有用处,如表格的黄色标注部分。
test=# select id, coalesce((select sum(v) from t42 where id<x.id), 0) as s,
test-# (select sum(v) from t42 where id<=x.id) as e
test-# from t42 x order by id;
#43 将导航特性添加到Web应用上
场景描述:给定一张联系人信息表,关键字段是full name,要求对联系人从A-Z进行分组,并统计A开头的有几个?
解决方案:截取联系人full name的首个字母,并进行分组及分组计数。
test=# select substring(name,1,1) as ltr,
test-# min(name) as fst,
test-# max(name) as lst,
test-# count(*) as cnt
test-# from t43 group by substring(name,1,1)
test-# order by 1;
评析:该tip在很多场景中都有应用,比如去医院体检,报上你的姓名,然后医务人员就会在开头字母的抽屉中找到你的体检项目表等。核心就是字符串的截取和分组统计功能的使用。
#44 从Microsoft Access中隧道访问Mysql
评析:熟悉powerbuilder的朋友,请建议使用powerbuilder的数据管道功能,可以轻松操作其他数据源。
#45 处理Web服务器日志
评析:由于现在都有成熟的日志分析工具,现在此处不展开。
#46 在数据库中存储图像
评析:本tip只要注意不同的数据库其存储图像的字段类型不同,有blob、image类型,postgresql则是bytea类型。另外,在数据库中存储图像通常有2种处理方式:
1) 存储byte流;
2) 存储图像路径,图像实体在其它存储介质上。
选用何种方式视具体情况而定。
#47 利用sql注入漏洞
#48 防止sql注入攻击
评析:sql注入通常发生在用户登陆的时候,如转义字符的处理,--注释的使用等。由于目前j2ee应用jdbc操作基本上基于预处理,因此sql注入相对来说已经危害不大。按照作者的说法不要低估SQL注入攻击的威力,也不应高估它。我们需注意常用的防止sql注入攻击手段:
1) preparestament使用;
2) 转义字符的特殊处理,如单引号的处理。