SQLCookbook 学习笔记 1检索记录

特殊字符 * 表示 所有列

使用* 和指定某个列 ,性能相同。

使用WHERE 指定 要保留哪些行


判断某个字段 是非为空  用 is null 或者  is not null 如:

mysql> select * from menpiao where logdate is  null;


在使用 and 和or 的时候,可以使用圆括号作为一个 整体的判断。

在select查询中使用指定列,可以不返回多余的数据,在跨越网络的检索中,能避免不需要的时间浪费。


可以使用AS 改变列名。

select sal as salary from menpiao;

这将 sal 改新名 salary。 有些数据库 接收 不用as 的方式 ,但是 所有数据库都接受 使用as 的方式。


如何在where语句中使用别名的方法。

select * from (select sal as salary from menpiao) x where salary = 3000;


WHERE子句 是在 SELECT 之前处理的,所有在WHERE 子句之前 salary 并不存在。要在where语句处理完之后,别名才能生效。


连接列值

MySQL使用 concat 函数

select concat(name, ' phone number is  ',phone) as content from  menpiao_2015  where num='12'


使用CASE表达式直接在SELECT语句中执行条件逻辑

select *,case when logdate <  '2015-01-22 14:30' then 'zao' else 'chi' end as jieguo from menpiao_2015 where num = '12'

结果集

如果没有ELSE,对于不满足判断条件的行,CASE表达式返回NULL。


限制返回行数

在Oracle中,不能用  where ROWNUM = 5 来返回第五行。


随机返回n条记录

mysql> select * from menpiao_2015 order by rand()limit 5;


ORDER BY 子句可以接受函数的返回值,并使用它来改变结果集的次序。


查找空值

必须使用 IS  NULL


NULL不能用 != 或者 = 来比较。必须使用IS  NULL 或者 IS  NOT  NULL 


select coalesce(comm,0) from emp;
当comm字段为NULL时候,则返回0.


按模式搜索
使用LIKE 运算 和 % 通配符。


select name where name like '%ER%';


% 匹配任意字符序列
_  匹配单一单个字符, 所以当需要匹配的字符中有_时,需要用转移字符\



你可能感兴趣的:(SQLCookbook 学习笔记 1检索记录)