这篇博客主要用来说一下,SQL server数据库的一些注意事项,会持续更新。这些注意事项都是我自己平时编写SQL server 数据库时经常遇到的。
1、子查询
-- 子查询不需要临时表别名
select *
from student
where student.sid in
(select * from teacher);
-- 而这种from后面接表的,要临时表别名
select * from
(select * from student) temp_student;
2、分组查询
-- 分组查询的where条件放在group by前面,having 条件放在group by后面
-- 分组后还要按照一定的条件进行筛选,则需要使用having子句
select sNo
from student
where dept='计算机'
group by sNO
having count(sNo)>2;
3、exists与不用exists的效率
在某些查询时,如果要用到in,尽量用exists来替代,因为exists的效率比in的效率更好。
4、根据不同条件更新值
很多时候,我们经常会遇到某些情况,要根据某个字段的不同值更新字段,这时候就可以用case语句了。
格式
case <表达式>
when <表达式> then <表达式>
...
when <表达式> then <表达式>
[else <表达式>]
end
-- 或
case
when <表达式> then <表达式>
...
when <表达式> then <表达式>
[else 表达式]
end
例子
use teach
go
-- 定义显式事务,为了方便回滚
begin transaction update_table
update TableTest
set name=
case id
when '1' then 'wangwu'
when '2' then 'zhangsan'
when '3' then 'lisi'
else id
end
commit transaction update_table
rollback transaction update_table
执行前
执行后