SQL刷题

1.数据库的概念模型独立于
A.具体的机器和DBMS
B.E-R图
C.信息世界
D.现实世界
答案:A。概念模型用于信息世界的建模,与具体的DBMS无关,首先把现实世界抽象为信息世界,然后将信息世界转换成机器世界

2.Transact-SQL 提供下列聚合函数

APPROX_COUNT_DISTINCT
MIN
AVG
STDEV
CHECKSUM_AGG
STDEVP
COUNT
STRING_AGG
COUNT_BIG
SUM
GROUPING
VAR
GROUPING_ID
VARP
MAX

3.E-R图的3个基本要素
实体型、属性、联系

4.数据库以及线程发生死锁的原理及必要条件,如何避免死锁

产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
产生死锁的四个必要条件:
(1)互斥条件:一个资源每次只能被一个进程使用。
(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

避免死锁:
死锁的预防是通过破坏产生条件来阻止死锁的产生,但这种方法破坏了系统的并行性和并发性。
死锁产生的前三个条件是死锁产生的必要条件,也就是说要产生死锁必须具备的条件,而不是存在这3个条件就一定产生死锁,那么只要在逻辑上回避了第四个条件就可以避免死锁。
避免死锁采用的是允许前三个条件存在,但通过合理的资源分配算法来确保永远不会形成环形等待的封闭进程链,从而避免死锁。该方法支持多个进程的并行执行,为了避免死锁,系统动态的确定是否分配一个资源给请求的进程。
预防死锁:具体的做法是破坏产生死锁的四个必要条件之一。

银行家算法:该算法需要检查申请者对各类资源的最大需求量,如果现存的各类资源可以满足当前它对各类资源的最大需求量时,就满足当前的申请。换言之,仅当申请者可以在一定时间内无条件归还它所申请的全部资源时,才能把资源分配给它。这样申请者就可以很快完成其计算,然后释放它占用的资源,从而保证了系统中的所有进程都能完成,所以可以避免死锁的发生。这种算法的主要问题是,要求每个进程必须先知道资源的最大需求量,而且在系统的运行过程中,考察每个进程对各类资源的申请需花费较多的时间。另外,这一算法本身也有些保守,因为它总是考虑最坏可能的情况。

5.在SQL中语法规范中,having子句的使用
A.having子句即可包含聚合函数作用的字段也可包括普通的标量字段
B.使用having的同时不能使用where子句
C.having子句必须于group by 子句同时使用,不能单独使用
D.使用having子句的作用是限定分组条件
E.Having子句和where子句是等同的
F.如果select语句中没有聚合函数的使用,就不能使用having子句

解析:where子句 = 指定行所对应的条件
having子句 = 指定组所对应的条件
D中是Group by才用来分组的,group by的作用是限定分组条件,而having则是对group by中分出来的组进行条件筛选。
所以用having就一定要和group by连用,且是先group by XXX 再having XXX,用group by不一有having(它只是一个筛选条件用的)

你可能感兴趣的:(SQL刷题)