软件测试流程之SQL基础(软件测试流程之SQL基础)
软件测试流程之SQL基础(软件测试流程之SQL基础)类型MySQL数据库类型SQL分类而最为常用的有DQL、DDL、DML,而测试人员更是常用DQL、DML。不同的数据库,其的类型有些不同,但也是关键字的不同。下面以MySQL数据库的类型为例:
扼要:
1、掌握SQL基础;
前面讲述了数据库的基础、基本的SQL语句。作为软件测试或者数据库的管理、开发人员都需要掌握该章。该章知识点为关系型的数据的起点。
SQL分类SQL 对结构化查询语言,可以对数据库进行增、删、修、查等操作。具体分类如下图所示:
SQL分类
而最为常用的有DQL、DDL、DML,而测试人员更是常用DQL、DML。
数据库类型不同的数据库,其的类型有些不同,但也是关键字的不同。下面以MySQL数据库的类型为例:
MySQL数据库类型 | ||||
类型 |
大小 |
用途 | ||
TINYINT |
1 byte |
小整数值 | ||
SMALLINT |
2 bytes |
大整数值 | ||
MEDIUMINT |
3 bytes |
大整数值 | ||
INT或INTEGER |
4 bytes |
大整数值 | ||
BIGINT |
8 bytes |
极大整数值 | ||
FLOAT |
4 bytes |
单精度 | ||
浮点数值 | ||||
DOUBLE |
8 bytes |
双精度 | ||
浮点数值 | ||||
DECIMAL |
对DECIMAL(M D) ,如果M>D,为M 2否则为D 2 |
小数值 | ||
DATE |
3 |
日期值 | ||
TIME |
3 |
时间值或持续时间 | ||
YEAR |
1 |
年份值 | ||
DATETIME |
8 |
混合日期和时间值 | ||
TIMESTAMP |
4 |
混合日期和时间值,时间戳 CHAR |
0-255 bytes |
定长字符串 |
VARCHAR |
0-65535 bytes |
变长字符串 | ||
TINYBLOB |
0-255 bytes |
不超过 255 个字符的二进制字符串 | ||
TINYTEXT |
0-255 bytes |
短文本字符串 | ||
BLOB |
0-65 535 bytes |
二进制形式的长文本数据 | ||
TEXT |
0-65 535 bytes |
长文本数据 | ||
MEDIUMBLOB |
0-16 777 215 bytes |
二进制形式的中等长度文本数据 | ||
MEDIUMTEXT |
0-16 777 215 bytes |
中等长度文本数据 | ||
LONGBLOB |
0-4 294 967 295 bytes |
二进制形式的极大文本数据 | ||
LONGTEXT |
0-4 294 967 295 bytes |
极大文本数据 |
1.CREATE DATABASE - 创建新数据库
例子:CREATE DATABASE IF NOT EXISTS testlq DEFAULT CHARSET utf8;
2.ALTER DATABASE - 修改数据库
例子:ALTER DATABASE testlq RENAME TO test_2021lq
3.CREATE TABLE - 创建新表
例子:CREATE TABLE `testlq_filter` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
`content` TEXT(10000) COMMENT '过滤词内容'
PRIMARY KEY (`id`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8;
4.ALTER TABLE - 变更(改变)数据库表
例子:alter table `testlq_filter`
add (`title` VARCHAR(80) NOT NULL DEFAULT '' COMMENT '邮件');
5.DROP TABLE - 删除表
例子:DROP TABLE `testlq_filter`
6.CREATE INDEX - 创建索引(搜索键)
例子:CREATE INDEX title_id ON testlq_filter (title)
7.DROP INDEX - 删除索引
8.SELECT - 从数据库表中获取数据
例子:SELECT * from testlq_filter
9.UPDATE - 更新数据库表中的数据
例子:UPDATE testlq_filter SET title=‘lq’WHERE id=1
10.DELETE - 从数据库表中删除数据
例子:DELETE FROM testlq_filter WHERE id = 1
11.INSERT INTO - 向数据库表中插入数据
例子:INSERT INTO testlq_filter(title content) VALUES("测试" "文明用语")
SQL常用操作符和函数Where:是条件的关键字,如:SELECT * from testlq_filter where title=’测试’;
Like:作为where的条件使用:SELECT * from testlq_filter where title like ‘%测试%’,%为匹配任意字符。
In:作为where的条件使用,表示在一定的范围或者列表内;
Between ... and:作为where的条件使用,表示在两个值之间的数据范围内;
Group by:是指对某个字段或者结果进行分组,也是在where之后;
Having:是指where条件需要用到合计函数时的关键词,在group by之后。
AVG():是返回数值列的平均值的函数;
COUNT():是返回匹配指定条件的行数的函数;
MAX():是返回一列中的最大值的函数;
MIN():是返回一列中的最小值的函数;
sum():是返回数值列的总数(总额);
SQL难点1) 使用count(列名)当某列出现null值的时候,count(*)仍然会计算,但是count(列名)不会。
2) group by 字句和where条件语句结合在一起使用时:where在前,group by 在后。即先对select xx from xx的记录集合用where进行筛选,然后再使用group by 对筛选后的结果进行分组。
3) having和where的用法区别:
a. having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。
b. where肯定在group by 之前,即也在having之前。
c. where后的条件表达式里不允许使用聚合函数(count() sum() avg() max() min()),而having可以。
4) 当一个查询语句同时出现了where group by having order by的时候,执行顺序和编写顺序是:
a. 执行where xx对全表数据做筛选,返回第1个结果集。
b. 针对第1个结果集使用group by分组,返回第2个结果集。
c. 针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。
d. 针对第3个结集执行having xx进行筛选,返回第4个结果集。
e. 针对第4个结果集排序。