SQL注入 (过滤敏感字段or等,参数化SQL)
SQL调优
基本原则:二八原则 20%的代码资源占用了80%的总资源消耗
用where子句代替 habing子句
使用表的别名
用exists替代 in
用表连接替换exists
用union all替换 union
IS NULL 正确写法
如果null出现在计算字段里,那么结果永远是null
解决:
1.用is not null把其过滤掉
2.使用case函数将 null值转换为0
select FId, FName, FSalary,
(
CASE
WHEN FSalary IS NULL THEN 0
ELSE FSalary
END
)
+ 2000,
FROM T_Employee
事务隔离:
事务将锁 分为两种类型:只读锁,写入锁
只读锁是非独占的,多个并发事务都能获得只读锁,
写入锁是独占的,任意时间只能有一个事务可以获得写入锁
隔离性通过加锁的方式获得,使用较高的隔离级别,则事务会较好地与其他事务相隔离,当然也会带来大量的系统开销,如果使用较低的隔离级别,则事务的隔离性会比较差,但是能获得更好的性能。
脏读
不可重复读(B更新)
幻影读取(B插入)
开窗函数 oracle里称为分析函数,而在DB2中称为OLAP函数 函数名 (列) OVER (选项)
WITH 子句与子查询
select 列表中的 所有列如果 不是在聚合函数中使用,则必须 加入group by 子句中。
使用开窗函数 over() 将不用使用group by子句
表复制,
复制源表的结构并复制表中的数据
mysql,oracle:
create table T_Person2 AS SELECT * FROM T_Person
sql server:
select * into T_Person2 FROM T_Person
只复制 源表的结构:
create table ss
as
select * from aaa
where 1 <> 1