几乎所有的约束都不见了,并且NUMERIC和CHARACTER VARYING分别由MONEY和TEXT代替。
在mSQL的监视程序中有令人沮丧的不足:它似乎不能接受从标准输入输入SQL脚本,这样, 需要剪切/粘贴代码。mSQL也讨厌分号;最终我只能一个一个地输入命令并用\g(“go”斜杠命令)终止每条命令 。
实现测试客户
为了比较3个数据库管理器,我决定为执行在bookstore数据库上的交易的目的用C写了一个测试客户。结果,我实现了一些操作,它们能比较API。为了性能比较,我随后充分实现了它们,并且把一个非交互式模式加入客户程序,因此它能自己运行,产生随意的数据且随机执行交易。
我决定了在样品数据库上实现下列行动:
增加一本新书: INSERT INTO BOOK (...) VALUES (...);
删除一本存在的书: DELETE FROM BOOK WHERE ARTICLE_NO=...;
增加一个顾客: INSERT INTO CUSTOMER (...) VALUES (...);
删除一个顾客: DELETE FROM CUSTOMER WHERE CUSTOMER_NO=...;
订书的一个顾客: INSERT INTO BOOKORDER (...) VALUES (...);
INSERT INTO ORDER_POSITION (...) VALUES (...);;
评估一本书的一个顾客: INSERT INTO RATING (...) VALUES (...);
改变一份订单的状态: UPDATE BOOKORDER SET STATUS=... WHERE ORDER_NO=...;
|
然后,能生成下列报表:
书籍列表: SELECT * FROM BOOK;
顾客列表: SELECT * FROM CUSTOMER;
正在投递的交货表,按状态排序: SELECT * FROM BOOKORDER ORDER BY STATUS;
书籍的利润额,最后有平均值: SELECT RETAIL_PRICE-WHOLESALE_PRICE FROM BOOK;
SELECT AVG(RETAIL_PRICE-WHOLESALE_PRICE) FROM BOOK;
书评、评级和为一本书的平均评级: SELECT * FROM RATING WHERE ARTICLE_NO=...;
SELECT AVG(SCORE) FROM RATING WHERE ARTICLE_NO=...;
|
把客户带入PostgreSQL的生活
关于用C编程PostgreSQL的好处是你能使用嵌入式SQL。(而且,至少我喜欢它)它不是很好地文档化,但是ESQL预处理器ecpg运行并能产生PostgreSQL接口代码就好。Sql 的定式思维方法有时妨碍了我;但是,开发客户程序并不是很难的。
我说过“不是很好地文档化”吗?那是一个保守说法。否则PostgreSQL完整的HTML 文档在这方面非常缺乏。我从书本得到的ESQL知识是初级的,而且联机文档没帮助太多,因此我不得不自己了解怎么样由ecpg把C的变量强制转换为NUMERIC值--还有其他东西,而且,ESQL预处理器不是很详细,且无论何时它碰到任何小错误,总是似乎完全释放出来,这对任何从事又长期准备的项目的人来说把是一个持久战。
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:
Linux入门普及读物 解读Linux编程库 下一篇:
Linux系统套接字编程中存在的五个隐患
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】