目录
一、了解数据库
什么是数据库?简单理解,就是存储数据的仓库。
常见的数据库(眼熟就行,不用背):
MySQL、Oracle(ORACLE公司的,一般学校教的就这俩)
DB2(IBM公司,花钱)
Sybase(和公司同名Sybase)
SQL server(MIC)
人大金仓(国产)
这里讲的虽然是MySQl,但是数据库指令都大同小异,指令基本通用。
顺带提一下MySQL的特点:体积小、速度快、可跨平台。
下面紫色背景是书上的官方话,不懂可以先不用管,技术活,会用就行。
MySQL是一个关系型数据库管理系统,适用于web应用。
数据库管理系统:用于管理数据库(存储数据的地方)的软件
数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。
数据库系统:完整的系统,由硬件部分和软件部分共同构成,软件部分包括DBMS、支持DBMS运行的操作系统、以及支持多种语言进行应用开发的访问技术等
二、MySQL安装和调试
(这一部分仅供参考,调试每个人电脑不太一样,如果失败建议参考其他大佬)
MySQL下载地址
https://dev.mysql.com/downloads/installer/
MySQL下载地址<-可以点这里直接跳转
默认安装路径:(可以改)
C:\Program Files\MySQL\MySQL Server 8.0
有关连接工具的知识补充:
使用数据库需要连接工具(SQLyog蓝色海豚、Navicat绿色的...)来操纵数据库
使用MySQL云服务连接 (利用云服务器搭建数据库,不用下载到本地)
MySQL Host Address 47.94.237.61
用户名:root
密 码:123456
端 口:3309
启动MySQL服务器
两种方式:
1.图形化方式:右键“此电脑”,选择“管理”,打开“计算机管理”窗口,找到“服务”打开,找到MySQL,停止/启动服务器。
2.命令行方式:DOS命令(也就是电脑上win+R,输入‘’cmd‘’)打开终端,“net satrt”/“net stop”本机为“MySQL80”。若被拒绝访问,以管理员的身份打开cmd。
进入MySQL
1.图形化:开始——MySQL——MySQL80......
2.命令行:cmd窗口:mysql -h服务器IP地址 -P端口号 -u用户名 -p密码(p后直接回车使用密文密码)
本地默认端口3306可省略IP地址和端口号,简写MySQL -u*** -p***
三、操作命令
主要就是我整理的这些,一定要会!!!
操作命令也就是指sql语句,也被叫做结构化查询语句,用于操作mysql数据库。
我们对数据库的操作主要就是“增、删、改、查”,对于测试人员“查”是重中之重。
SQL语句编写规范:
(1)SQL语句不分大小写
(2)SQL语句中建议关键字大写,其余部分小写
(3)SQL语句以分号;结尾,表示结束
常见命令:
查看当前已有的所有数据库
show databases;
注意:
这里的database要加“s”,所有的库,不止一个。
数据库语句以;结尾。
创建数据库
create database 数据库名称 charset 字符集;
说明:数据库名称不可以重复,一般用英文
字符集
utf8:通用码,几乎支持世界上所有国家字符,包括中文,一般都用这个。
gbk:国际标准码,支持中文简体字符
latin:支持西欧字符、希腊字母......
使用命令“show character set;”即可查看当前MySQL服务实例支持的字符集, 字符集默认的字符序,以及字符集占用的最大字节长度等信息。这条语句不常用, 知道有这个方法就可以。
删除数据库
drop database 数据库名称;
查看某一个数据库的信息
show create database 数据库名称;
选择数据库
use 数据库名称;
查看数据库中全部的表
show tables;
注意:table后加s
创建表
create table 表名(
列名1 数据类型,
列名2 数据类型,
......
列名n 数据类型
);
说明:
表名不能重复,列名也不能重复 ;
数据类型
就是字面意思,数据的类型:
1.数值类:
整数型
int 表示整数类型,用来存储整数
浮点型
double(n,m) 表示小数类型,用来存储小数,n 表示数值的位数,m 表示小数的最大位数。
2.字符类:
固定长度字符
char(n) 表示固定长度字符,n表示字符的长度,不够的自动空格补全)
可变长度字符
varchar(n) 表示可变长度长度,n表示字符的最大长度
3.日期时间类:
日期型
date 表示日期类型,常见日期类型格式:YYYY-MM-DD (年月日)
日期时间型
datetime 表示日期时间类型,常见日期时间类型格式:YYYY-MM-DD HH:MM:SS(年月日 时分秒)
查看表结构
desc 表名;
插入语句
(1)向表中所有的列插入数据
insert into 表名 values(列值1,列值2,.......,列值n);
说明:
values中的列值必须和表结构中的列名是一一对应的(数量、顺序、类型)。
如果是数值类型数据,直接填写列值,如果是字符或者日期时间类型数据,需要加单引号填写列值
(2)向表中指定列,插入数据
insert into 表名(列名1,列名2,......,列名n) values(列值1,列值2,.......,列值n);
说明:values中的列值和表中的列名是一一对应的(数量、顺序、类型)。
更新语句
update 表名
set 列名1=新值,列名2=新值,......,列名n=新值
where 条件;
说明:
这是一条语句,为了方便观察结构,我在这里分行书写了,只有最后一行加了分号;
如果没有where条件,表示更新这一列的所有列值;
在填写新值时,需要注意数据类型,要和列名保持一致。
删除表中数据
delete from 表名 where 条件;
注意:如果没where表示删除表中所有数据
删除表
drop table 表名;
重点:查询语句
测试人员一定得会!!!!!!!!!!!!!!!
查询表中全部列数据
select * from 表名;
说明:*表示全部的列
查询表中指定列数据
select 列名1,列名2 from 表名;
给列起别名
select 列名1 as 别名1,列名2 as 别名2 列名... as 别名... from 表名;
注意:as可以省略,列名和表明之间使用空格
去除重复的列值
select distinct 列名 from 表名;
分页(限制)查询
select * /列名 from 表名 limit 初始位置,行数;
说明:
初始位置:表示从哪里开始查询,可以省略,默认值是0,表示第一行。
行数:表示总共要查询的记录数,从初始位置开始
排序
select */列名 from 表名
order by 列名1 asc/desc, 列名2 asc/desc;
说明:
asc 升序
desc 降序
多列排序规则:
先排第一列,将第一列排完后,如果第一列中有相同的列值,才会进行第二列排序 ,否则不排。
有条件排序
select */列名 from 表名
where 条件
order by 列名 1 asc/desc, 列名2 asc/desc;
条件说明:
关系运算符< > = >= <= != 或者 < >
逻辑运算符 and、or、not
特殊情况is、between...and、in、like
聚合(分组)函数:
min(列名);求最小值
max(列名) ;求最大值
sum(列名) ;求和
avg(列名);求平均数
count(列名/ *);求数量
count(*);表示统计某张表中,数据的总记录数
count(列名);表示统计某张表中,列值不为NULL的数据的总记录值
分组查询
分组查询就是根据表中的某一“列”,将表中的数据分成几组,,相同的列值分成一组,完成后,然后对每一组数据,使用聚合函数,最后得到结果。 分组必聚合
语法格式:
select 聚合函数/列名 from 表名
where 条件
group by 列名
order by 聚合函数/列名1 asc/desc,聚合函数/列名2 asc/desc;
having语句
having 语句就是对分组后的数据,再次进行过滤,我们使用having语句,having语句必须和group by一起使用。
语法格式:
select 聚合函数/列名 from 表名
where 条件
group by 列名
having 条件
order by 聚合函数/列名1 asc/desc,聚合函数/列名2 asc/desc;
where 和 having 的区别?
where 是对整张表的数据进行过滤,可以单独使用。
having 是对分组后的数据进行过滤,不可以单独使用,必须和group by一起使用。
子(嵌套)查询
子查询就是1条SQL语句的内部又包含1条或者多条SQL语句。
(多表)连接查询
连接查询就是,要查询的数据(列)分布在不同的表中,为了一次将不同表中的数据查询出来 ---- 连接查询
内连接查询
内连接查询就是,只查询几张表有关系(满足条件)的数据
select 别名1.*/列名,别名2.*/列名
from 表1 别名1 inner join( ) 表2 别名2
on 连接条件;
外连接查询
说明:查询一张表中“全部”数据,以及另外一张表中“部分”数据。
左外连接查询
说明:查询左边表中“全部”的数据,以及右表中“部分”数据(和左边表有关系那部分)。
语法格式:
select 别名1.*/列名,别名2.*/列名
from 左表 别名1 left join 右表 别名2
on 连接条件;
右外连接查询
说明:查询右边表中“全部”的数据,以及左表中“部分”数据(和右边表有关系那部分)。
语法格式:
select 别名1.*/列名,别名2.*/列名
from 左表 别名1 right join 右表 别名2
on 连接条件;
四、数据备份和权限管理以及引擎
数据备份和恢复
备份步骤:
选择要备份的仓库
在工具栏,单击备份数据库为SQL转储图标
选择备份对象和方式,选择导出位置,单击导出按钮
恢复步骤:
(1)在工具栏中,单击执行SQL脚本图标
(2)选择要导入的SQL文件,单击执行按钮
权限管理
(1)在工具栏中,单击用户管理器图标
(2)单击添加用户按钮
(3)输入用户信息,选择相应的权限,并保存
存储引擎
数据库主要是通过存储引擎,来存储数据,不同的引擎存储数据的速度不同,不同数据库管理系统,支持的引擎各不相同。常见的存储引擎有:InnoDB、MyISAM、Memory......
(1)查看系统支持的引擎
show engines;
(2)查看某张表的详细信息
show create table 表名;
五、约束
说明:在创建表时,对表设置一些规则,只有满足这些规则,我们才可以向表中插入数据,我们将这些规则叫做约束。
常见的约束有:
主键约束(primary key)
唯一约束(unique)
非空约束(not null)
默认值约束(default)
外键约束(foreign key)
1、主键约束
主键约束就是用来标识表中的记录,避免表中出现重复的数据,被主键约束所修饰的列,其列值是唯一且非空的,一张表中只能有一个主键约束。
(1)创建表时,添加主键约束
(2)修改表时,添加主键约束
语法格式:
alter table 表名 add primary key(列名1,列名2,...,列名n);
(3)删除主键约束
语法格式:
alter table 表名 drop primary key;
(4)联合(复合)主键 --- 掌握
复合主键就是使用一个主键约束,来修饰多列的值。
2、唯一约束
唯一约束来修饰一列或者多列的组合值,使其具有唯一性,可以防止用户输入重复的列值,被唯一约束所修饰的列,其列值是唯一,可以为null的,一张表中可以有多个唯一的约束。
(1)创建表时,添加唯一约束
(2)修改表时,添加唯一约束
语法格式:
alter table 表名 add unique(列名1,列名2,...,列名n);
(3)删除唯一约束
语法格式:
alter table 表名 drop index(索引) key-name值;
语法格式:
show keys from 表名;
3、默认值约束
默认值约束就是用来指定某列的默认值,当执行插入操作的时候,如果被默认值约束所修饰的列,没有插入列值,系统会自动将默认值变成列值,且一列只有一个默认值。
(1)创建表时,添加默认值约束
(2)修改表时,添加默认值约束
语法格式:
alter table 表名 modify 列名 数据类型 default 默认值;
(3)删除默认值约束
语法格式:
alter table 表名 modify 列名 数据类型 default null;
或
alter table 表名 modify 列名 数据类型;
4、非空约束
非空约束就是被非空约束所修饰的列,该列的列值不能为NULL,一张表中可以有多个非空约束
(1)创建表时,添加非空约束
(2)修改表时,添加非空约束
语法格式:
alter table 表名 modify 列名 数据类型 not null;
(3)删除非空约束
语法格式:
alter table 表名 modify 列名 数据类型;
5、外键约束
外键约束是用来维护2张表之间的关系的,被外键约束所修饰的列,该列的列值必须参照与之关联的另外一张表”主键”所在的列值。
主(父)表:没有外键约束的表
子表:有外键约束的表
(1)创建表时,添加外键约束
(2)修改表时,添加外键约束
fk 外键 pk 主键
语法格式:
alter table 表名 add constraint 约束名 foreign key(子表列名) references 主表(主表列名);
(3)删除外键约束
语法格式:
alter table 表名 drop foreign key 约束名;
六、索引
索引是建立在表中列上的数据库对象,用于提高查询速度,所以有人称”索引是一种提高查询效率的机制”
1、创建索引
语法格式:
create index 索引名称 on 表名(列名);
2、查看表中索引
语法格式:
show index from 表名;
说明:
被主键约束所修饰的列,自带索引
被唯一约束所修饰的列,自带索引
3、索引提速
一般添加索引,用于大数据量查询时。
4、删除索引
语法格式:
drop index 索引名称 on 表名;
七、视图
视图就是一张虚拟表,可以通过视图查询一张或者多张表的数据,使查询变得更简单。
1、创建视图
create view 视图名称
as
查询语句;
2、查询语句
select 查询内容 from 视图名称 筛选条件;
和表的查询一样,表名称换成视图的名称就可以
3、删除视图
语法格式:
drop view 视图名称;
好了,学会这些,对软件测试来说,数据库这方面就掌握差不多了,排版不易,点个赞呗