用了C#、PHP、Java等开发一些东西,感觉sql很重要,不管对功能或性能上都需要精益求精的操作数据库,而此时程序员对sql语句的掌握尤其重要,很多时候如果不知道一些关键字查询,只知道简单的select和连接查询,或许在做东西的时候,只需要一个多表连接查询就可以解决的,就会很笨重的写成先查询出一部分,然后做一个循环,在根据查询生成n个sql语句在查询出n个结果集,或为了避免重复全部查询之后,在用相关的语言来消除重复记录。如果你还停留在这个水平的话我建议还是把sql再深入学习一下吧,这样的水平根本拿不出手。
这周看了《SQL完全手册》,看了前八章左右,很多都是以前常用的,以及没有技术含量的东西,不过也会忽略一些细节。大概整理了一些,不是很详细,供以后查询使用,也希望放在博客上对其他人有些帮助。
重复的记录(DISTINCT)
select distinct field from table_name 可以避免查询出重复的field字段。
与其对应的,也可以是默认的select all from。。。
搜索条件(where)
比较测试:=、<>、<、>、<=、>=
在sql的3值逻辑下,一个搜索条件可以产生TRUE、FALSE或者NULL值,只有其搜索条件产生TRUE的那些记录才被包含在查询结果中。
范围测试(BETWEEN):
select field from table_name (not) between .. and ...
A BETWEEN B AND C == (A >= B) AND (A<=C)
当按值的条件范围考虑搜索条件时,BETWEEN测试是一种较为简单的方法。
组成员测试(IN)
它测试一个数据值是否匹配一组目标值中的一个。
eg:select field from table_name where field (not) in (value1,value2,value3)
与BETWEEN测试一样,IN测试并不增加SQL的表达能力:
X IN(A,B,C) == (X=A) OR (X=B) OR (X=C)
模式匹配测试(LIKE):
通配符字符:
1. % 匹配任何顺序的0个或多个字符
2. _ 匹配任何单个字符
转义字符:
有时需要查询的条件中包含sql内置的模式匹配字符,就需要使用转移字符进行表达,此时需要用ESCAPE制定自定义的转义符:
select * from table_name where field like 'A$