您的位置:首页 > 数据库

SQL必知必会

2015-11-02 16:55 351 查看
不能部分使用distinct,distinct作用于所有的列。

多用 in,not,少用,and or 加()的组合,因为前者的语义更明确一切。

聚集函数:count(*)不能用distinct,distinct 可以用于,min ,max ,sum,avg,

数据分组:

group by :子句中列出的所有列都必须是检索列或有效的表达式列。

select语句中的每一列都必须在group by 子句中给出,除了聚集计算语句。

having:用于过滤分组,而where 是用于过滤行数据,

union中:

每个查询必须包含相同的列,表达式,或聚集函数,

默认取消重复的行,

也可以使用 union all 返回所有的匹配行,当然包括重复的。

从一个表复制到另一个表:

select * into table2 from table1

create table table2 as select * from tabel1

update :有些dbms支持用一个表更新另一个表的数据,这个需要查文档。

删除:delete ,这个地方需要留意的设置外键,防止数据意外删除,

如果想全部删除数据,可以用 truncate table ,这样速度更快,自增的ID也可以删除从0开始。

视图:

视图可以理解为重复使用的SQL语句,

事务:

可以回退的操作:insert ,update,delete,对于select 不能回退,也没有回退的必要,也不能回退create 和drop 操作。事务操作中可以使用这些操作。

理解事务中的保留点

游标:

出现原因:select 只能得到一组结果集,而无法得到它的下一行,前10行之类的。因此有点游标。

SQLite中游标称为步骤(step)

约束:

主键,

外键:有助于防止意外删除。

唯一性约束,

检查约束:

索引:

索引改善了检索操作的性能,但是降低了数据的插入,修改,和删除的性能,在执行这些操作时,DBMS必须动态的更新索引。

触发器:

特殊的存储过程。他在特定的数据库活动发生时自动执行。触发器,可以与特定表上的insert ,delete,update操作相关联。

触发器与单个的表相关联,

可在特定操作之前或者之后进行操作。

约束的处理速度比触发器快,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: