软件测试学习笔记——数据库知识

软件测试知识——数据库知识

  1. 怎么理解数据库?
    数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、能共享的、统一管理的数据集合。
    数据库是以一定方式存储在一起、能与多个用户共享,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。

  2. 什么是关系型数据库?
    关系型数据库是建立在关系模型基础上的数据库。
    所谓的关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维数据表及其之间的联系组成的一个数据组织。

  3. 什么是非关系型数据库?
    非关系型数据库主要是基于“非关系模型”的数据库,非关系型模型有列模型、键值对模型、文档类模型。
    常见非关系模型数据库:
    列模型:Habse;
    键值对模型:Redis,MemcacheDB;
    文档类模型:MongoDB;
    Redis,MemcacheDB这种非关系型数据因为存储在内存中,所以效率非常高。

  4. 什么是MySQL ?
    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。
    MySQL是开源免费的,所以不需要支持额外的费用,使用标准化语言SQL进行操作,体积小、速度快、成本低,是中小型网站首选的数据库。
    MySQL支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。

  5. 什么是 MariaDB ?
    MariaDB 是MySQL源代码的分支,相当于MySQL官方版本的一个替代方案,也是开源、免费的数据库系统。
    MariaDB与MySQL在绝大多数方面是兼容的,并且许多方面相对MySQL都有创新和提高,包括许多特性的增强。

  6. SQL 是什么?
    SQL,结构化查询语言(Structured Query Language),是用于访问和处理数据库的标准的计算机语言。
    使用SQL可以访问和处理数据库系统中的数据,这类数据库包括:Oracle、MySQL、SQL Server、PostgreSQL、Sybase、DB2、Access 等等。

  7. 什么是 Redis ?
    Remote Dictionary Server(Redis)是一个key-value存储系统。
    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的API。
    它通常称为数据结构服务器,Redis中的值(value)可以是字符串(String),哈希(Hash),列表(List),集合(sets)和有序集合(sorted sets)等类型。

  8. 什么是 Memcached ?
    Memcached 是一个自由开源的,高性能,分布式内存对象缓存系统。
    Memcached简洁而强大,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。本质上,它是一个简洁的 key-value 存储系统。
    一般的使用的目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

  9. 什么是 MongoDB ?
    MongoDB 是一个基于分布式文件存储的数据库。
    由C++语言编写。旨在为WEB应用提高可扩展的高性能数据存储解决方案。
    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

  10. 什么是存储过程?
    存储过程是大型数据库系统非常重要的对象,体现为一组为了完成特定功能的SQL语句集,是SQL语句和控制语句的预编译集合。
    存储过程一次编译后,可多次调用运行,可提供数据库执行速度,存储过程允许声明变量且允许多个返回值。

  11. 什么是存储引擎?
    将数据以不同的技术存储在文件或者内存中,这种技术就称为存储引擎。
    不同引擎有不同的存储机制和索引技巧。MySQL常见存储引擎有 MyISAM、InnoDB、Memory、CSV、Archive、BlackHole。

  12. 什么是索引?
    在关系型数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构。
    相当于书籍的目录,通过目录中的页码我们可以快速找到对应的内容。
    利用索引,通过保存在索引中的ROWID(相当于页码)快速访问数据库中的特定信息,这样SQL语句执行得更快。

  13. 索引有哪些优点?
    1、设计数据库时创建一个唯一的索引,能够在索引和信息之间形成一对一的映射式的对应关系,增加数据的唯一性特定。
    2、能提高数据的搜索及检索速度。
    3、能够加快表与表之间的连接速度。
    4、在信息检索过程中,若使用分组及排序子句,通过建立索引能有效的减少检索过程中所需的分组及排序时间,提高检索效率。

  14. 索引有哪些缺点?
    1、在数据库建立过程中,需花费较多的时间去建立并维护索引。
    2、在数据库中创建的索引需要占用一定的物理存储空间,如果有必要建立起聚簇索引,所占用的空间还将进一步的增加。
    3、在对表中的数据进行修改时,例如对其进行增加、删除或者是修改操作时,索引还需要进行动态的维护,这给数据库的维护速度带来了一定的麻烦。

  15. 使用索引一定能提高查询性能吗?
    一般情况下,通过索引查询数据比全表扫描要快。但是也不是绝对的。
    原因是:索引需要空间来存储,也需要定期维护,每当有记录在表中增减或索引列被修改时,索引本身也会被修改。这意味着每条记录的 INSERT,DELETE,UPDATE将为此多付出 4,5次的磁盘I/O。因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢。使用索引查询不一定能提高查询性能。

  16. 什么是主键和外键?
    主键:数据库表中对存储数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
    外键:在一个表中存在的另一个表的主键称为此表的外键。

  17. 三大主流关系型数据库的特点?
    Oracle:价格昂贵、不开源、功能最多、最安全
    SQL Server:费用一般、不开源、功能最少、一般安全
    MySQL:免费、开源、功能中等、最不安全、速度最快

  18. 什么是 DB、DBS、DBMS ?
    DB:是指Database(数据库)
    DBS:是指Database System(数据库系统)
    DBMS:是指Database Mangement System(数据库管理系统)
    三者区别在于:数据库就是存放数据的仓库,数据库管理系统就是用来管理数据库的,其中数据库系统是一个通称,包括数据库、数据库管理系统、数据库管理人员等的统称,是最大的范畴。

  19. 什么是 Navicat For MySQL ?
    Navicat For MySQL是管理和开发MySQL的直观而强大的图形化操作工具。
    它简单易用,支持同时连接多个数据库,可以非常便捷的进行新增数据库、表、对数据库记录增删改查操作。
    类似的还有Navicat Premium、MySQL Workbench、SQLyog等。

  20. MySQL怎么复制表?
    MySQL可使用CREATE TABLE…SELECT 语句进行表的复制,分别有如下两种方式:
    只复制表结构

    create table2 like1;
    

    复制表结构和表数据

    create table2 as select * from1;
    
  21. 什么是视图——VIEW ?
    视图是一条SELECT语句执行后返回的结果集,相当于一张虚表,通过简化用户操作,减少复杂的SQL语句,增强可读性,并且可以做到权限控制,即隐藏不希望用户访问到的列,对机密数据提供安全保护。
    MySQL创建视图的语法如下:

    CREATE VIEW 视图名(1,2...) AS SELECT (1,2...) FROM ...;
    
  22. 视图有哪些优点?
    1、简单性。用户筛选出需要的行或列进行操作,不必每次都指定所有筛选条件。
    2、安全性。只开放部分字段或行数的权限给用户,不将整个基础表的权限开放。
    3、逻辑独立性。视图和基础表的修改相互独立。

  23. 视图有哪些使用场景?
    1、多次使用到相同条件的查询结果时,可以将该查询结果作为视图供后续使用。
    2、开放权限给其他部门的人,不想暴露本部门机密信息,可以建立视图开放视图权限。

  24. 什么是SQL中的聚合函数?
    聚合函数只能对表的数据进行计算,得到一个确定的值,聚合函数经常与SELECT语句的GROUP BY子句一起使用,常见的聚合函数有:
    函数有:
    AVG() 平均值
    COUNT() 计数
    MAX() 最大值
    MIN() 最小值
    SUM() 求和
    除了COUNT 之外,其它聚合函数都会忽略空值。

  25. 关系型数据库五大约束?
    1、主键约束(Primary Key Constraint)唯一性,非空性;
    2、唯一约束(Unique Constraint)唯一性,可以空,但只能有一个;
    3、检查约束(Check Constraint)对该类数据的范围、格式的限制(如:年龄、性别等);
    4、默认约束(Default Constraint)该数据的默认值;
    5、外键约束(Foreign Key Constraint)需要建立两表间的关旭引用主表的列。

  26. 什么是 JDBC ?
    JDBC,Java数据库连接(Java Database Connectivity),用于执行SQL语句的Java API,即Java语言编写的类和接口,JDBC为多种关系数据库提供统一访问。

  27. 什么是OceanBase?
    OceanBase是中国蚂蚁金服自主研发的金融级分布式关系数据库,在被誉为“数据库领域世界杯”的TPC-C基准测试中,打破了由美国公司Oracle(甲骨文)保持了9年之久的世界记录,成为首个登顶该榜单的中国数据库产品。这是中国基础软件取得的重大突破。

  28. 什么是SQLite?
    SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite直接访问其存储文件.SQLite不需要配置,这意味着不需要安装或管理,而且非常小,是轻量级的,在移动端开发(如iOS、Android)APP中,经常使用SQLite来存储APP本地数据。

  29. 什么是PosigreSQL?
    PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),PostgreSQL开发者把它念作post-gress-Q-L。PostgreSQL的Slogan 是"世界上最先进的开源关系型数据库"。PostgresQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。因为BSD许可证的灵活,任何人都可以免费使用、修改和分发PostgreSQL。

  30. 什么是内连接?
    内连接也叫连接,是最早的一种连接。
    还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
    内连接的语法是:

    select fieldist from tablel [inner] join table2 on table1.column=table2.col-umn
    
  31. 什么是左连接?
    左连接是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。
    左连接全称为左外连接,是外连接的一种。
    如有A表和B表,A、B之间的左连接条件为:ano=bno;采用左连接查询语句为:

    SELECT * FROM `A` LEFT JOIN `B`ON ano=bno;
    
  32. 什么是数据库事务?
    事务主要用于处理操作量大,复杂度高的数据。如人员管理系统中删除一个人员,既需要删除人员的基本资料,也要删除和该人员相关的信箱,文章信息,这些数据库操作语句就构成一个事务!
    事务处理可以用来维护数据库的完整性,保证成批的SQL 语句全部执行或全部不执行。在MySQL中只有使用了Innodb 数据库引擎的数据库或表才支持事务。

  33. 事务的四个特性ACID
    原子性(Atomicity)
    一致性(Consistency)
    隔离性(Isolation)
    持续性(Durability)

  34. 什么是SQL 注入?
    所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    所以从软件设计、开发、测试层面,我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理。

  35. 什么是MySQL临时表?
    MySQL临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。
    临时表在MySQL3.23版本中添加,如果你的MySQL版本低于3.23版本就无法使用MysQL的临时表。
    不过现在一般很少有再使用这么低版本的MySQL数据库服务了。

  36. 新增表记录语法有哪些?
    插入一条记录,对所有字段赋值

    INSERT INTO tb_name VALUES(v1,v2,v3...vn);
    

    插入一条记录,对部分字段赋值

    INSERT INTO tb_name(cl,c2,c3...cn)VALUES(v1,v2,v3....vn);
    

    插入多条记录

    INSERT iNTO tb_name(cl,c2,c3...cn)VALUES(vI,v2,v3....vn),(v1,v2,v3..,vn),(v1,v2,v3....vn),...;
    
  37. 什么是逻辑删除和物理删除?
    "物理删除"是计算机处理数据时的一个概念。与物理删除相对应的是逻辑删除。
    "逻辑删除"就是对要删除的数据打上一个删除标记,在逻辑上是数据是被删除的,但数据本身依然存在!而物理删除则是把数据从介质上彻底删除掉。

  38. 什么是数据库范式?
    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

  39. 什么是DBA?
    数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统的相关工作人员的统称,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
    DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。也有公司把DBA称作数据库工程师。

  40. 什么是E-R图?
    E-R图即实体联系图(Entity Relation-ship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的模型。
    其中:
    矩形框——实体;
    椭圆形框——属性;菱形框——联系;
    连线——存在于实体与属性之间,实体与联系之间。

你可能感兴趣的:(数据库,学习,mysql)