前言
一.数据库是什么?
1.大部分的软件都需要操作数据,比如游戏, 交,新闻,商城,财务等,这些软件都在不停地展示,存储数据,他们的数据都存储在数据库中,数据库是软件的基础.
2.测试工程师在测试的过程中,不仅需要对页面操作,还需要检查数据库中的数据是否正确,比如测试注册登录功能时,提示注册成功,但使用刚注册的信息却登录不成功,这时候需要查询数据库中是否保存了正确的注册信息,如果数据库中没保存则使用刚才的注册账 肯定登录不成功,这样可以通过数据库定位问题:注册时 没有把数据保存起来.
二.常见的数据库分类
Oracle:在大型项目中使用,比如银行,电信等项目
MySQL:web项目中使用最广泛
Microsoft SQL server:在微软项目中使用
SQL ite:轻量级数据库,主要应用于移动平台
三.SQL介绍
sql语言:通过SQL语言对数据库进行操作.
注意:对于测试工程师来说,重点是数据的查询,因此需要熟练掌握:DQL数据查询语言
补充:在MySQL中,对SQL语法不区分大小写.
四.MySQL介绍
(熟悉SQL: 是指熟悉SQL语言 而熟悉MySQL 是指用过MySQL数据库)
五.数据库的远程连接
实际工作中数据库是安装在服务器中,如果直接连接数据库进行数据校验,必须远程连接
具体连接步骤:
1.获取服务器的IP地址和数据库的账户和登录密码
2.在自己的电脑上 使用数据库工具(Navicat) 建立连接.远程连接数据库
3.连接过程中需要确认自己的电脑和服务器是否能够正常通信 (ping 命令)
注意:
(1)如果首次连接成功后,再次使用时,提示IP地址有问题,则需要重新获取虚拟机系统IP地址
(2)使用过程中,要确保虚拟机系统不会待机或进入休眠状态
3.数据表操作
数据库右键–创建表—输入字段 –保存时输入 名
4.数据操作
七.数据库的备份与还原(Navicat)平时测试时 测试前先备份数据 ,测试完之后还原数据
测试过程中会产生垃圾数据,测试结束时一般都需要还原原有数据,因此需要在测试结束时执行还原
备份操作
Finshed successfully 备份成功—点击 “关闭”即可
还原操作
1.新建一个与备份数据设置相同的数据库
2.运行上一步保存sql 文件即可
点击 开始即可
八.数据类型与约束
常用数据类型
整数 int
小数
字符串 varchar
日期时间
约束
主 键 :primary key
非空:not null
唯一 :unique
默认值 :default
外键:foreign key
九.SQL 语言
运行有两种方式,选中当前语句运行或直接全部运行
多行注释 1,选中要注释的语句,2,使用快捷键 CTRL+/ 即可 3.取消注释 CTRL+/ 即可
1.创建表操作 create table 表名(); 删除表操作 DROP TABLE 表名;
创建表CREATE TABLE 表名 (字段1 类型,字段2类型,.......);删除表drop table goods;CREATE table goods(id int primary key auto_increment, //auto_increment 自动递增goodsName VARCHAR(20),price DECIMAL(20),num int,company VARCHAR(20),beizhu VARCHAR(30));
2.增加数据(主键列 是自动增长,插入数据时需要占位,通常使用0或者default或null来占位,插入成功后以实际数据为准)
-- 添加商品-- 查询一次(查看当前表中的字段)select * from goods;-- 添加一条数据insert into goods values (0,"联想笔记本",60000.00,100,"联想", "联想无极限,快乐你我他");-- 插入的数据类型和数量和字段要匹配-- 添加多条数据insert into goods values (0,"联想笔记本",60000.00,100,"联想", "联想无极限,快乐你我他");insert into goods values (0,"雷神笔记本",80000.00,90,"雷神", "雷神来了");
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];添加字段
3.修改数据(修改数据时 必须给出限定条件 where 后面的字段)
修改数据前,先查询一下select * from goods;UPDATE goods set price=4500.00,num=70,company="惠普",beizhu="惠普掉价了" WHERE id=4;
4.删除修改数据
-- 删除数据-- 语法格式 delect from 表名 where 条件;-- -- 先查询所有数据 select * from goods;delete from goods where id = 4;-- 注意:执行删除数据时,务必给出限定条件,否则会删除所有数据
SQL语句 单表查询
查询数据 之基本查询:
drop table students; create table students(studentNo varchar(10) primary key,name varchar(10),sex varchar(1),hometown varchar(20),age tinyint(4),class varchar(10),card varchar(20));select * from students;-- 查询所有数据 select * from 表名;insert into students values('001','王昭君','女','北京','20','1班','340322199001247654'),('002','诸葛亮','男','上海','18','2班','340322199002242354'),('003','张飞','男','南京','24','3班','340322199003247654'),('004','白起','男','安徽','22','4班','340322199005247654'),('005','大乔','女','天津','19','3班','340322199004247654'),('006','孙尚香','女','河北','18','1班','340322199006247654'),('007','百里玄策','男','山西','20','2班','340322199007247654'),('008','小乔','女','河南','15','3班',null),('009','百里守约','男','湖南','21','1班',''),('010','妲己','女','广东','26','2班','340322199607247654'),('011','李白','男','北京','30','4班','340322199005267754'),('012','孙膑','男','新疆','26','3班','340322199000297655');
01.原表:select * from students 查询所有数据
02.查询 名字和年龄字段 修改”*”换成某个字段名即可,多个字段使用”,”逗 隔开。
select name,age from students;
03.给某些字段 起别名:使用 “as”关键字 后跟别名即可 (”as” 可省略)
select name as ‘姓名’,age as ‘年龄’ from students;
04.去重练习 DISTINCT 例如 去除students表中 年龄相同的,
select DISTINCT(age) from students;
05.条件查询练习 :where条件,比较运算符=,逻辑运算符and
-- 条件查询 :where条件,比较运算符=,逻辑原算符and-- 查询性别为女,且属于1班的同学 显示这些同学姓名。select * from students;select name,sex,class from students where sex ='女' and class = '1班';
06.模糊查询
-- 模糊查询 like (%字符 )-- 语句格式: where 字段 like '%信息' -- 注意; '%信息'表示以 信息结尾的内容。'信息%'表示以 %前的内容 '%信息%' 表示包含信息的内容-- 扩展-- 查询全部学员身份证 码中包含 '24'的同学 select * from students WHERE card like '%2354';select * from students WHERE name like '%乔%';select * from students WHERE name like '百里%';
07.条件查询之范围查询
select * from students;-- 查询 所有年龄在18岁 到20岁之间的学员的名字-- 范围查询 between 起始值 and 结束值 ,表示的是一个连续的范围 -- 注意:范围必须 从小到大写select name ,age from students WHERE age between 18 and 20;-- 条件查询---范围查询:在一个不连续的范围内 in(条件1,条件2........)select name ,age from students WHERE 字段名 in(条件1,条件2........);
08.条件查询之空判断
注意:
null 和” ” 是不同的。判空语法格式: is null 判非空语法格式: is not null
例如1:查询没有填写身份证的学员
例如2:查询填写身份证的学员
排序 排序查询 语法格式: ORDER BY 字段名 asc(升序) ,desc(降序)
ORDER BY 字段名 【默认情况下 升序】
ORDER BY 字段名 asc【升序】
ORDER BY 字段名 desc【降序】
--排序查询 语法格式: ORDER BY 字段名 asc(升序) ,desc(降序) select * from students;--查询所有学员信息,按年龄从小到大排序 ORDER BY 字段名 select name,age from students ORDER BY age;--查询所有学员信息,按年龄从大到小排序select name,age from students ORDER BY age DESC ;--查询所有学员信息,按年龄从大到小排序 年龄相同时 根据班级从小到大排序select name,age from students ORDER BY age DESC,class asc;
聚合函数
使用聚合函数方便进行数据统计,聚合函数不能在where中使用
常用的聚合函数
count( *) :查询总记录数
max( ):查询最大值
min( ):查询最小值
sum( ):求和
avg( ):求平均值
select * from students;-- 聚合函数 -- 查询数据总数select count(*) from students; -- 显示12条数据-- select count(card) from students;-- 显示11条数据 注意 统计数据时,推荐使用(*)-- 最大值(字段名)select max(age) from students;-- 最小值(字段名)select min(age) from students;--平均年龄(字段名)select avg(age) from students;-- 求和sum(字段名)select sum(age) from students where sex="男";
分组查询
-- 分组查询 ORDER BY 字段名 ,一般情况下结合聚合函数一起使用,--目的是对分组后的数据再进一步统计select sex , count(*) from students GROUP BY sex;
注意:如果想在分组后再次进行条件筛选,可以使用 having 关键字
where 是对from后面指定的表进行数据筛选,属于对原始数据筛选
having 是对 group by 的结果进行再筛选
如图所示,统计出来女同学的数量
分页
1.获取部分行
语法格式:select * from 表名 limit start, count
表示从 start开始,获取count条 数据
start索引从0开始(在计算机中 计算机计数从0开始,这个计数方法称为”索引”)
起始索引:实际数据数据-1 =对应的索引值
例如:查询前3行信息
select * from students limit 0, 3
2.分页查询
已知:每页显示m条数据,求:显示第n页的数据
select * from students limit (n-1)*m , m;
-- 假设当前数据中,每页显示3条数据,查看第二页时 套入公式 limit (n-1)*m , mSELECT*FROM students LIMIT 3,3;
SQL语句 多表查询
案例中 所使用的 表1
案例中 所使用的 表2
1.内连接
表1 INNER join 表2 on 表1.字段 = 表2.字段
需求1:查询所有存在的商品分类的 商品信息-- 内连接 练习:查询所有存在的商品分类的商品信息-- 只显示两张表存在对应关系的数据,-- 表1 INNER join 表2 on 表1.字段 = 表2.字段SELECT*from good inner join category on good.typeid = category.typeid;
2.左连接
左连接 以 “left join “关键字为界,显示左边所有信息,右边满足条件的则显示,不满足条件的用null表示出来即可 【前后2表可以更换–显示效果不同】
方法1:
-- 需求2 查询所有商品信息,包含商品分类-- 左连接 以 "left join "关键字为界,显示左边所有信息,右边满足条件的则显示,不满足条件的用null表示出来即可select * from good left join category on good.typeid = category.typeid;
方法2:
需求3 查询所有商品分类,及其对应的商品信息select * from category left join good on good.typeid = category.typeid;
3.右连接
主要解决3张及3张以上的表进行连接查询时比较常见。
右连接 以right join 关键字为界,关键字右侧的表格 全部显示出来,而关键字左则对表有对应部分的显示,没有对应的部分 显示 为null
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!