Sql Hacks 阅读感悟——SQL基础

SQL基础:《SQL HACKS》第一章,总共列举了6tips,在命令中运行SQL、管道输入SQL等,下述为我对这6tips的评析。

1、在命令中运行SQL

由于现在数据库软件都有强大的客户端管理工具,因此程序员完全可以利用客户端UI快速、方便的处理绝大多数sql操作,如postgresqlpgadmin(俗称大象)。但是在这3种情形下,我认为在命令中运行sql效率更高。

1)操作系统不能运行数据库客户端工具;

2)客户端没有的功能,如sybase数据库的查看对象依赖等;

3)事务并发测试、锁测试等,多个命令框运行sql语句是件很有乐趣的事情。

关于posgtresql,命令运行框,我认为大家只要熟知一个命令即可: /?,通过这个命令可以列举出所有pg的简单命令及使用方法。

 

2、在程序中连接到SQL

对于Java程序员来说,程序员似乎无需关注sql连接,因为开发框架基本上都有数据库连接的管理功能,开发人员只要取连接即可,连接用完之后,框架基本上会自动回收该连接。即使如此,开发人员也需要详细了解JDBC编程。

 

3、执行条件INSERT

Insert是比较常见的一种数据库操作,开发人员只要关注1点:insert表的值可以来自select结果,如下:

1)可以 insert into table1(col1,col2,col3) values (‘v1’, ‘v2’,’v3’)

2)也可以 insert into table1(col1,col2,col3)

                     Select ‘v1’, ‘v2’, ‘v3’

 

4、更新数据库

Update也是很常见的一种数据库操作,开发人员需要注意2点。

1update是基于行的,不是基于列的,因此在sql中想交换2列的值可以写如下sql

Update table1 set col1 = col3, col3=col1 where …,如此满足条件行的col1, col3就相互交换了。

2update操作时,必须注意不能覆盖之前的更新,这就需要我们在where后带额外条件,如原值、或者时间戳等。

 

5、使用sql求解填字游戏

这条Hack,我认为不应该在此列出,使用sql求解填字游戏说白了就是字符串函数的灵活运用。如作者提到的:

在字典中查找具有开头3个字符与结尾3个字符相同单词sql

Select word from words

Where word like ‘%’ || substring(word,1,3)

And length(word)>3

这也侧面说明,熟知sql确实可以让sql可以处理更多的事情。

 

6、不反复执行相同的计算

作者给出的例子:

Select income, overhead,

       (income – income*overhead/100) as residual,

       0.2*(income – income*overhead/100) as est,

       0.1*(income – income*overhead/100) as admin,

       0.05*(income – income*overhead/100) as rsrv

From contract;

       sql一直在重复计算余额(income – income*overhead/100),可以简单写成如下:

       Select income, overhead, residual,

              0.2 * residual as est, 0.1*residual as admin, 0.05*residual as rsrv

From (select income, overhead, (income – income*overhead/100) as residual from contract) subquery;

 

评析:有时候子查询可以当临时变量来用。

你可能感兴趣的:(Sql Hacks 阅读感悟——SQL基础)