软件测试之MySQL数据库必知必会,面试必备!软件测试文章

首先,我们经常说的MySQL是一个数据库管理系统,而非数据库。数据库是组织、存储和管理数据的仓库,存储数据的容器。而数据库管理系统是操纵和管理数据库的大型软件,建立、使用和维护数据库。数据表是真正的数据存储单元,其他对象的基础。三者之间的关系为:一个数据库管理系统维护了多个数据库,一个数据库包含若干数据表。

关于数据库的分类,可能有很多种分类。一般来说,我们用到最多的就是关系型数据库和NoSQL数据库。而其中关系型数据库又是应用最为广泛的。1.2SQL语句概念及分类

SQL:一种结构化查询语句,用于访问和操作数据库的标准计算机语言。通常用途为操作数据库对象(表、存储过程、函数、索引),表记录的增删改查。SQL是一门弱语言,不区分大小写。通常,将SQL语句分为下面五大类。

1.3MySQL数据类型

MySQL支持多种数据类型,大致可以分为四大类,如下图所示。关于MySQL数据类型的详细内容,请参考链接MySQL常见的数据类型

查询所有数据库

showdatabases;创建数据库

createdatabase数据库名称;删除数据库

dropdatabase数据库名称;查询数据库详情、查看数据库的字符集

showcreatedatabase数据库名称;创建指定字符集数据库

##创建数据库语句后面用characterset设置数据库字符集,注意这里是utf8,不是utf-8createdatabase数据库名称charactersetgbk/utf8;选中数据库

##创建数据库表语句如下:CREATETABLEIFNOTEXISTS表名(字段名1字段类型,字段名2字段类型)ENGINE=InnoDBDEFAULTCHARSET=utf8;##实际案例语句CREATETABLEIFNOTEXISTSNUMBER(IDINTNOTNULLAUTO_INCREMENT,USERNAMEVARCHAR(40),PRIMARYKEY(ID))ENGINE=INNODBDEFAULTCHARSET=UTF8;查询所有表

showtables;查询表详情

showcreatetable表名;查看表结构

desc表名;删除表

renametable原表名to新表名;修改表引擎和字符集

altertable表名engine=innodb/myisamcharset=gbk;添加表字段(在最后)

altertable表名add字段名字段类型;添加表字段(最前面)

altertable表名add字段名字段类型first;添加字段(某个字段后添加)

altertable表名add字段名A字段A类型after字段名B;删除表字段

altertable表名drop字段名;修改表字段名称和类型

对于测试工程师而言,SQL语言中最常用的就是DML——数据操作语言,即为增删改查。而其中用到最多的就是DQL——数据查询语句。插入数据(全表插入)

insertinto表名values(字段1值,字段2值);insertinto表名values(字段1值,字段2值),(字段1值,字段2值);插入数据(指定字段)

insertinto表名(字段1,字段2)values(值1,值2);insertinto表名(字段1,字段2)values(值1,值2),(值1,值2);删除数据

#删除指定数据deletefrom表名where字段名=值;#删除表中全部数据deletefrom表名;修改数据

#修改指定值update表名set字段名=值1where字段名=值2;#修改全部值update表名set字段名=值1;查询数据

#查询所有select*from表名三、DQL(查询)详解DQL即为数据查询语句,也是使用最多的一种SQL语句。将该部分的内容分为以下几部分:其中最为常用的是关联查询、分组、分页、排序、条件查询这几种。对于其中常用的where、groupby、having、orderby、limit,其顺序为:·select*from表Ajoin表Bon条件where条件groupby分组字段having聚合函数过滤orderby排序字段limit...3.1条件查询

判断是否为空(isnull、isnotnull)

#分别代表大于、小于、大于等于、小于等于、不等于、不等于#案例查看图书表中图书id大于2的图书信息SELECT*FROMbookWHEREbook_id>2and和or

##等同于&&和||,表示同时满足两个条件和满足两个条件中一个##案例1:查询图书借阅表中用户id和图书id都为1的图书信息SELECT*FROMbook_borrowWHEREuser_id=1ANDbook_id=1;##案例2:查询图书借阅表中用户id为1或者图书id为1的图书信息SELECT*FROMbook_borrowWHEREuser_id=1ORbook_id=1;in在某些可选值范围内

#select*from表名where字段in(值1,值2,值3);#案例1查询图书借阅表中读者id在1,2,3范围内SELECT*FROMbook_borrowWHEREuser_idin(1,2,3);between和notbetween

#字段between值1and值2;字段在值1和值2之间#案例1:查询图书借阅表中读者id在1-2范围内,包含1和2SELECT*FROMbook_borrowWHEREuser_idBETWEEN1AND2;模糊查询like_代表单个字符,%代表0个或多个字符

别名——使用as关键字或空格给表名或字段别名

#案例查询员工表中所有的员工名称,且不重复selectdistinctemployeeNamefromemployee;3.3排序、分页查询

排序——orderby(ASC升序默认、DESC降序)

#案例:查询学生表数据并以id降序、年龄升序排序select*fromstudentorderbyiddesc,age;分页查询——limit跳过条数A每页数量B

聚合函数——sum(字段名)求和

#案例对分数表中分数进行求和SELECTSUM(a.score)FROMtable_socreasa;聚合函数——avg(字段名)平均值

#案例求分数表中分数平均值SELECTAVG(a.score)FROMtable_socreasa;聚合函数——max(字段名)最大值

#案例求分数表中最大值SELECTMAX(a.score)FROMtable_socreasa;聚合函数——min(字段名)最小值

#案例求分数表中最小值SELECTMIN(a.score)FROMtable_socreasa;聚合函数——count(字段名)统计数量

分组——groupby

groupby的常规用法是配合聚合函数,利用分组信息进行统计。

#案例以title字段分组,查询每个分组中score的最大值SELECTt.t.title,MAX(score)FROMtable_socretGROUPBYt.title;having——解决聚合函数过滤问题,一般配合groupby一起使用。

#案例以title字段分组,查询每个分组中score的最大值,并且通过最大值必须大于20来过滤数据SELECTt.t.title,MAX(score)FROMtable_socretGROUPBYt.titlehavingMAX(score)>20;3.6子查询

写在where/having后作为查询条件的值

#案例查询员工工资最低的员工信息,由于可能最低有多个员工,所以需要先查询出最低工资SELECT*FROMemployeesWHEREsalary=(SELECTMIN(salary)FROMemployees);临时表——用在from后面,当做一个新表,新表必须有名称

#案例将一个查询结果作为一个新表,让后从这个新表中查询数据selectcou,namefrom(selectcount(*)AScou,enabledASnamefrom`user`groupbyenabled)asawherecou>03.7关联查询

参考链接:Mysql中的关联查询(内连接,外连接,自连接)

内连接——表Ainnerjoin表Bon条件,特点:只查询连接的表中能够有对应的记录的数据

#查询员工姓名及对应部门名称没有部门的人员和没有人员的部门都不显示SELECTe.empName,d.deptNameFROMt_employeeeINNERJOINt_deptdONe.dept=d.id;左外连接——表Aleftjoin表Bon条件,特点:以左边的表的数据为基准,去匹配右边的表的数据,如果匹配到就显示,匹配不到就显示为null

#查询员工表中员工姓名及对应部门名称,若员工没有部门,则显示nullSELECTe.empName,d.deptNameFROMt_employeeeLEFTJOINt_deptdONd.id=e.dept;右外连接——表Arightjoin表Bon条件,特点:与坐外连接类似,只是基准表变了,用右表去匹配左表。所以左外连接能做到的事情,右外连接也能做到。

#查询所有部门和对应的员工,如果部门没有员工,则显示nullSELECTe.empName,d.deptNameFROMt_employeeeRIGHTJOINt_deptdONd.id=e.dept;自连接——当前表与自身连接查询

#查询员工以及他的上司的名称,由于上司也是员工,所以这里虚拟化出一张上司表SELECTe.empName,b.empNameFROMt_employeeeLEFTJOINt_employeebONe.bossId=b.id;四、约束、索引、存储过程、事务4.1约束

MySQL中约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

4.2索引

MySQL中的索引是一种高效获取数据的存储结构——B+Tree;MySQL中索引的好处在于加快查询速度,坏处就是降低了增删改的速度,增大了表的文件大小(索引文件可能比数据文件还要大)。MySQL索引实现原理可以参考:mysql索引实现原理#1.如何创建索引注意:添加主键约束是,会自动创建主键字段的索引createindex索引名on表名(字段);#2.查看索引showindexfrom表名;#3.删除索引dropindex索引名on表名;

4.3存储过程

MySQL中存储过程类似于函数,就是把一段代码封装起来,当要执行这一段代码的时候,可以通过调用该存储过程来实现。#1.查看数据库中的存储过程showprocedurestatus;#2.查看存储过程的创建代码showcreatePROCEDURE存储过程名;#3.创建存储过程CREATEPROCEDURE名称()BEGIN.........END#4.创建存储过程,并执行存储过程#4.1创建存储过程dropprocedureifexistsproc_addNum;createprocedureproc_addNum(inxint,inyint,outsumint)BEGINSETsum=x+y;end#4.2执行过程,out输出返回值callproc_addNum(2,3,@sum);select@sum;4.4事务

参考链接:MySQL数据库事务的四大特性以及事务的隔离级别

事务:是数据库中执行SQL语句的工作单元,可以保证事务内的SQL语句要么全部成功,要么全部失败。

THE END
1.Mysql图书借阅管理系统图书馆借阅管理系统数据库设计2.9为Book表的书名字段增加普通索引 2.10设计借书步骤。 2.11查询表BorrowRecord。 2.12设计还书步骤。 2.13查询表BorrowRecord。 四、总结 1.实验成果 成功设计并实现了一个数据库图书馆系统用于管理图书信息、读者信息、借阅记录以及图书归还记录。系统需要支持图书借阅、归还以及查询借阅历史等功能。 https://blog.csdn.net/2401_84359249/article/details/144065825
2.图书借阅管理MySQL涉及到的表图书借阅管理数据流图图书借阅管理MySQL涉及到的表 图书借阅管理数据流图 一、执行者与执行者之间的唯一关系(继承) A.解释 执行者与执行者之间只有一种关系即继承(也叫泛化)。其意义与面向对象过程中的继承关系类似,但它主要强调子类执行者对父类执行者与用例之间的交互行为的继承。https://blog.51cto.com/u_16213583/11800830
3.4.2图书借阅系统数据库设计MySQL腾讯云开发者社区图书馆作为一种信息资源的交换场所,图书和用户借阅资料繁多,包含很多数据信息的管理,因此实现图书管理的电子信息化,可以简化繁琐的工作模式,有效解决图书借阅过程中的诸多问题,给图书管理员和借阅者带来极大的便利。 图书借阅系统是为了满足图书馆借阅图书的工作而设计的,它的功能主要分为数据维护和基本功能两大模块。其中https://cloud.tencent.com/developer/article/2266828
4.MySQL表设计教程:创建一个简单的图书借阅表mysql教程在数据库中设计表格是数据库开发中的一项重要任务。本教程将会以创建一个简单的图书借阅表为例,教你如何用MySQL来进行表设计。 首先,我们需要创建一个新的数据库。在MySQL中,可以用以下命令创建一个新的数据库: CREATE DATABASE library; 接下来,我们需要选择刚创建的数据库: https://www.php.cn/faq/571617.html
5.图书管理系统:使用jsplayuimysql完成的Web端图书管理系统一、用户模块 二、图书管理员模块 三、系统管理员模块 sql表 二、部署 2.1 乱码 2.2 点击登录无反应 2.3 账号密码不正确 2.3 其他问题 三、项目演示 用户 图书管理员 系统管理员 一、项目介绍 项目简介 使用jsp、layui、mysql完成的图书馆系统,包含用户图书借阅、图书管理员、系统管理员界面,功能齐全。 开发工具https://toscode.mulanos.cn/mingyuefusu/tushuguanlixitong
6.mysql创建图书馆数据库和表mysql创建MySQL图书馆数据库及表的详细指南 引言 在数字化时代,图书馆管理系统的建设变得越来越重要。MySQL作为一款功能强大的开源关系型数据库管理系统,被广泛应用于图书馆数据库的构建中。本文将详细介绍如何使用MySQL创建一个图书馆数据库及其相关表,以便于管理和检索图书信息。 https://blog.yyzq.team/post/502278.html
7.Java课程设计基于JavaSwing的图书管理系统mysql数据库 intelliJ IDEA 一、功能结构 图书管理系统分为用户界面和管理员界面,结构下图所示: 二、项目预览 用户界面: 管理界面: 三、数据库的设计 E—R图设计: 1、用户实体的设计 2、图书实体的设计 3、图书类别实体 4、图书借阅详情实体 四、数据表的设计 https://maimai.cn/article/detail?fid=1801466866&efid=wr3zs7fsyMh7Zz9KNa4xFg
8.mysql数据库建表mysql数据库建表user,book,record的代码通过以上代码示例,我们可以看到在MySQL中建表的基本语法和常用数据类型。建表不仅仅是定义数据表的结构,还可以通过添加约束条件和外键关联等操作,提高数据的完整性和安全性。合理设计和规范建表可以提高数据库的性能和可维护性,对于数据的存储和管理具有重要意义。无论是用户表、图书表还是借阅记录表,都是数据库中常见https://www.nzw6.com/30633.html
9.Java+MySQL实现图书管理系统(完整代码)javamysql-connector-java-8.0.13.jar 三、效果图: 登录界面: 主界面: 借阅书籍管理: 个人书库管理: 更改密码: 四、数据库设计 1)图书表 2)用户表 两个数据表间没有关联: 五、JAVA层次分析 (1)逻辑图 (2)包结构,采用MVC三层架构组织各个模块 六、主要Java代码分析 Dao类(以BookDao为例) 1 2 3 4 5 6 https://www.jb51.net/article/204372.htm
10.基于SpringBoot地质档案信息系统研发过程使用前后端分离的开发模式, 通过Layui开发前台页面的主要部分, 并结合Spring Boot框架搭建后端微服务实例, 以关系型数据库MySQL及非关系型数据库Redis共同作为系统数据存储的载体, 建立了用户管理、档案入库、档案借阅归还、OCR图片识别等功能模块. 系统将地质档案进行电子化存储, 促进了资源共享、统一调用, 减少https://c-s-a.org.cn/html/2022/12/8834.html
11.mysql数据库知识6数据库表记录的操作侑妳才完美/*图书类别表*/ insert into bookcategory(category,parent_id)values('计算机',0),('医学',0),('编程语言',1),('数据库',1),('儿科学',2); /*图书信息表*/ insert into bookinfo(book_id,book_category_id,book_name,author,price,press,pubdate,store) https://www.cnblogs.com/hjf001/p/15101852.html
12.《MySQL数据库管理与开发(慕课版)》小说在线阅读本书系统全面地介绍了有关MySQL数据库应用开发所涉及的各类知识。全书共分13章,内容包括数据库设计概述、MySQL概述、MySQL数据库管理、MySQL表结构管理、表记录的更新操作、表记录的检索、视图、触发器、存储过程与存储函数、备份与恢复、MySQL性能优化、事务与锁机制、综合开发案例——图书馆管理系统。本书最后还附有12https://www.qidian.com/book/1024232322/
13.图书借阅管理系统:SpringBoot+MyBatis+thymeleaf+MySQL+更改yml文件中数据库连接配置 导入数据库表结构与数据(SQL文件已上传至目录) 使用说明 端口号:8087 访问路径:localhost:8087/book 登录用户名admin,密码1 结构说明 --图书管理 --图书列表 --借阅记录 --图书类型 简介 Spring Boot + MyBatis + thymeleaf + MySQL + jQuery + ajax等实现轻便的图书借阅管理系统https://gitee.com/superb12580/BookInfo
14.网络中心包括课堂与实训室数字化教学资源(媒体素材、试题、试卷、课件、案例、文献资料、网络课程、教学工具软件APP、常见问题解答和资源目录索引等)、仿真实训资源(仿真实验软件、仿真实训软件和仿真实习软件等)、数字场馆资源(职业体验馆、数字博物馆、数字艺术馆、数字科技馆、图书馆资源等),也规定了数字资源管理与共享的要求http://www.xtzy.com/wlzx/detail.jsp?public_id=153330
15.图书馆借书系统图书馆借书系统实现图书管理功能,用户分两类,一类是管理员,一类是普通借阅者,管理员只能有一个,借阅者需要注册,由管理员通过验证后,才能登陆到本系统进行书籍的查询和借阅。 1.1 开发图书馆借书系统的目的和意义 通过程序设计实训,达到以下目的: (1) 熟练掌握 C 语言的各种数据类型、运算符、表达式,各种程序控制结https://zhuanlan.zhihu.com/p/657709700