9. 空值处理
数据库中,一个列如果没有指定值,那么值就为null,这个null和C#中的null不一样,数据库中的null表示“不知道”,而不是表示没有
因此select null+1结果是null,因为“不知道”加1的结果还是“不知道”。
SQL中使用is null、is not null来进行空值判断:
例:
SELECT * FROM T_Employee WHERE FNAME is null ;FNAME为空的值
SELECT * FROM T_Employee WHERE FNAME is not null ;fname不是空值
10. 多值匹配 使用关键字
要删除多条记录怎么办?
例:Delete T_Employee where FId in (21,22)
例:SELECT * FROM T_Employee WHERE FAGE BETWEEN 23 AND 27
等价于:SELECT * FROM T_Employee WHERE FAGE>=23 AND FAGE <=27
11. 数据分组
按照年龄进行分组统计各个年龄段的人数:
SELECT FAge,Count(*) FROM T_Employee GROUP BY Fage
GROUP BY子句必须放到WHERE语句的之后
没有出现在GROUP BY子句中的列是不能放到SELECT语句后的列名列表中的 (聚合函数中除外)
多条件查询:多条件分组时,将条件相加,看是否相等,如果相等,就为一组
例:select fage,ftest,count(*) from t_employee group by fage,ftest
Having语句(分组后查询条件)
分组统计之后查询条件不能用where 而要用having语句,Having要位于Group By之后
例:--进年龄分组统计,同时ftese数量等于的
select fage,count(fage) from t_employee group by fage having count(ftest) = 2
12. 限制结果集行数 top
--查询前行记录
select top 3 * from T_Employee order by fsalary desc
--分页查询
select top 3 * from t_Employee where fnumber not in (
select top 3 fnumber from T_Employee order by fsalary desc
)order by fsalary desc
13. 去掉数据重复 distinct
例:select distinct fdepartment from t_employee
--多个列时和group by 一样,按照多个列组合值判断是否重复
select distinct fdepartment,fsubcompany from t_employee
14. 联合结果集 UNION
基本的原则:每个结果集必须有相同的列数;每个结果集的列必须类型相容。
1. UNION合并两个查询结果集,并且将其中完全重复的数据行合并为一条
2. Union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行
那么就用UNION ALL
Union 和Union All 的区别
Union 合并重复项,并且去掉重复项
Union All 合并重复项,不去掉重复项
问题:
在sql server 2008 中出现了“阻止保存要求重新创建表的更改”
解决办法:工具->选项->-Designers>取消“阻止保存要求重新创建表的更改”
行号和自动换行
工具—>选项—>文本编辑器—>纯文本 右边就有行号和文本编辑器
那些都是浮云,只有本领才是王道
本文导航
- 第1页: 首页
- 第2页: 删除和检索
- 第3页: 函数
- 第4页: 数据排序和通配符过滤
- 第5页: 空值处理、多值匹配和数据分组等问题