数据库高级话题

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

折腾数据折腾代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值