SQL Cookbook 系列 - 检索记录

加粗部分均值得仔细研读,希望可以变得更好

1.从表中检索所有的行和列
select * from emp
select name,job from emp
下边的语句好于上面的,遵循我为人人,人人为我的原则

2.利用where子句做条件, 当某行在where子句判定为真时返回

3.查找满足多个条件的列会用到多个子句,有and、or等,
当用到()时,里面的内容作为一个整体进行判定

4.从表中检索部分列,要在sql中显式指定列名

skip


5.为列取有业务意义的名字,取别名的意思

skip


6.在where子句中引用别名的列,这个还是比较特殊的
例如 select * from (select sal as salary,na as name from emp) x where salary>2000
这么书写的原因是where 子句的执行要早于前面的select执行,加上括号可以保证前面的别名可以早于子句生效

7.连接列值,这个是将查询出的多个列进行拼接的过程
db2,oracle,postgreSQL可以采用如下方式进行拼接:
select ename||' work as a '||job as msg from emp;
mysql可以采用如下方式进行拼接:
select concat(ename,' work as a ',job) as msg from emp;
sqlserver可以采用如下方式进行连接:
select ename+' work as a '+job as msg from emp;

8.在select中使用条件逻辑,例子如下:
selelct ename,sal,
case when sal<2000 then 'a'
when sal>4000 then 'c'
else 'b'
end as status
from emp
这个是很久没有见过的形式,值得温习

9.限制返回的行数,均是采用数据库的内置函数来解决
db2: select * from emp fetch first 5 rows only
mysql postgreSQL : select * from emp limit 5
oracle: select * from emp where rownum<=5 rownum是获取每行之后才赋予的
sql server: select top 5 * from emp

10.从表中随机返回n条记录,使用数据库内置函数来解决
db2 : selelct ename,job from emp order by rand() fetch first 5 rows only;
mysql : select ename, job from emp order by rand() limit 5;
postgreSQL : select ename,job from emp order by random() limit 5;
oracle : select * from (select ename,job from emp order by dbms_random.value()) where rownum<=5
sql server: select top 5 ename,job from emp order by newid()
order by子句中使用函数时,是按照函数在每一行的计算结果排序

11.查找空值
select * from emp where comm is null;

12.将空值转换为实际值
selelct coalesce(sal,0) from emp;
或者采用条件逻辑也可以转换

13.按模式搜索,这里是说按照某种模糊的模式条件进行
select ename ,job from emp where deptno in (10,20) and (ename like '%I%' or job like ‘%ER’);
SQL 是计算机世界的语言,在用关系数据库开发报表时,将数据放入数据库以及从数据库中取出来,都需要SQL 的知识。很多人以一种马马虎虎的态度在使用SQL,根本没有意识到自己掌握着多么强大的武器。本书的目的是打开读者的视野,看看SQL 究竟能干什么,以改变这种状况。, 本书是一本指南,其中包含了一系列SQL 的常用问题以及它们的解决方案,希望能对读者的日常工作有所帮助。本书将相关主题的小节归成章,如果读者遇到不能解决的SQL 新问题,可以先找到最可能适用的章,浏览其中各小节的标题,希望读者能从中找到解决方案,至少可以找到点灵感。, 在这本书中有150 多个小节,这还仅仅是SQL 所能做的事情的一鳞半爪。解决日常编程问题的解决方案的数量仅取决于需要解决的问题的数量,本书没有覆盖所有问题,事实上也不可能覆盖;然而从中可以找到许多共同的问题及其解决方案,这些解决方案中用到许多技巧,读者学到这些技巧就可以将它们扩展并应用到本书不可能覆盖的其他新问题上。, 毫无疑问,本书的目标是让读者看到,SQL 能够做多少一般认为是SQL 问题范围之外的事情。在过去的10 年间,SQL 走过了很长的路,许多过去只能用C 和JAVA等过程化语言解决的典型问题现在都可以直接用SQL 解决了,但是很多开发人员并没有意识到这一事实。本书就是要帮助大家认识到这一点。, 现在,在对我刚才的话产生误解之前我先要申明:我是“如果没坏,就别去修它”这一教义的忠实信徒。例如,假如你有一个特定的业务问题要解决,目前只用SQL检索数据,而其他复杂的业务逻辑由其他语言完成,如果代码没有问题,而且性能也过得去,那么,谢天谢地。我绝对无意建议你扔掉以前的代码重新寻求完全SQL 的解决方案;我只是请你敞开思想,认识到1995 年编程用的SQL 跟2005 年用的不是一回事,今天的SQL 能做的事要多得多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值