查找文件
01.在路径下创建adir,bdir两个文件夹
mkdir adir bdir
02.在adir目录下创建文件 f_demo
touch adir/f_demo
03.切换路径到bdir目录下
cd bdir
04.在当前目录下从/root 目录中查找 f_demo 文件
find /home/admin/ -name ‘*mo’
说明
1、命令格式 find 查找路径信息 -name目标文件名
注意:
1、目标文件名可以省略引号
2、文件名部分支持使用*实现模糊匹配
3、如果当前用户对目标路径没有访问权限,则无法执行查找文件动作
ln -s 链接文件
注意:需要使用 -s 创建软链接(类似于 Windows 系统下的快捷方式)
ln -s demo ldemo
ldemo ->demo
01.在当前路径下创建文件demo
touch demo
02.在demo文件创建链接文件为ldemo
ln -s demo ldemo
03.修改ldemo链接文件的内容
ldemo -> demo
ls > demo
cat demo
04.查看demo文件的内容是否同样变化
ls -l > demo
05.修改demo文件内容,查看ldemo链接文件是否同样变化
cat ldemo
在Linux系统中存在两种链接文件方式
ln -s 原文件 链接文件名:软链接 类似Windows 下的快捷方式
ln 原文件 链接文件名 硬链接 类似复制文件
注意,删除原文件 链接文件会失效
扩展:硬链接
创建文件
touch demo
创建硬链接文件
ln demo hdemo
修改原文件内容
ls > demo
查看链接文件内容
cat hdemo
修改链接文件内容
ls -l > demo
查看原文件内容
cat hdemo
删除原文件
rm demo
链接文件任然可用
cat hdemo
软链接
链接文件 ≠ 文件 ≠ 文件内容,内存
如果文件被删除,软链接文件失去指向 ,变为不可用
硬链接
文件归纳管理
打包文件
tar -zcvf 打包文件.tar.gz 被打包的文件/路径
解包文件
tar -zxvf 打包文件.tar.gz
解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
01.在当前路径下创建atdir btdir 两个文件夹
mkdir atdir btdir
02.在atdir 目录下创建 aa bb cc三个文件
cd atdir
touch aa bb cc
03.分别用三种压缩方法对atdir目录进行用压缩
cd -
ls
tar -zcvf atdir.tar.gz atdir/
04.分别解压上一步产生的压缩包文件内容至btdir目录下
tar -zxvf atdir.tar.gz -C btdir/
注意 不要在目标文件内部,执行打包压缩文件操作
返回上一级目录
-z gzip 压缩
-c 打包
-v 显示过程
–f 制定文件
-z gzip 解压
-x 捷包
-v 显示过程
-f 指定文件
-c 用于指定解压目录
zip [-r] 打包文件 被压缩的文件
unzip -d 解压后的目录 打包文件.zip
ls
hdemo
zip -r atdir atdir
unzip -d btdir/ atdir.zip
vi 有三种基本工作模式
命令模式
文本输入模式
末行模式
vi demo
i
01.在当前目录下利用vi命令创建文件 vi_demo 并打开
vi vi_demo
02.修改 vi_demo 文件内容为:hello linux
下面是插入的时候就是输入模式
推荐记忆字母i,insert,插入
hello linux
03.保存文件内容并退出vi模式
出现 : 进入末行模式
wq!
04.查看vi_demo 文件内容,确认修改是否完成!
cat vi_demo
yum 软件包管理工具
说明:
yum 一个在Linux系统中常见的软件包管理器
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简捷又好记
yum list:列出所有可安装的软件清单
yum search :查找软件包
yum install < package_name > : 安装指定的软件
数据库
说明:数据库是专门用来存储数据的软件
注意:对于测试工作而言,如果项目页面没有实现,但是我们又想要检验数据,则可以通过直接查询数据库实现
关系:具体存在的商品录入后 -》 产生对应的数据(存到数据库中) -》 最后被加载到项目页面中
数据库的分类
分类:
1》关系型数据库:以数据表为核心
2》非关系型数据库:不存在数据表的概念
关系型数据库: RDMS关系型数据库系统
常见的关系型数据库
Oracle
MySQL
Mincrosoft SQL Server
SQLite
关系型数据库的核心要素
数据行(一条记录)
数据列(字段)
数据表(数据行的集合)
数据库(数据表的集合,一个数据库中能够有 n 多个数据表)
SQL语言
SQL:结构话查询语言,通过SQL语言可以对数据库进行操作
注意:
1、SQL 语言默认支持操作所有常见的关系型数据库
2、作为测试人员,必须要掌握SQL 的查询语句
DQL:数据查询语言,用于对数据进行查询寻
3、对于MySQL 而言,编写SQL 语句时,不区分字母的大小写
MySQL 数据库介绍
说明:是一个关系型数据库管理系统,目前属于Oracle 旗下产品,目前为止 MySQL 社区版是可以免费使用的
特点:开源/免费/跨平台/跨语言
数据库连接工具Navicat
说明:由于数据库软件处于服务器中,想要操作数据库,就必须使用工具远程连接数据库后,进行操作
连接数据库操作步骤
说明:将来在工作中,想要远程连接数据库,需要具备以下条件
1》数据库所在服务器的IP 地址及数据库的端口号
2》向相关人员获取数据库的账号和密码
3》使用数据库连接工具,远程连接数据库即可
注意:远程连接需要注意网络连通性
数据类型
对于填入的数据值本身进行控制,保证数据准确性
整数:int,有符号范围,无符号范围
小数:decimal,decimal(5,2)表示共存5位数,小数占2位,整数占3位
字符串:varchar,范围,varcchar(3)表示最多存3个字符,一个中文或一个字
日期时间:datetime,范围(1000-01-01 00:00:00 ~9999-12-31 23:59:59)
在设计表页面内,选择对应字段,勾选无符号,不支持负数,设置
约束
主键(primary key):能够唯一识别表中的每一条记录的属性组
非空(not null):此字段不允许填写空值
唯一(unique):此字段的值不允许重复–在索引页,在字段里面点击增加数据,点击card,之后点击对,之后再索引类型类选择UNIQUE ,选择唯一,要求当前字段内选择唯一。
默认值(default)当不填写此值时会使用默认值,如果填写时以填写为准
外键(foreign key):一个表中的一个字段引用另一个表的主键
注意:如果查询窗口内具备多条SQL语句,需要先选中目标语句再执行
数据库操作
创建数据库
创建数据库
create database 数据库名 charset = utf8 collate= utf8_general_ci;
创建一个python的数据库
create database python charset=utf8 collate = utf8_general_ci;
查看数据库
show create database 数据库名;
show create database python;
使用数据库
使用数据库(切换数据库)
use 数据库名
use python;
查看当前数据库:database()时SQL的内置函数,括号不能省略!
select database();
修改数据库
创建
create database testpython chrset=gb2312;
修改
alter database 数据库名
[default] character set 编码格式
[default] collate 排序规则;
alter database testpython
default character set utf8mb4
default collate utf8mb4 general ci;
删除数据库和查看所有数据库
删除数据库
drop database 数据库名;
drop database python;
查看所有数据库
show databases;
数据库备份
应用场景
说明:
再测试工作中,为了防止对数据库产生错误操作,或产生垃圾数据,都需要在操作前,适当对数据库进行备份操作
垃圾数据:例如在自动化测试中,对注册模块操作生成的所有数据,属于典型的垃圾数据,应该清理
备份方法
利用工具
数据库-》转存SQL文件-》结构+数据
字符:数据值(仅字段)
说明:一般要选择字符和数据值一起备份
自行选择存放位置
备份结束
还原操作
数据库-》运行SQL文件
通过备份文件还原数据库
还原
使用命令备份
命令是不需要连接到数据库以后执行的!(非mysql > 模式)
mysql> 为SQL语句编写模式,非Linux命令行模式
mysql -u 数据库用户名 -p 数据库密码
说明:命令行方式连接书库
mysql,此模式仅支持SQL语句
备份命令
mysqldump -u数据库用户名 -p 目标数据库名 > 备份文件名.sql
mysqldump -uroot -p test > test.sql
还原命令
mysql -u数据库用户名 -p目标数据库名 < 备份呢文件名.sql
mysql -uroot -p test < test.sql
注意:需要根据提示输入数据库密码,执行数据库备份与还原操作
创建表
create table 表名(
字段名 类型 约束,
字段名 类型 约束
)
简单创建
create table stu(
name varchar(5)
);
完整创建
unsigned:无符号
primary key:主键
auto_increment:自动增长
create table students(
id int unsigned primary key auto_increment,
name varchar(20),
age int unsigned,
height decimal(5,2)
);
查看表
show create table 表名;
show create table students;
判断表存在移除再创建
判断表是否存在,存在时先删掉再创建
drop table : 删除表
if exists students :如果 students 存在
drop table if exists students;
create table students(
id int unsigned primary key auto_increment,
name varchar(20),
age int unsigned,
height decimal(5,2)
);
通过Navicat 工具获取创建语句的方法
查看表结构和删除表
查看表结构(字段)
desc 表名;
desc students;
删除表
drop table 表名;
drop table students;
增加一行数据
insert into 表名 values()
注意:
1、数据值需要和表的字段–对应(数据个数及数据类型)
2、主键列是自动增长,插入时需要占位,通常使用0或者default或者null来占位,插入成功后以实际数据为准
insert into student values(0,‘张三’,28,1.78);
增加部分值
insert into 表名(字段1) values(值1)
注意:值的顺序与给出的字段顺序对应
insert into students(name,height)values('李四‘,1.68);
添加多行数据
插入多行数据
方法1:将单行插入数据,多句执行,每句分开隔开
insert into students values(0,‘王五’,28,1.78);
insert into students(name,height)values(‘赵六’,1.68);
方法2:在插入单行数据的语法基础上,将value后边的数据进行多组化处理
insert into 表名 values(```)
insert into 表名(列1,···)values(值1··),(值1···)
insert into students values (0,’王五1’,29,1.78),(0,‘王五2’,30,1.78);
insert into students(name,height)values(‘赵六1’,1.78),(‘赵六2’,1.99);
修改数据
update 表名 set 列1=值1,列2=值2```where 条件
注意:where不能省略,否则会修改整列数据
删除数据
delete from 表名 where 条件;
注意:where不能省略,否则会删除全部数据
delete from students where id=6;
逻辑删除
对于重要的数据,不能轻易执行delete语句进行删除。因为一旦是删除,数据无法恢复,这时可以进行逻辑删除。
1、给表添加字段,代表数据是否删除,一般起名isdelete,0代表未删除,1代表删除,默认值为0
2、当要删除某条数据时,只需要设置这条数据的isdelete字段为1
3、以后在查询数据时,只查询出isdelete为0的数据
说明:所谓逻辑删除,就是通过某一特定字段的特定值表示删除,1,或未删除0,状态
1、修改要删除的数据的特定字段为删除状态
update students set isdelete =1 where id =4;
2、查询所有isdelete 字段为0的所有数据
select * from students where isdelete =0;
其他删除数据的方法
delete from 表名:删除所有数据,但是不重置主键字段的计数
truncate table 表名:删除所有数据,并充值主键字段的计数
drop table 表名:删除表(字段和数据均不再存在)
delete from students;
truncate table students;
drop table students;
delete from ==清空表
truncate table == 截断表
drop table 删除表
基本查询
查询所有数据
select * from 表名;
select * from goods;
查询部分字段:
select 字段名1,字段名2 from goods;
select goodsName, price from goods;
起字段别名
select 字段名 as ‘别名’ from goods;
注意:别名的引号可以省略
select goodsName as ’商品名称‘ , price as ‘价格’ from goods;
select goodsName as 商品名称 , price as 价格 from goods;
as关键字也可以省略
select goodsName 商品名称,price 价格 from goods;
起别名的作用
1、美化数据结果的显示效果
2、可以起到隐藏真正字段名的作用
另
除了可以给字段起别名以外,还可以给数据表起别别名(连接查询时使用)
去重: select distinct(字段名) from goods;
效果:将目标字段内重复出现的数据只保留一份显示
小需求:显示所有的公司名称
select distinct(company) from goods;
条件查询
比较运算符 & 逻辑运算符
查询价格等于300并且出自拼喜喜的所有商品信息
select * from goods where price =30 and company=‘拼喜喜’;
注意:作为查询条件使用的字符串必须带引号
查询价格等于30但不出自拼喜喜的所有商品信息
select * from goods where not company =‘拼喜喜’ and price =30;
注意:not 与 and 和or (左右两边连接条件)不同之处在于,not 只对自己右侧的条件有作用(右边连接条件)
select * from goods where price = 30 and not company = ’ 拼喜喜’;
模糊查询
查询全部一次性口罩的商品信息
模糊查询:like 和符号 %(任意多个字符)/ _ (任意一个字符)
注意:作为查询条件使用的字符串必须带引号!
注意:如果需要控制字符数量,需要使用_,并且有几个字符就使用几个_
%关键字%:关键字在中间
select * from goods where remark like ‘%一次性’;
select * from goods where remark like ‘一次性%’;
范围查询
查询所有价格在30-100的商品信息
非连续范围:in
连续范围:between ```and
select * from goods where price between 30 and 100;
select * from goods where hometown in ('北京;‘上海’);
判断空
查询没有描述信息的商品信息
注意:在MySQL中,只有显示为NULL 的才为空!其余空白可能是空格/制表符(tab)/换行符(回车键)等空白符号
判断空:
1、为空 :is null
2、不为空(双重否定表肯定):is not null
select * from goods where remark is null;
查询有描述信息的所有商品
select * from goods where remark is not null;
排序
查询所有商品信息,按照价格从大到小排序,价格相同时,按照数量少到多排序
select * from 表名 order by 列1 asc|desc,列2 asc|desc,
说明:
order by 排序
asc:升序
desc:降序
注意:排序过程中,支持连续设置多条排序规则,但离order by关键字越近,排序数据的范围越大!
select * from goods order by price desc;
select * from goods order by prie desc,count asc;
注意:默认排序为升序,as省略
select * from goods order by price desc, count;
聚合函数
对于一组数据进行计算返回单个结果的实现过程
使用聚合函数方便进行数据统计
聚合函数不能在where子句中使用
count():查询总记录数
max():查询最大值
min():查询最小值
sum():求和
avg():求平均值
count(*)计算总行数,括号中也可以使用字段名
查询以下信息:商品信息总条数;最高商品价格;最低商品价格;商品平均价格,一次性口罩的总数量
聚合函数:系统提供的一些可以直接用来获取统计数据的函数
商品信息总条数:count(字段):查询总记录数
select count (*) from goods;
注意:统计数据总数,建议使用 * ,如果使用某一特定字段,可能会造成数据总数错误!
select count (remark) from goods;
最高
select max(price) from goods;
最低
select min(price) from goods;
平均
select avg(price) from goods;
求和
select sum(count) from goods where remark like ‘%一次性%’;
注意:
在需求允许的情况下,可以一次性在一条SQL语句中,使用所有的聚合函数
分组
select 字段1,字段2,聚合··· from 表名 group by 字段1,字段2
一般情况,使用哪个字段进行分组,那么只有该字段可以在 * 的位置处使用,其他字段没有实际意义(只要一组数据中的一条)
分组操作和聚合函数配合使用
select count() from goods group by company;
select * from goods;
select company, count() from goods group by company;
分组后条件过滤
group by 后增加过滤条件时,需要使用haviing 关键字
1、group by 和having 一般情况下需要配合使用
2、group by 后边不推荐使用where进行条件过滤
3、having关键字后侧可以使用的内容与where完全一致(比较运算符/逻辑运算符/模糊查询/判断空)
4、having 关键字后侧允许使用聚合函数
where和having 的区别
where是对from 后面指定的表进行数据筛选,属于对原始数据的是筛选
having 是对group by 的结果进行筛选
having 后面的条件中可以用聚合函数,where后面不可以
分页查询
select * from 表名 limit start,count
limit 分页;start:起始行号;count :数据行数
计算机的计数从0开始,因此start默认的的第一条数据依次减1
过滤需求:获取前5条数据
select * from goods limit 0,5;
注意:如果默认从第一条数据开始获取,则0可以省略
select * from goods limit 5;
查询当前表中第5~10行的所有数据
select * from goods limit 4,6;
根据公式计算显示某页的数据
已知:每页显示m条数据,求:显示第n页的数据
select * from 表名 limit (n-1)*m,m
每页显示4条数据,求展示第2页得数据内容
select * from goods limit 0,4
select * from goods limit 4,4;
select * from goods limit 8,4;
select * from goods limit 12,4;
分页得其他应用
查询商品价格最贵得数据信息
select * from goods order by price desc limit 1;
要求查询商品价格最贵的前三条是数据信息
select * from goods order by price desc limit 3;