数据库简答题

发布于 2023-12-29  29 次阅读


简述数据库系统的特点:

1.数据结构化;

2.数据的共享性高,冗余度低且易扩充;

3.数据独立性高;

4.数据由数据库管理系统统一管理和控制。

简述数据完整性与安全性的区别:

1.数据的完整性:防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。防范对象:不合语义的、不正确的数据。

2.数据的安全性:保护数据库防止恶意的破坏和非法的存取。防范对象:非法用户和非法操作。

什么叫规范化?简述1NF—4NF的规范化方法:

将一个低一级的范式关系模式,通过模式分解转换为若干个高一级范式的关系模式的集合,这个过程叫规范化。

消除非主属性对码的部分函数依赖

消除非主属性对码的传递函数依赖

消除主属性对码的部分和传递函数的依赖 消除非平凡且非函数依赖的多值依赖

简述游标的使用过程

1.定义游标

2.打开游标

3.循环读取数据,指针前移

4.测试游标数据是否提取完毕,如果没有,继续提取数据

5.关闭游标

简述完全备份与增量备份的区别

  • 完全备份指备份中包含了指定的库的全部数据页,这样的一个备份通常会很大,且备份持续时间比较长,对于一个需要经常备份的系统,执行完全备份比较消耗时间和空间
  • 增量备份指基于某个已有的备份,备份自该备份以来所有发生修改了的数据页,这个已有的备份称为基备份。相对而言,增量备份通常很小,备份也较快且占用空间也会比较少。

简述数据库中备份,还原与恢复的具体含义

  1. 备份的本质:
  2. 将有效数据页保存到备份集中
  3. 将备份过程中产生的归档日志保存到备份集中
  4. 还原与恢复是备份的逆过程,其中:
  5. 还原是将备份集中的有效数据页重新写入目标数据文件的过程
  6. 恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定LSN

简述合理使用视图的好处

  1. 用户能通过不同的视图以多种角度观察同一数据
  2. 简化用户操作
  3. 为需要隐藏的数据提供自动安全保护
  4. 为重构数据库提供一定程度的逻辑独立性
    简述什么是DAC和MAC。

1.DAC是指自主存取控制,是由数据库对象的拥有者自主决定是否将自己拥有对象的部分或全部访问权限授予其他用户。

2.MAC是指强制存取控制,是由系统根据客体的敏感标记和主体的访问标记对客体访问实行限制的一种方法,只有符合密级标记要求的用户才可以操纵数据。

索引

-- 1.创建索引

CREATE UNIQUE INDEX index2 ON test.total (tradedate, tradetime);

-- 删除索引 index1

DROP INDEX test.index1;

-- 2.删除索引

连接查询

select tb_student.name as studentName ,tb_student.score,tb_class.name as className

        from test.tb_student inner join test.tb_class

        on tb_student.class_id=tb_class.id

        where tb_student.score>90;

视图

-- 1.创建视图

CREATE VIEW test.salary_view  AS SELECT * FROM test.tb_salary WHERE language = 'Python';

#INSERT INTO test.salary_view  VALUES(10,'C',9400);

-- 2.删除视图

DROP VIEW test.view_salary;

权限

-- 1.给用户授权查询权限

GRANT SELECT ON test.total TO user1;

-- 2.收回用户权限

REVOKE insert any table FROM user2;

审计

-- 打开普通审计

SP_SET_ENABLE_AUDIT(1);

-- 1.对SYSDBA创建用户进行审计,不管失败和成功。

SP_AUDIT_STMT('USER', 'SYSDBA','ALL');

-- 2.将SYSDBA用户对表test.total进行的插入数据成功的操作进行审计

SP_AUDIT_OBJECT ('INSERT', 'SYSDBA', 'TEST', 'TOTAL', 'SUCCESSFUL');

触发器

CREATE  TRIGGER limit_age AFTER INSERT

ON test.student

FOR EACH ROW

DECLARE

    age_out_of_order EXCEPTION FOR -20005;

Begin

    IF INSERTING AND (:new.age>120 OR :new.age<0) THEN

       RAISE age_out_of_order;

    END IF;

END;

查询子句

SELECT *

from test.employ

order by salary DESC

limit 3;

存储过程

-- 创建存储过程 getcustomerlevel

create or replace procedure getcustomerlevel(v_customNumber in int, v_customerLevel out varchar2)

as

    declare levels int;

begin

    select test.customers.creditlimit into levels from test.customers where test.customers.customerNumber=v_customNumber;

if levels <5000 then

    set v_customerLevel = 'SILVER';

elseif levels <10000 then

    set v_customerLevel = 'GOLD';

 else

    set v_customerLevel = 'PLATINUM';

end if;

select v_customNumber as customerNumber,v_customerLevel;

end;

游标

DECLARE

    CURSOR p IS SELECT * FROM test.tb_class;

BEGIN

    --OPEN p;

    FOR p_v IN p

        LOOP

            PRINT p_v.id ||','|| p_v.name;

        END LOOP;

END;