计算机题,加分50

来源:百度知道 编辑:UC知道 时间:2024/06/05 16:25:56
1.SELECT语句中,何时使用分组子句,何时不必使用分组子句?
2.试述活锁的产生原因和解决方法

1.
GROUP BY子句中不支持对列分配的假名,也不支持任何使用了统计函数的集合列。另外,对SELECT后面每一列数据除了出现在统计函数中的列以外,都必须在GROUP BY子句中应用。
GROUP BY 子句用来为结果集中的每一行产生聚合值。如果聚合函数没有使用 GROUP BY 子句,则只为 SELECT 语句报告一个聚合值。
当 SELECT 语句中包含 GROUP BY 关键字时,对可以在选择列表中指定的项有一些限制。在该选择列表中所允许的项目是:
分组列。
为分组列中的每个值只返回一个值的表达式,例如将列名作为其中一个参数的聚合函数。这些函数称为矢量聚合。
2.
活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。

1. 需要分组查看信息时,题目中有各部门,每位员工……时要用
例如:select departments.depname ,avg(salary)as 平均工资 from employees inner join departments on employees.empid=departments.depname group by departments.depname
2.如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,...,T2有可能永远等待,这就是活锁的情形。

避免活锁的简单方法是采用先来先服务的策略。

select 中分组的语句是 group by 作用是将查询的结果按某一列货多列的值分组,值相等的为一组!即为了细化聚集函数的作用对象时候使用!
活锁产生的原因:如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了