- select 1 from dual where a >20 查询后返回1列,所返回的列值均为1,返回的行数等于满足条件的行数; 同理, select 常量 from … where …,查询后所返回的列值均为常量,返回的行数等于满足条件的行数。
所以,select 1常用来判断是否有满足条件的数据。
- select * 返回所有行的所有列
- select count(*) from dual 返回表中数据的行数
- select count(1) 和 count(*)的区别:
跟表结构有关系:
如果表中没有主键,那么count(1)比count(*)快
如果有主键,那么count(主键,联合主键)比count(*)快
如果表中只有一个字段,count(*)最快
- select sum() 和 select count():
select sum(1)和select count(*) 均是返回表中数据的行数,
但是select sum(n)中的n可以是任意常数,返回的值是 n*表的行数。
- select null是
Select null 与Select 1 类似,只不过返回的列值为Null,在与Exists配合使用时,只要有行返回,则exists子查询仍然为True。和select 1 不同,Select null 中不可以使用count 和 sum 函数。null是一个特殊的值,既不是空也不是空格,而是一个不确定的值。
如下代码
SELECT null
FROM addresses
WHERE address_id = 1
的意义是在表addresses中有几行满足条件address_id = 1的值就返回几行null值 。