软件测试——sql数据库
1.数据类型(常用)
int : 整数
decimal : 小数
varchar : 字符串
datetime : 日期时间
2.约束
primary key : 主键;唯一标识某一条数据,字段值不能为空,一般为id字段(int类型、无符号、自动递增)
foreign key : 外键;维护表与表之间的关联关系.
not null : 非空;该字段不允许存入空值.
unique : 唯一;该字段的值是不允许重复.
default : 默认值;不填值的情况下自动使用默认值.
3.数据库操作
1)创建数据库
create database dbname
2)删除数据库
drop database dbname
4.数据表操作
1) 创建表
create table tablename (
字段1 类型 约束
字段2 类型 约束
…
)
2)删除表
drop table tablename
3)添加数据(增)
语法一:
添加一条完整数据(设置所有字段信息)
insert into tablename values(值1,值2,'值3',…)
// values( )中的值必须按照字段顺序依次填写对应值,不可缺少任何字段
//字符串类型的数据需要用单引号‘’.
//值与值之间用逗号分隔
语法二:
给指定字段(列)设置值
insert into tablename(列1,列2,…)values(值1,值2,…)
//列名与列名之间用逗号分隔
//列名与值一一对应
语法三:
同时添加多条数据
insert into tablename(列1,列2,…)values(数据1),(数据2),(数据3)
4)删除数据(删)
delete from tablename where 条件
例:
删除姓名为张三,id为6的学生数据
delete from student where name='张三',id=6
// 切记:谨慎使用delete,一旦删除失误,数据无法恢复,牢底坐穿(夸张了哈)就在你一念只差!!!在公司我们可以用逻辑删除(操作如下)
1.给表添加一个isdelete的字段,用于代表数据是否删除, 0表示未删除(默认为0),1表示删除
2.需要删除某条数据时,使用update语句将isdelete字段值改为1即可
例:
update student set isdelete=1 where id=2
3.查询未删除的数据时,将查询条件设为isdelete=0
select * from student where isdelete=0
//返回的数据就是未做删除处理的数据
5)修改数据(改)
语法一:
update tablename set 列1=值1,列2=值2,… where 条件
例:
将编号(id)为1的分数(score)改为99分,性别(sex)改为女
update student set score=99,sex='女' where id=1
6)查询数据(查)
简单查询(单表查询):
1)查询一个表的所有数据
select * from tablename
// * : 表所有
2)查询指定数据
select 列1,列2,… from tablename
例1:
查询张三的成绩
select score from student where name='张三'
例2:
查询分数在60分以上的学生信息
select * from student where score≥60
4)比较符
>(大于)
<(小于)
≥(大于等于)
≤(小于等于)
!=(不等于)
5)逻辑运算符
and : 和,并且; 左右两个条件必须同时满足
or : 或, 或者; 左右条件满足其一即可
not : 非,不是,取反;放在某一个条件前,表否定
7)模糊查询
like : 模糊查询关键字
% : 百分号,表示任意多个字符
_ : 下划线,表示一个任意字符
8)范围查询
in :非连续范围内查询 (查询一个字段多个非连续(1~3)值时使用)
语法:
select * from tablename where 列名 in('值1','值2','值3')
例:
查询出家在长沙,岳阳,武汉的学生信息
select * from student where home in('长沙','岳阳','武汉')
between and :连续范围内查询
语法:
select * from tablename where 列名 between 小值 and 大值
例:
查询年龄在16~18岁的学生信息
select * from student where age between 16 and 18
//必须是从小到大,所以between 后面必须是比and后面的值小
// 查询出的结果包含设定的最小值和最大值
// 查询范围以外的信息,在字段前前面加上 not即可
9)排序
order by 关键字
升序(从小到大,默认):
select * from tablename order by 列名 asc
// order by 默认排序为升序(从小到大)故asc可省略不写
降序(从大到小,非默认)
select * from tablename order by 列名 desc
10)空判断
is null : 判空
语法:
select * from tablename where 列名 is null
is not null : 判非空
语法:
select * from tablename where 列名 is not null
// 查询是否为null时,不能用比较运算符“=”
// null 不等于 ' '
11)聚合函数
count(*): 总和 (总行数)
语法:
select count(*) from tablename
select count(列名) from tablename
// count括号中可以是“*”也可以是单个字段,多个字段不可以
// 当使用*时,一行数据所以值都为null时不计数
//count指定字段后,这一列数据中存在的null值不计入总数
// 当count()与where条件同时出现时,先统计的是where条件再在满足where条件之后的数据上执行count()
max( ) : 最大值 统计一列数据的最大值
语法:
select max(列名) from tablename
min( ) : 最小值 统计一列数据的最小值
语法:
select min(列名) from tablename
avg( ) : 平均值 统计一列数据的值的平均值,例如班级平均分
语法:
select avg(列名) from tablename
sum( ) : 求和 统计一列数据的值的总和
select sum(列名) from tablename
//聚合函数不能在where语句中使用
// 所有聚合函数可以同时使用,在from前函数与函数之间用逗号分隔开即可
12)分组
group by
语法:
select 列1,列2,… 聚合函数… from tablename group by 列1,列2,… having 列1,列2,… 聚合函数
// group by 语句后不能接where语句,where语句后可以接groupby,where语句必须在from tablename之后,where是对原始数据的筛选,having是对group by分组之后的结果进行筛选
// 凡是遇到“每个”“各个"必定用分组
例:
查询1班以外,数学学科的班级平均分和最高分,最低分分别是多少
select class avg(score),max(score),min(score) from student group by class having class!=1 and kemu='数学'
13)分页查询
语法:
select *from tablename limit 行数
14)给字段取别名
select id as 序号,name as 姓名 ,… from student
15)查询结果去重处理
select distinct 列名1,列名2,… from tablename
16)多表查询
1.等值连接查询
2.左连接查询
3.右连接查询
