• 0
  • 0
分享
  • 测试/测试开发面试准备——软件测试圈
  • TIMI 2021-06-25 10:47:17 字数 3365 阅读 1877 收藏 0

数据库

数据库视图:

视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。(视图相当于一个查询语句,它不占有存储空间)。

游标:

游标是一段私有的SQL工作区,也就是一段内存区域,用于暂时存放受SQL语句影响到的数据。通俗理解就是将受影响的数据暂时放到了一个内存区域的虚表中,而这个虚表就是游标。?游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。

数据库表:

在关系数据库中,数据库表是一系列二维数组的集合,用来代表和储存数据对象之间的关系。(表是真实存在, 它占存储空间)

存储过程:

一组为了完成特定功能的SQL语句集(或者自定义数据库操作命令集), 根据传入的参数(也可以没有), 通过简单的调用, 完成比单个SQL语句更复杂的功能, 存储在数据库服务器端,只需要编译过一次之后再次使用都不需要再进行编译:主要对存储的过程进行控制。

存储过程种类

1 系统存储过程

以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。

2 本地存储过程

用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,事实上一般所说的存储过程就是指本地存储过程。

3 临时存储过程

分为两种存储过程:

一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;

二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。

4 远程存储过程

在SQL Server2005中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。

5 扩展存储过程

扩展存储过程(Extended Stored Procedures)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头。

存储过程调用:

(1)可以用一个命令对象来调用存储过程。

(2)可以供外部程序调用,比如:java程序。

存储过程的优缺点:

优点:

(1)存储过程是预编译过的,执行效率高。

(2)存储过程的代码直接存放于数据库中,通过存储过程名直接调用,减少网络通讯。

(3)安全性高,执行存储过程需要有一定权限的用户。

(4)存储过程可以重复使用,可减少数据库开发人员的工作量。

缺点:移植性差

锁:

锁是一种最为常见的并发控制机制,在一个事务中,我们并不会将整个数据库都加锁,而是只会锁住那些需要访问的数据项, MySQL 和常见数据库中的锁都分为两种,共享锁(Shared)和互斥锁(Exclusive),前者也叫读锁,后者叫写锁。读锁保证了读操作可以并发执行,相互不会影响,而写锁保证了在更新数据库数据时不会有其他的事务访问或者更改同一条记录造成不可预知的问题。包括:悲观锁、乐观锁、表锁、行锁、临间锁、间隙锁、记录锁、共享锁、排他锁、意向共享锁、意向排他锁。

事务:

数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。

事务的性质:

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

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

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

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

索引:

在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

索引能加快搜索的原理:

索引就是通过事先排好序,从而在查找时可以应用二分查找等高效率的算法。

一般的顺序查找,复杂度为O(n),而二分查找复杂度为O(log2n)。当n很大时,二者的效率相差及其悬殊。

索引类型有哪些

逻辑上:

Single column 单行索引

Concatenated 多行索引

Unique 唯一索引

NonUnique 非唯一索引

Function-based 函数索引

Domain 域索引

物理上:

Partitioned 分区索引

NonPartitioned 非分区索引

B-tree :

Normal 正常型B树

Rever Key 反转型B树 Bitmap 位图索引

MySQL的几种引擎

  • InnoDB

  1. 适用场景

  2. MySQL官方对InnoDB的讲解

  • MyIsam

  1. 适用场景

  2. 补充:ISAM索引方法–索引顺序存取方法

  • Memory(也叫HEAP)堆内存嘛

  • Mrg_Myisam:(分表的一种方式–水平分表)

  • Blackhole(黑洞引擎)

数据库的四个隔离级别:

  1. 读未提交,Read Uncommited。

  2. 读已提交,Read Committed。这个隔离级别可以解决脏读的问题。

  3. 可重复读。Repeatable Read。在这个隔离级别下,可以解决不可重复读的问题。

  4. 串行化,Serialization。串行化可以解决幻读的问题。

总结而言,数据的事务隔离级别分为4种,从低到高依次为读未提交,读已提交,可重复读,串行化。与数据库事务隔离级别相关的问题有3个,分别是脏读,不可重复读,幻读。脏读问题需要用读已提交来解决,但读已提交会存在不可重复读问题。不可重复读问题需要用可重复读来解决,但可重复读会存在幻读问题。幻读问题需要用串行化来解决。

MySQL数据库权限管理:(偏开发岗)

权限表分别为: user,db,table_priv,columns_priv和host。

user:记录允许连接到服务器的用户的信息,里面的权限是全局级的

db:记录每个用户对各个数据库级别的操作权限

table_priv:记录每个用户对数据表级别的操作权限

columns_priv:记录每个用户对数据列级别的操作权限

host:存储了某个主机对数据库的操作权限,配合db表对给定的主机上数据库级别的操作权限做更细致的控制,但host表一般很少用,新版本MySQL已经没有host表了

触发器的作用:

触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

列举几种表连接方式,有什么区别

内连接、自连接、外连接(左、右、全)、交叉连接

内连接:只有两个元素表相匹配的才能在结果集中显示。

外连接: 包括(左右全)

左外连接:左边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。

右外连接:右边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。

全外连接:连接的表中不匹配的数据全部会显示出来。

交叉连接: 笛卡尔效应,显示的结果是链接表数的乘积。

主键和外键的区别

主键在本表中是唯一的、不可为空的,外键可以重复可以为空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。

在数据库中查询语句速度很慢,如何优化?

  1. 建索引;

  2. 减少表之间的关联;

  3. 优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引;

  4. 简化查询字段,没用的字段不要,以及对返回结果的控制,尽量返回少量数据;

  5. 用小表驱动大表,可以提高系统的执行效率。

数据库连接池的作用

(1)维护一定数量的连接,减少创建连接的时间

(2)更快的响应时间

(3)统一的管理


作者:你得支棱起来呀

原文链接:https://blog.csdn.net/weixin_39618279/article/details/105064937

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 我们在使用SQLyog进操作时,如果不使用快捷键,会很麻烦,尤其是多行注释这种骚操作!!所以在非常忙碌的工作中,使劲的挤了挤,挤出点时间,来整理一下sqlyog的常用快捷键骚操作!一、连接  Ctrl+M 创建一个新的连接  Ctrl+N 使用当前设置新建连接  Ctrl+F4 断开当前连接二、对象浏览器F5 刷新对象浏览器(默认)  Ctrl+B 设置焦点于对象浏览器三、SQL 窗口  Ctrl+T 新建查询编辑器  Ctrl+E 设置焦点于 SQL 窗口  Ctrl+Y 重做  Ctrl+Z 撤销  ...
            1 0 7768
            分享
          •   我们在求职的时候,发现有的是招聘的功能测试,有的招聘的是性能测试,那么功能测试和性能测试的区别是什么呢?  侧重点不同  功能测试的侧重点是功能是否满足客户需求。  比如说我们拿到一个节假日搞活动的需求,这个需求有好多种场景,比如说是百分比打折还是满减打折,是否有优惠券,活动是否可叠加使用,如果可叠加使用,优先使用哪种优惠策略等等。  做功能测试时,我们必须把这些需求都搞清楚,并且尽可能的将所有可能出现的场景都测试到,功能测试注重产品的每一个细节。  功能测试要保证的是每一个功能点都无问题,以防在生产环境上客户使用的过程中出现问题。而且功能测试完成后,需要提交测试用例、测试总结报告和用户操...
            0 0 1002
            分享
          •   湖南岳阳有网友爆料称,三荷机场的停车场立有告示,写道“涉密管制区域,禁止特斯拉入内”。  对此,机场接线人员称,停车场确实贴有告示,禁止特斯拉车辆进入。该工作人员称,告示已经发布了几个月。如果特斯拉车主有停车需求,可以把人送过去后,停到机场外十字路口右拐处。  “禁止特斯拉入内”原因在于,特斯拉车辆带有哨兵模式,车主离开后会对车身周边环境进行录像。该工作人员说,现在很多单位都禁止特斯拉入内,机场员工的特斯拉也不能进入。  据悉,特斯拉汽车”哨兵模式“有三种状态,具体如下:  待命状态:开启哨兵模式后车辆自动进入待命状态,待命状态下,摄像头会持续监测车辆周围安全隐患。  警惕状态:如果哨兵模...
            0 0 818
            分享
          •   市面上的项目管理工具很多,这里仅列出这些工具的信息,以帮助大家在选择工具时 作一个对比。并无推荐JIRA 或者不推荐什么工具的区分。  本人使用JIRA来管理项目,也是基于公司管理层决定的。虽然整个文章都是基于JIRA的应用,但是不管是哪种工具,万变不离其宗,都可以用类似的方式来实现各种项目管理需求。但为了避免踩雷,大家还是要选择热门一些的工具。  1 JIRA:  简介:JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。JIRA中配置灵活、功能全面、部署简单、扩展丰富。  JIR...
            0 0 988
            分享
          •   1. 软件测试不是点点点,还有性能测试,自动化测试,安全测试,甚至于AI测试,大数据测试等等,软件测试的前景还是非常好的。  2. 软件测试相对门槛比较低,前期比较容易入门,哪怕不是计算机专业的小白,也能轻松掌握,不过,软件测试后期的难度和开发没有什么两样,想要拿到高薪,就得学会自动化测试,接口测试这些编码知识。  3. 经常有人抱怨,学了用不上,学完就容易忘记,因为学的都是理论知识,长时间不用自然会容易忘记,最好边学边找项目练手。  4. 如果你身边有人说测试很简单,薪资混混也很容易,那么他基本上过几年还是如此,没啥大的长进。  5. 软件测试有高薪也有低薪,月入两三千是真实存...
            0 0 1277
            分享
      • 51testing软件测试圈微信