测试工程师在测试软件过程中,不仅仅需要在界面进行操作,还需要检查数据库中的数据是否正确,从而在软件出现问题时候,能够定位到问题原因。
数据库
-
数据库和SQL是什么关系?
SQL:结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
关系:数据库里面放着数据,而SQL是用来操作数据库里数据的语言(工具)。例如有一碗米饭(碗就是mysql,里面放的米是数据),你要吃碗里的米饭,拿什么吃?拿筷子(sql)。用筷子(sql)操作碗里(mysql)的米饭(数据)
-
数据库有哪些?
Oracle:最挣钱的数据库,出自甲骨文公司,市场占有率非常高,功能非常强大,被一些大型企业,电信,银行,证券公司所使用
MySQ:一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL目前最流行的开源数据库,被甲骨文公司所占用,威胁着老大Oracle的地位,开源,免费,支持多平台,易用
SQLServer:微软开发的数据库,仅支持Windows操作系统,号称是windows上最好用的数据库。数据库的天下不仅仅是MySQL和Oracle的,SQLServer也正在慢慢崛起,微软网罗了不少数据库的专家,推出了不少重磅功能。
MongoDB:最好用的文档型数据库,是NOSQL类型数据库的领导者之一,也是当前最成功的NoSQL类型数据库,数据存储格式采用JSON形式,非常灵活。
Redis:最好的内存级数据库,查询效率极高,并且在Redis 3.0之后,支持多种数据类型,String,Set,List,Hash等类型,开始支持集群,弥补了自身短板。是目前做缓存最流行的数据库
Neo4J:最好的图形化数据库,流行话较低,但是图形化数据库的绝对领导者。
SQLite:最流行的嵌入式数据库,占领手机行业的绝对领导者地位,Android和IOS两大手机系统,都内嵌了SQLite数据库,SQLite是一个完整的关系型数据库,支持标准SQL,支持事务操作,程序包非常小,是嵌入式设备的最佳选择。
-
MYSQL安装
-
安装及配置:
-
卸载:
-
实在不行重启后再安。一定要注意端口占用问题。
-
重置MySQL root密码:
-
-
数据库语言的分类:
DDL: 数据库定义语言 对库的增删改
DML: 数据操作语言 对表的增删改
DQL : 数据库查询语言 对库和表的查询(模糊查询,分页查询,子查询,多表查询 聚合函数 分类 分组 排序等)
DCl: 数据控制语言
-
表中字段基本数据类型
-
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型
-
一个汉字占多少长度与编码有关:
-
UTF-8:一个汉字=3个字节,
-
GBK :一个汉字=2个字节
-
-
-
表结构语句操作
-
整型
类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值 MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值 INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值 BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值 FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度 浮点数值 DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度 浮点数值 DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值 取值范围如果加了 unsigned,则最大值翻倍,如 tinyint unsigned 的取值范围为(0~256)。
int(m) 里的 m 是表示 SELECT 查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个 m 有什么用。
-
浮点型(float 和 double)
MySQL数据类型 含义 float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位 double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位 设一个字段定义为 float(5,3),如果插入一个数 123.45678,实际数据库里存的是 123.457,但总个数还以实际为准,即 6 位。
-
定点数
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
decimal(m,d) 参数 m<65 是总个数,d<30 且 d<m 是小数位。
-
字符串(char,varchar,_text)
MySQL数据类型 含义 char(n) 固定长度,最多255个字符 varchar(n) 固定长度,最多65535个字符 tinytext 可变长度,最多255个字符 text 可变长度,最多65535个字符 mediumtext 可变长度,最多2的24次方-1个字符 longtext 可变长度,最多2的32次方-1个字符 char 和 varchar:
-
char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以 char 类型存储的字符串末尾不能有空格,varchar 不限于此。
-
char(n) 固定长度,char(4) 不管是存入几个字符,都将占用 4 个字节,varchar 是存入的实际字符数 +1 个字节(n<=255)或2个字节(n>255),所以 varchar(4),存入 3 个字符将占用 4 个字节。
-
char 类型的字符串检索速度要比 varchar 类型的快。
varchar 和 text:
-
varchar 可指定 n,text 不能指定,内部存储 varchar 是存入的实际字符数 +1 个字节(n<=255)或 2 个字节(n>255),text 是实际字符数 +2 个字节。
-
text 类型不能有默认值。
-
varchar 可直接创建索引,text 创建索引要指定前多少个字符。varchar 查询速度快于 text, 在都创建索引的情况下,text 的索引似乎不起作用。
-
-
二进制数据(_Blob)
-
_Blob和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而 _Blob是以二进制方式存储,不分大小写。
-
_BLOB 存储的数据只能整体读出。
-
TEXT可以指定字符集,_Blob不用指定字符集。
-
-
日期时间类型
MySQL数据类型 含义 date 日期 '2008-12-2' time 时间 '12:25:36' datetime 日期时间 '2008-12-2 22:06:44' timestamp 自动存储记录修改时间 若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
-
数据类型的属性
MySQL关键字 含义 NULL 数据列可包含NULL值 NOT NULL 数据列不允许包含NULL值 DEFAULT 默认值 PRIMARY KEY 主键 AUTO_INCREMENT 自动递增,适用于整数类型 UNSIGNED 无符号 CHARACTER SET name 指定一个字符集 常用约束:
-
primary key 主键
-
auto_increment 自增
-
not null 非空
-
foreign key 外键
-
unique 唯一
-
default 默认
-
decimal 浮点
-
-
方法一:
在my.ini的[mysqld]字段加入:
skip-grant-tables
重启mysql服务,这时的mysql不需要密码即可登录数据库 进入mysql:
mysql>更新 user set password=password('新密码') WHERE User='root';
mysql>flush privileges;运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。
方法二:
不使用修改my.ini重启服务的方法,通过非服务方式加
skip-grant-tables
运行mysql来修改mysql密码
停止mysql服务
打开命令行窗口,在bin目录下使用mysqld-nt.exe启动,即在命令行窗口执行:
mysqld-nt --skip-grant-tables
然后另外打开一个命令行窗口,登录mysql,此时无需输入mysql密码即可进入。
按以上方法修改好密码后,关闭命令行运行mysql的那个窗口,此时即关闭了mysql,如果发现mysql仍在运行的话可以结束掉对应进程来关闭。
启动mysql服务