1. 数据库基础、数据类型与约束条件
数据库是用来存储、管理、维护业务数据的仓库,数据表是最小存储单元,由字段和数据行组成。常用数据类型分为数值型、字符串型、日期型,根据业务场景合理选择可以节省存储空间、提升查询效率。
数据表核心约束用于规范数据合法性,保证数据完整准确:主键约束唯一且非空,唯一标识单条数据;外键约束关联两张数据表,保证数据关联一致性;唯一约束保证字段数据不重复;非空约束限制字段不能为空,规避空数据导致的业务异常。
2. SQL四大核心语法分类
DDL数据定义语言:用于定义和修改数据库、表结构,核心操作包括建库、建表、修改表结构、删除库表,常用语句:create、alter、drop。一般在项目初始化阶段使用,日常测试很少改动。
DML数据操作语言:用于操作表内数据,是测试高频使用语句,包含新增insert、修改update、删除delete,主要用于造测试数据、修改测试场景数据。
DQL数据查询语言:用于查询业务数据,核心语句为select,支持条件查询、排序、分页、聚合查询、多表查询,是测试验证数据库数据准确性的核心语法。
DCL数据控制语言:用于权限管理,包含授权grant、收回权限revoke,主要由运维、数据库管理员使用,普通测试人员接触较少。
3. 常用SQL语句模板整理
基础查询模板:select 字段1,字段2 from 表名 where 条件 order by 排序字段 asc/desc limit 起始行,条数;
新增数据模板:insert into 表名(字段1,字段2) values(值1,值2);
修改数据模板:update 表名 set 字段=值 where 条件;(必须加where条件,避免全表更新)
删除数据模板:delete from 表名 where 条件;(禁止随意删除生产数据)
聚合查询模板:select count/sum/avg/max/min(字段) from 表名 group by 分组字段 having 分组条件;
4. 多表联查逻辑与适用场景
内连接(inner join):只查询两张表中匹配成功的数据,取两表交集,匹配不到的数据不展示,适用于需要精准查询关联有效数据的场景。
左连接(left join):以左表数据为基准,左表所有数据全部展示,右表匹配不到数据显示为空。测试中使用最多,适合查询主表全部数据、关联附表补充信息的场景。
右连接(right join):以右表数据为基准,展示右表全部数据,左表无匹配数据为空,使用场景较少。
全连接(full join):展示左右两表所有数据,无论是否匹配成功,MySQL不直接支持,可通过union拼接实现。
子查询:将一条查询语句作为另一条语句的条件,适合嵌套查询场景,可用于where、from后,使用时需保证子查询结果稳定,避免查询效率过低。
5. 索引基础原理、使用场景与优化技巧
索引是数据库的“目录”,可以大幅提升查询效率,减少数据库扫描行数。普通索引允许字段重复、可为空,适用于高频查询、非唯一字段;唯一索引字段唯一不重复,适用于手机号、账号、身份证等唯一数据字段;联合索引针对多个字段组合查询,遵循最左匹配原则。
常见索引失效场景:使用like %模糊前置匹配、索引字段参与运算、字段类型不匹配、or连接无索引字段、违反联合索引最左匹配原则、使用is null判断等,都会导致索引失效、全表扫描,降低查询性能。
索引优化技巧:高频查询字段优先建索引,避免对低频、少量数据字段建索引;联合索引将高频查询字段放在左侧;查询尽量精准,避免全表查询、模糊前置查询;减少索引字段运算,保证字段类型统一。
6. 数据库事务与隔离级别
事务具备四大特性ACID:原子性、一致性、隔离性、持久性。原子性指事务要么全部执行成功,要么全部回滚;一致性保证数据前后状态统一;隔离性是多个事务之间互不干扰;持久性指事务提交后数据永久生效。
三大事务问题:脏读是一个事务读取到另一个事务未提交的脏数据;不可重复读是同一事务内,两次读取同一数据结果不一致;幻读是同一事务内,其他事务新增或删除数据,导致前后数据条数不一致。
四种隔离级别及业务场景
读未提交:隔离级别最低,存在脏读、不可重复读、幻读,业务基本不使用。
读已提交:可解决脏读,存在不可重复读、幻读,是多数项目默认级别,适用于普通查询业务。
可重复读:解决脏读、不可重复读,存在幻读,MySQL默认隔离级别,适用于订单、交易等核心业务。
串行化:隔离级别最高,彻底解决三类问题,但性能最差,适用于金融、支付等对数据一致性要求极高的场景。
浙公网安备 33010602011771号