SQL必知必会

来源:互联网 发布:eclipse jre源码 编辑:程序博客网 时间:2024/06/05 08:49
  1. 不能部分使用distinct,distinct作用于所有的列。
  2. 多用 in,not,少用,and or 加()的组合,因为前者的语义更明确一切。
  3. 聚集函数:count(*)不能用distinct,distinct 可以用于,min ,max ,sum,avg,
  4. 数据分组:
    1. group by :子句中列出的所有列都必须是检索列或有效的表达式列。
    2. select语句中的每一列都必须在group by 子句中给出,除了聚集计算语句。
  5. having:用于过滤分组,而where 是用于过滤行数据,
  6. union中:
    1. 每个查询必须包含相同的列,表达式,或聚集函数,
    2. 默认取消重复的行,
    3. 也可以使用 union all 返回所有的匹配行,当然包括重复的。
  7. 从一个表复制到另一个表:
    1. select * into table2 from table1
    2. create table table2 as select * from tabel1
  8. update :有些dbms支持用一个表更新另一个表的数据,这个需要查文档。
  9. 删除:delete ,这个地方需要留意的设置外键,防止数据意外删除,
  10. 如果想全部删除数据,可以用 truncate table ,这样速度更快,自增的ID也可以删除从0开始。
  11. 视图:
    1. 视图可以理解为重复使用的SQL语句,
  12. 事务:
    1. 可以回退的操作:insert ,update,delete,对于select 不能回退,也没有回退的必要,也不能回退create 和drop 操作。事务操作中可以使用这些操作。
    2. 理解事务中的保留点
  13. 游标:
    1. 出现原因:select 只能得到一组结果集,而无法得到它的下一行,前10行之类的。因此有点游标。
    2. SQLite中游标称为步骤(step)
  14. 约束:
    1. 主键,
    2. 外键:有助于防止意外删除。
    3. 唯一性约束,
    4. 检查约束:
  15. 索引:
    1. 索引改善了检索操作的性能,但是降低了数据的插入,修改,和删除的性能,在执行这些操作时,DBMS必须动态的更新索引。
  16. 触发器:
    1. 特殊的存储过程。他在特定的数据库活动发生时自动执行。触发器,可以与特定表上的insert ,delete,update操作相关联。
    2. 触发器与单个的表相关联,
    3. 可在特定操作之前或者之后进行操作。
    4. 约束的处理速度比触发器快,
1 0