Chapter 3. 数据检索(查询)---select、top...order by、distinct、where条件查询、分组查询、模糊查询、null处理
======select 数据查询======
查询表中全部数据:
select * from 表名
select 列名1,列名2,列名3 . . .列名n from 表名
给查询出的列起别名:
方式1、原列名 as '别名'
方式2、原列名 '别名'
方式3、别名=原列名
获取当前系统时间:
select 当前系统时间=getdate()
计算:
select 1+1
======top数据查询======
排序:order by 列名 desc(降序)/asc(升序) 默认为升序
获取前几条数据,top一般都会与order by配合使用:
select top 数值 要查询出的数据 from 表名 order by 要排序的列 asc/desc
Order by
1、 降序 order by 列名 desc
2、 升序 order by 列名 asc
3、 Order by语句必须要放在整个SQL语句的最后
Select * from 表名inner join … where … group by … having … order by …
4、 根据多列进行排序:
Select * from 表名 order by 列1 desc , 列2 desc
(先按照列1降序排序,当列1中的数据相同时,再按照列2降序排序)
5、 表中的数据是集合,集合是没有顺序的。Order by返回的数据是有顺序的,故此我们把order by 返回的数据集合叫做“游标”
======distinct数据查询======
针对已经查询出的整个结果集进行数据去重处理:
select distinct * from 表名
======带条件查询======
select 列名 from 表名 where 条件
between ... and ... 在...之间(闭区间,包含两个端点)
where 条件 多个数据用:in ... (在...范围之内) / or...(或者)
======分组查询======
在使用select查询的时候,有时需要对数据进行分组汇总(即:将现在有的数据按照某列来汇总统计),这时就需要用到group by语句。
Select语句中可以使用group by语句将行划分为较小的组,然后使用聚组函数返回每一个组的汇总信息。
当使用了分组语句或者是聚合函数的时候,在select的查询列表中不能再包含其他的列名,
除非该列同时也出现在了group by子句中,或者该列也包含在了某个聚合函数中。
对分组以后的数据进行筛选: having
Where是对分组前的每一行数据进行筛选,后可以使用任何列
Having是对分组后的每一组数据进行筛选,后可以使用聚合函数或者分组后的列
======模糊查询======
只针对字符串
通配符:
_ : 表示任意的单个字符
select * from 表名 where 列名 like ' 包含的字符 _ '
% :表示任意的多个字符
select * from 表名 where 列名 like ' 包含的字符 % '
[ ] :表示筛选,范围
select * from 表名 where 列名 like ' 包含的字符 [ 范围 ] '
^ :表示非
not like 不等同于 like ^
通配符放到[ ]中可以转义为普通字符
escape '自己指定的转义符'
======空值处理======
null值无法使用=或<>来进行比较
判断null值必须使用 is null 或者 is not null
任何值和null计算,结果为null