软件测试基础理论复习(三)

三、Linux基础
Linux常用指令

切换:cd

删除文件:  rm

创建文件:touch

创建文件夹: mkdir

显示当前在哪个文件夹:pwd

显示当前文件夹下的普通文件: ls

显示详细信息:ll

剪切/重命名:mv

查看文件: cat

编辑:vi/vim

复制: cp

切换账户: su

创建账户:useradd

删除账户:userdel

创建用户组:groupadd

删除用户组:groupdel

查找文件:find

查找行:grep

压缩: tar

修改权限:chmod (rwx)

查看进程:ps process

杀进程:kill -9 进程号

查看日志:tail

文件名开头有“.”是隐藏文件

四、MySQL基础
1、什么是数据库:

按照数据结构来组织、存储和管理数据的仓库。

2、什么是关键性数据库、主关键字、外键、索引
关系型数据库:
是由多张能互相联接的二维行列表格组成的数据库。
主关键字:
(primary key) 是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表,外键又称作外关键字。
索引:
是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B_TREE B_TREE 索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据;相反,它从根节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据。
3、数据库语言四大分类DDL、DML、DQL、DCL
A、DDL(数据定义语言)

用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER 表名 (列 1 类型 约束,列 2 类型 约束…)

其余常用命令有:drop,alter,truncate和rename。

B、DQL(数据查询语言)

基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块:
SELECT <字段名表>

FROM <表或视图名>
WHERE <查询条件>

e.g:


 
//假如要查询女员工表的姓名、年龄,并以年龄升序排列
 
select name,age from tb_emp where sex='女' order by age;

some details:

a. 查询条件:where
基本条件查询语句  select * from student where id =1(表示查询student表中id=1的学生的所有列)
where后跟查询条件,查询的如果是字符串,要带引号;多条件查询如果是并且条件用and 或者用or
e.g:
查询出班级号为20201001班的学生并且要求是男生,年龄大于20
SELECT * from student where class_num = '20201001' and sex = '男' and age > 20

查询出班级号为20201001班的学生或者性别为女的学生
SELECT * from student WHERE class_num = '20201001' or sex = '女'

b. 去重查询 DISTINCT
例子:查询出表当中有哪些性别   SELECT DISTINCT sex FROM student

c. 模糊查询重点 模糊查询可以实现搜索功能
基本语法  like 通配符
例子  select * from student where name like '%王' 表示模糊查询name以王结束的
select * from student where name like '王%' 表示模糊查询name以王开头的
select * from student where name like '%王%' 表示模糊查询name中包含王字的

d. 排序查询 ORDER BY 倒序关键字DESC
默认排序规则是根据id进行排序,并且是id从小到大    SELECT * FROM student
例子 按照年龄从低到高进行排序
SELECT * FROM student ORDER BY age

按照年龄从高到低进行排序
SELECT * FROM student ORDER BY age DESC

e. 分页查询

  分页公式:(页码-1)*步长,步长
limit关键字 限定查询多少条数据
OFFSET关键字 从第几条数据开始查询 默认第一条数据是0

查询出第二页的数据,这一页有3条数据
SELECT * FROM student LIMIT 3 OFFSET 3

知道页数和每页查询的数据(固定)
SELECT * FROM student LIMIT 数据量 OFFSET 数据量 * (页数-1)

SELECT * from student LIMIT 0,3
LIMIT 0,3 limit后一个数据表示从第几条数据查起,后面数据是查询的条数

f. 聚合查询
count() :记录查询列有多少行
SUM() :求数值序列的和
AVG() :求平均数
MAX() :求最大值

C、DML(数据操作语言Data Manipulation Language)
插入记录:INSERT  INTO  表名… values
e.g:

insert into tb_emp values(2,'lili','男','IT部');

更新记录:UPDATE   表名 SET   列名 = 值 WHERE   条件
e.g:
update tb_emp set age = 24 where id=2;
删除记录:DELETE  FROM  表名 WHERE   条件
e.g:
delete from tb_emp where id=1024;
D、DCL(数据控制语言)

用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。
回滚---ROLLBACK 回滚命令使数据库状态回到上次最后提交的状态。
其格式为:
SQL >ROLLBACK;

3)REVOKE:取消授权。
4) COMMIT [WORK]:提交。
在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。
提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型:
(1) 显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:
SQL >COMMIT;
(2) 隐式提交
用 SQL 命令间接完成的提交为隐式提交。这些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
(3) 自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,
系统将自动进行提交,这就是自动提交。其格式为:
SQL >SET AUTOCOMMIT ON

4、delete、drop、truncate的区别?

delete:只是删除表中的数据。

drop:是删除表,包括表的结构和数据。

truncate:是删除数据和自增索引,保留表结构。(可理解为删除原表创建了新表)

5、数据库的类型

关系型数据库;非关系型数据库;网状数据库;层次数据库。目前最常见的数据库模型主要是:关系型数据库和非关系型数据库。

A. 关系型数据库

关系型数据库模型是将复杂的数据结构用较为简单的二元关系(二维表)来表示。在该类型数据库中,对数据的操作基本上都建立在一个或多个表格上,我们可以采用结构化查询语言(SQL)对数据库进行操作。关系型数据库是目前主流的数据库技术,其中具有代表性的数据库管理系统有:Oracle、DB2、SQL Server、MySQL等。

a. Oracle

Oracle数据库是由美国的甲骨文(Oracle)公司开发的世界上第一款支持SQL语言的关系型数据库。经过多年的完善与发展,Oracle数据库已经成为世界上最流行的数据库,也是甲骨文公司的核心产品。Oracle数据库具有很好的开放性,能在所有的主流平台上运行,并且性能高、安全性高、风险低;但是其对硬件的要求很高、管理维护和操作比较复杂而且价格昂贵,所以一般用在满足对银行、金融、保险等行业大型数据库的需求上

b. DB2

DB2是IBM公司著名的关系型数据库产品。DB2无论稳定性,安全性,恢复性等等都无可挑剔,而且从小规模到大规模的应用都可以使用,但是用起来非常繁琐,比较适合大型的分布式应用系统。

c. SQL Server

SQL Server是由Microsoft开发和推广的关系型数据库,SQL Server的功能比较全面、效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Windows操作系统紧密继承,无论是应用程序开发速度还是系统事务处理运行速度,都能得到大幅度提升。但是,SQL Server只能在Windows系统下运行,毫无开放性可言。

d. MySQL

MySQL是一种开放源代码的轻量级关系型数据库,MySQL数据库使用最常用的结构化查询语言(SQL)对数据库进行管理。由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个人需要对其缺陷进行修改。

由于MySQL数据库体积小、速度快、成本低、开放源码等优点,现已被广泛应用于互联网上的中小型网站中,并且大型网站也开始使用MySQL数据库,如网易、新浪等。 

B. 非关系型数据库

NOSQL(Not Only SQL)泛指非关系型数据库。关系型数据库在超大规模和高并发的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。NOSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。常见的非关系型数据库管理系统有Memcached、MongoDB,redis,HBase等。 

注:关系型数据库都是把数据保存在硬盘上,不会随着关机而丢失数据

非关系型数据库是吧数据保存在内存中,电脑一旦关机数据也会丢失。

6、事务的并发异常

A、回滚丢失:此种更新丢失是因为回滚的原因,所以叫做回滚丢失。
B、覆盖丢失:此种更新是因为更新被其他事务覆盖了,所以叫做覆盖更新
C、脏读:一个事务读取了另一个事务尚未提交的数据
D、不可重复读:一个事务对同一行数据执行了两次或以上的查询,结果却不同
E、幻读:幻读和不可重复读有点像,只是针对的一般是数据的数量(一组)

7、隔离级别

隔离级别主要包括:
读未提交(read uncommitted)
读已提交 (read committed)
可重复读 (repeatable read)
串行化     (serializable)
隔离级别越高,数据的效率越低
MySQL数据库InnoDB存储引擎(默认)的默认隔离级别是Repeatable Read

Oracle数据库默认的隔离级别是Read Committed

8、SQL表的连接方式
SQL 中连接按结果集分为:内连接,外连接,交叉连接
A.   内连接[inner] join:从左表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某条件在左表中与右表中相同最终才会保留结果,否则不保留。
B.  外连接out join: 以某张表为主,取出里面的所有记录,然后每条与另外一张表进行连接:不管能不能匹配上条件,最终都会保留:能匹配,正确保留;不能匹配,其他表的字段都置空null

外连接分为两种:是以某张表为主:有主表
left join :左外连接(左连接),以左表为主表
right join:右外连接(右连接),以右表为主表
语法:左表 left/right join 右表 on 左边.字段 = 右表.字段
左外连接结果最少不少于左表的数量,右外也是相同。

C. 自然连接:natural join ,自然连接,就是自动匹配连接条件:系统以字段名字作为匹配模式(同名字段就作为条件,多个同名字段都作为条件)
自然连接:可以分为自然内连接和自然外连接。
自然内连接:左表 natural join 右表;
自然外连接:左表 natural left join 右表
交叉连接:cross jojn(笛卡尔积)

9、三范式
1NF: 表中的字段都是单一属性,不再可分。
2NF :在 1NF 的基础上,表中所有的非主属性都必须完全依赖于任意一组候选键,不能仅依赖于候选键
中的某个属性。
3NF :在 2NF 的基础上,表中所有的属性都不依赖其他非主属性。
简单的说就是: 1NF 表示每个属性不可分割, 2NF 表示非主属性不存在对主键的部分依赖, 3NF 表示不
存在非主属性对主键的依赖传递。
10、事务的特性(ACID)
A: 原子性 (Atomicity) :事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
C: 一致性 (Consistency) :几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
I: 隔离性 (Isolation) :事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
D: 持久性 (Durability) :对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数
据库出现故障
11、MySQL的引擎
主要 MyISAM InnoDB 两个引擎,其主要区别如下:
(1)InnoDB 支持事务, MyISAM 不支持;
(2)MyISAM 适合查询以及插入为主的应用, InnoDB 适合频繁修改以及涉及到安全性较高的应用;
(3)InnoDB 支持外键, MyISAM 不支持;
(4)MyISAM 是默认引擎, InnoDB 需要指定;
(5) InnoDB 不支持 FULLTEXT 类型的索引;
(6)InnoDB 中不保存表的行数,如 select count() from table 时, InnoDB ;需要扫描一遍整个表来计算 有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。注意的是,当 count() 语句包含 where 条件时 MyISAM 也需要扫描整个表;
(7)对于自增长的字段, InnoDB 中必须包含只有该字段的索引,但是在 MyISAM 表中可以和其他字段一起建立联合索引;
(8)清空整个表时,InnoDB 是一行一行的删除,效率非常慢。 MyISAM 则会重建表;
(9)InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值