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操作相关联。
触发器与单个的表相关联,
可在特定操作之前或者之后进行操作。
约束的处理速度比触发器快,
多用 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操作相关联。
触发器与单个的表相关联,
可在特定操作之前或者之后进行操作。
约束的处理速度比触发器快,
相关文章推荐
- oracle11g分页优化,rowid和rownum的性能比较,解决越往后数据查询越慢的问题
- 使用JDBC处理mysql
- 转载:SQL索引一步到位
- T-SQL 学习之路之数据库完整性之域完整性(一)
- oracle连接问题【转载】
- php数据库编程---mysqli扩展库
- MYSQL FIND_IN_SET()
- oracle中创建job的用法(定时执行数据库)
- SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值
- Windows下Redis的安装和测试
- mysqldump使用方法
- Ten ways to improve the performance of large tables in MySQL--转载
- redis最佳实践
- MySQL技术之旅--MySQL自动安装脚本
- Redis系列-存储篇hash主要操作函数小结
- Oracle创建库
- Oracle的(+),||
- JDBC连接数据库概述
- Oracle数据库SqlLoad常用技巧总结
- PL/SQL debug