数据库学习记录806

本文详细介绍了数据库的基本概念,包括局部性原理、磁盘预读、B-Tree与B+Tree索引的性能分析。强调了B+Tree在数据库索引中的优势,解释了不同隔离级别的事务处理,如Read Uncommitted、Read Committed、Repeatable Read和Serializable。此外,还探讨了数据库设计的范式理论、SQL查询优化以及视图、触发器和索引的使用。通过对数据库性能和维护的深入理解,可以有效地提高数据库查询速度和系统性能。
摘要由CSDN通过智能技术生成
1.

(1)基本概念

   ① 属性和域:

    每个事物有很多属性,每个属性对应的取值范围叫做域,所有对域都是原子数据(第一范式)

   ② 相关名词

    n元关系:R(D1,D2,D3...Dn)是n元关系,其中关系属性的个数称为“元数”,元组的个数称为“基 数”,也就是记录值。

    候选码:若关系中某一个属性或者属性组的值可以唯一的标识一个元组,则称为候选码

    主码:可以选择任意一个候选码作为主码

    主属性:包含在任何候选码中的属性叫作主属性

    全码:关系模型中所有属性都是这个关系模型的候选码,称为全码

    外码:关系模式中的属性非该关系的码,则称为外码

    ③ 三种类型:

    基本表:实际存在的表

    查询表:查询结果对应的表

    视图表:由基本表和其他视图表导出的表,不是实际存在数据库

    ④ 完整性约束:

    实体完整性:主属性A不能为空值

    参照完整性:用实体之间的关系来描述,若F是关系R的外码,则F或者是空值,或者是某个元组的    主码值

    用户定义完整性:根据具体关系数据的约束条件,比如数据范围等

(2)关系五种基本运算

    ① 并:

    R,S具有相同的关系模式(元素相同,结构相同),记为R U S,返回由R或者S元组构成的集合组成

    ② 差:

    R,S具有相同的关系模式(元素相同,结构相同),记为R-S,右属于R但不属于S的元组组成

    ③ 广义笛卡尔积:

    R×S由n目和m目的关系R,S组成一个(n+m)列的元组集合,若R有K1个元组,S有K2个元组,则R×S有K1*K2个元 组

    ④ 投影(π) :

    从关系的垂直方向开始运算,选择关系中的若干列组成新的列。

    ⑤ 选择(σ):

    选择从关系的水平方向进行元算,选择满足给定条件的元组组成新的关系。

(3)扩展的关系代数运算

    ① 交:

    R∩S=R-(R-S),R,S具有相同的关系模式

    ② 链接:

    链接分为θ链接,等值链接和自然链接

   θ链接:从R,S的笛卡尔积中选择满足一定条件的元组

   等值链接:当θ为“=”时为等值链接

   自然链接:是一种特殊的等值链接,比较的分量必须是相同的属性组,并在结果集中去掉重复列,如果没有重复列,自然链接就转换为笛卡尔积

    ③ 除:

    同时从水平方向和垂直方向进行运算,给定关系R(X,Y)和S(Y,Z),X,Y,Z为属性组,R÷S应当满足在X上的分量值x的像集Yx包含关系S在属性组Y上的投影集合:

例如:

                   R是:

 

A

B

C

D

a

b

c

d

a

b

e

f

a

b

h

k

b

d

e

f

b

d

d

l

c

k

c

d

c

k

e

f

                   S是:  

C

D

c

d

e

f

                   则R÷S:    

A

B

a

b

c

k

 

     ④ 广义投影:

     广义投影运算容许在投影列表中使用算法运算,实现对投影运算的扩充,投影出的列不一定是原来的列,可以是通过计算出来的列。

    ⑤ 外连接:

     由于自然链接会丢失一些信息,而外链接可以处理由于链接运算而缺失的信息,外链接分为左外链接、右外链接、全外链接。

    左外链接:取出左侧关系中所有与右侧关系中任一元素都不匹配的元组,用null来填充右侧的关系 属性。

    右外链接:取出右侧关系中所有与右侧关系中任一元素都不匹配的元组,用null来填充左侧的关系属性。

    全外链接:完成左外链接和右外链接的操作。


2.

牛客网的数据库有一个试卷表,希望找出试卷平均得分小于90的所有试卷。


  • SELECT * FROM paper WHERE avg(score) < 90;
A: SUM 函数返回数值列的总数(总额)。
B:AVG 函数返回数值列的平均值
C: MAX 函数返回一列中的最大值。NULL 值不包括在计算中。
D: MID 函数用于从文本字段中提取字符。



3.

如下SQL语句中,_2,3___可能返回null值。

(1) select count(*) from t1;(返回记录数,也就是行数)如果表格为空的话,会返回0,不会返回NULL。

(2) select max(col1) from t1;( 若表t1中存在列col为null, 则结果返回null;)
(3) select concat('max=',max(col1)) from t1; 若表t1中存在列col为null, 则结果返回null;)(连接字符串)




4.

事务四大特性(简称ACID) 

1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。

2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。

3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。

4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。 


5.

在mysql中,以下哪种方式可以开启一个事务?


  • BEGIN或START TRANSACTION;显示地开启一个事务;
  • COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的;
  • ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;
  • SAVEPOINT identifier;SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;
  • RELEASE SAVEPOINT identifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;
  • ROLLBACK TO identifier;把事务回滚到标记点;
  • SET TRANSACTION;用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。



6.

在MySQL中,下列关于出发机器的描述正确的是(a,c)

MySQL的触发器只支持行级出发,不支持语句级触发
触发器可以调用将数据返回客户端的存储程序
在MySQL中,使用new和old引用触发器中发生的记录内容
在触发器中可以使用显示或者隐式方式开始或结束事务的语句

 A、 触发程序与表相关,当对表执行INSERT、DELETE或UPDATE语句时,将激活触发程序。可以将
触发程序设置为在执行语句之前或之后激活。例如,可以在从表中删除每一行之前,或在更新了

要想创建触发程序或舍弃触发程序,可使用CREATE TRIGGER或DROP TRIGGER语句

B、触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL

(允许存储程序通过参数将数据返回触发程序)。

C、使用OLD和NEW关键字,能够访问受触发程序影响的行中的列(OLD和NEW不区分大小写)。
在INSERT触发程序中,仅能使用NEW.col_name,没有旧行。在DELETE触发程序中,仅能使用
OLD.col_name,没有新行。在UPDATE触发程序中,可以使用OLD.col_name来引用更新前的某一
行的列,也能使用NEW.col_name来引用更新后的行中的列。

D、 触发程序不能使用以显式或隐式方式开始或结束事务的语句,如START TRANSACTION、
COMMIT或ROLLBACK。



SQL语句性能分析的关键字是什么?(A)
  • EXPLAIN   explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。 explain语法:explain select … from … [where ...] 例如:explain select * from news;
  • LOAD   load是加载
  • TOPtop是规定要返回的目录的记录的数目,长与Orderdy 合用top用法http://www.cnblogs.com/wang7/archive/2012/07/09/2582891.html
  • SUM 求和



如下语句:
1
2
SELECT i.id_number,m.id_number FROM inventory i,manufacturer m WHERE
i.manufacturer_id = m.id_number Order by inventory.description
执行时是错误的,请问以下措施哪个能够改正这个错误?


在order by的子句中使用表的别名



如果为表分配了别名,那么 Transact-SQL 语句中对该表的所有显式引用都必须使用别名,而不能使用表名。






mysql数据库有选课表learn(student_id int,course_id int),字段分别表示学号和课程编号,现在想获取每个学生所选课程的个数信息,请问如下的sql语句正确的是

select student_id,count(course_id)from learn group by student_id
group by student_id是按学生号分组,每个编号的学生可能有多门课程,但不可能课程编号会重复,所以直接使用count(course_id),否则就要使用count(disctinct(course_id))

 
 
 
 
 
 
 
 
mysql数据库中一张user表中,其中包含字段A,B,C,字段类型如下:A:int,B:int,C:int根据字段A,B,C按照ABC顺序建立复合索引idx_A_B_C,以下查询语句中使用到索引idx_A_B_C的语句有哪些?A,B,D
  
  
  
  • select *from user where A=1 and B=1
  • select *from user where 1=1 and A=1 and B=1
  • select *from user where B=1 and C=1
  • select *from user where A=1 and C=1
  • 复合索引: Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。 例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效
 
 
 
 
 
 
 
 
下列关于关系数据模型的术语中,哪一个术语所表达的概念与二维表的"行"的概念最接近(元组)
关系数据库中方,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。 在二维表里,元组也称为记录。



mysql中查看SQL模式的命令是()

  
  
  
MySQL数据库中,变量分为 系统变量(以"@@"开头)和用户自定义变量。系统变量分为全局系统变量(global)和会话系统变量(session)。
@@global     仅用于访问全局系统变量的值;
@@session  仅用于访问会话系统变量的值;
@@              先访问会话系统变量的值,若不存在则去访问全局系统变量的值;
sql_mode 为系统变量,既是全局系统变量,又是会话系统变量。
题中 A,C,D 均正确。





索引字段值不唯一,应该选择的索引类型为(普通索引)
索引类型分类:①主索引:主索引是一种只能在数据库表中建立不能在自由表中建立的索引。在指定的字段或表达式中,主索 引的关键字绝对不允许有重复值。②候选索引:和主索引类似,它的值也 不允许在指定的字段或表达式中重复。一个表中可以有多个 候选索引。③唯一索引:唯一索引允许关键字取重复的值。当有重复值 出现时,索引文件只保存重复值的第1次出现。提供唯一索引主要是为了兼容早期的 版本。④普通索引:普通索引允许关键字段有相同值。在一对 多关系的多方,可以使用普通索引






 
 
select sum(score) as total,stud_name from [成绩表](nolock) group by stud_name
根据stud_name对学生进行分组,分组后,同一个学生的所有成绩分为一组,用sum(score)计算出总分,最有列名为total。但是题目应该加限定条件,学生不能重名,否则会出错。















有两个关系R和S如下: 由关系R通过运算得到关系S,则运算可能是?


(2)关系五种基本运算

    ① 并:

    R,S具有相同的关系模式(元素相同,结构相同),记为R U S,返回由R或者S元组构成的集合组成

    ② 差:

    R,S具有相同的关系模式(元素相同,结构相同),记为R-S,右属于R但不属于S的元组组成

    ③ 广义笛卡尔积:

    R×S由n目和m目的关系R,S组成一个(n+m)列的元组集合,若R有K1个元组,S有K2个元组,则R×S有K1*K2个元 组

    ④ 投影(π) :

    从关系的垂直方向开始运算,选择关系中的若干列组成新的列。

    ⑤ 选择(σ):

    选择从关系的水平方向进行元算,选择满足给定条件的元组组成新的关系。












一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的?(疑问)

   
   
   
自然连接要求俩个关系中必须有相同的属性,等值连接要求俩个关系中有相同的值
自然连接的结果会去掉重复的属性,等值连接不会去掉重复的属性
自然连接一定是等值连接,等值连接不一定是自然连接。










The initial insert of new data into the table will leave most of its large columns NULL, to be filled in later by subsequent updates.记录重未更新. PCTFREE 和 PCTUSED取值多少合适?  


  
  
  
1 )PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert。
2 )PCTUSED:是指当块里的数据低于多少百分比时,又可以重新被insert。
形象举例说明:
假如:一个杯子一共可装 10 分水:
PCTFREE =  10 ,说明杯子装到 9 分水,就不能再装了,即:不能进行insert操作,但可以进行update操作。
PCTUSED =  40 ,说明杯子中的水喝到 4 分一下,就可以往里面装水,即:进行insert操作。




数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括(日志文件,数据库后备副本







以下不同的数据库类型中,哪些不属于关系数据库范畴

PostgreSQL

只有B属于关系型数据库;
A  Mongodb数据属于文档型非关系数据库;
C  Redis属于KV键值数据库
D  Hbase属于列数据库







为了提高数据库的性能,需要针对系统设计基准测试进行压力测试,那么进行压力而是时需要考虑以下哪些指标(1.2.3.4)
可扩展性
响应时间
并发性
吞吐量









利用PL/SQL语句将"数据库原理"课程的学分赋值给变量的语句是(C)

select xuefen into @xuefen from course where cname='数据库原理'
select xuefen from course  where cname='数据库原理' and xuefen=@xuefen
select @xuefen=xuefen from course  where cname='数据库原理'
select xuefen=@xuefen from course where cname='数据库原理'
sql中自定义变量的格式为:declare @变量名 变量数据类型,之后每次使用时必须带@
由于是将学分赋值给变量,即@xuefen = xuefen,又select (1) into (2)语句中,(2)为表名,(1)处为数据,所以排除A
最后答案为C








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值