一、分组过滤:
分组关键词 :group by 字段名 过滤关键词 :having子句,类似where子句,having子句用于分组之后的条件过滤 备注:通过字段的不同的值进行分组,有几个不同的值就会被分为几组使用分组的时候,需要添加过滤条件的时候,不能使用where子句,要使用having
SELECT NAME,SUM(age) AS sum,COUNT(1),MIN(age),MAX(age),CEILING(AVG(age))
FROM student
WHERE name = '李四'
GROUP BY NAME
HAVING sum > 30
二、数据库事务:
- 什么是数据库
事务 ?
????????数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
- 数据库
事务 特点有哪些和是ACID ?
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执 行过程中发生错误,会被回滚(ROLLBACK)到事务开始前的状态,就像这个事务从来没有执行过 一样。
一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不 管在任何给定的时间并发事务有多少。也就是说:如果事务是并发多个,系统也必须如同串行事务 一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五 个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多 个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之 间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性。
隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相 同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系 统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同 一时间仅有一个请求用于同一数据。
在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
- 事务的处理过程是什么?
三、数据库索引
- 什么是数据库
索引 ?
????????索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。 ????????在数据库关系图中,可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。
- MySQL数据库
索引 目的是什么?
- 提高查询速度
- 确保数据的唯一性
- 可以加速表和表之间的连接 , 实现表与表之间的参照完整性
- 使用分组和排序子句进行数据检索时 , 可以显著减少分组和排序的时间
- 全文检索字段进行搜索优化.
SELECT role_name
FROM sys_role
WHERE id = (
SELECT role_id
FROM sys_user_role
WHERE user_id = 1
)
- MySQL数据库
索引 有哪些分类?
主键索引 (Primary Key) 唯一索引 (Unique) 常规索引 (Index) 全文索引 (FullText)
四、数据库加密方式
SELECT *
FROM testmd5
WHERE NAME = 'test' AND pwd = MD5('123456');
|