今日学习目标,mysql剩余的一小部分。开始接口自动化测试的学习。
目录
1、自关联
2、子查询
2.1 标量子查询
2.2 列子查询
2.3 表级子查询
2.4 作业
3、MySQL内置函数
3.1 concat字符串连接
3.2 length(str)
3.3 left字符串
3.4 right字符串
3.5 substring指定位置截取字符
3.6 练习
3.6 ltrim 去除字符串左侧空格
3.7 去除字符串右侧空格
3.8 trim去掉字符串两侧的空格
3.9 round四舍五入
3.10 rand随机数
编辑
编辑
3.11 日期和时间函数
4、存储过程 procedure
5、视图
6、事务
6.1 开启事务begin、回滚事务rollback
6.2 提交事务commit
7、索引
7.1 创建索引
7.2 索引的调用
7.3 查看索引
7.4 删除索引
7.5 索引的优缺点
1、自关联
select * from areas;
-- 查询有多少个省
select * from areas where pid is null;
-- 查询有多少个市
select count(*) from areas where pid is not null;
-- 查询广东省的所有城市(自关联)
select * from areas l INNER JOIN areas r
on l.id = r.pid
WHERE l.name = '广东省';
2、子查询
-- 查询大于平均年龄的学生记录
select * from students where age > (
select avg(age) from students
);
having不能单独使用,必须搭配group by。
where里面不能使用聚合函数。
2.1 标量子查询
2.2 列子查询
-- 查询30岁的学生的成绩。
-- 先查询30岁学生的studentNo,接着查询成绩
select score from scores WHERE studentNo in (
select studentNo from students where age = 30
)
2.3 表级子查询
-- 用子查询,查询所有女生的信息和成绩。
select * from (select * from students where sex = '女') stu INNER JOIN
scores sc on stu.studentNO = sc.studentNO;
2.4 作业
-- 1、列出男职工的总数和女职工总数
select sex 性别,count(*) 人数 from employees GROUP BY sex;
-- 2、列出非党员职工的总数
select count(*) 非党员职工总数 from employees where politicalstatus <> '党员';
-- 3、列出所有职工工号,姓名以及所在部门名称
select empid,empname,d.deptname from (select * from employees) emp INNER JOIN departments d ON
emp.deptid = d.deptid;
-- 4、列出所有职工工号,姓名和对应工资
select emp.empid, empname,salary from (select * from employees) emp INNER JOIN salary sal ON
emp.empid = sal.empid;
-- 5、列出领导岗的姓名以及所在部门名称
select empname,dep.deptname from (select * from employees WHERE leader is NULL) emp INNER JOIN
departments dep ON emp.deptid = dep.deptid
-- 6、列出职工总人数大于4的部门号和总人数。
select deptid,count(*) from employees GROUP BY deptid having count(*) > 4;
-- 7、列出职工总人数大于4的部门号和部门名称;
select emp.deptid,deptname from employees emp INNER JOIN departments d on
emp.deptid = d.deptid
GROUP BY deptid having count(*) > 4;
-- 8、列出开发部和测试部的职工号,姓名
select emp.empid,empname from employees emp INNER JOIN departments dep ON
emp.deptid = dep.deptid WHERE deptname = '测试部' or deptname ='开发部';
select emp.empid,empname from employees emp INNER JOIN departments dep ON
emp.deptid = dep.deptid WHERE deptname in ('测试部','开发部');
-- 9、列出市场部所有女职工的姓名和政治面貌。
select empname,politicalstatus from employees emp INNER JOIN departments dep ON
emp.deptid = dep.deptid WHERE sex = '女' and deptname='市场部';
select * from salary;
-- 10、显示所有职工姓名和工资,包括没有工资的职工姓名。
SELECT empname,salary from employees emp LEFT JOIN salary sal ON
emp.empid = sal.empid;
-- 11、求不姓‘孙’ 的所有职工工资总和。
select sum(salary) FROM employees emp INNER JOIN salary sal ON
emp.empid = sal.empid
WHERE empname not LIKE '孙%';
3、MySQL内置函数
3.1 concat字符串连接
3.2 length(str)
3.3 left字符串
3.4 right字符串
3.5 substring指定位置截取字符
3.6 练习
select * from students;
-- 1、查询students 表的card字段,截取出生年月日,显示李白的生日。
select substring(card,7,8) from students WHERE name ='查娜';
select * from students;
-- 2、查询students 表的所有学生信息,按生日从大到小排序。(注意:不能使用age排序。)
select * from students ORDER BY substring(card,11,4);
3.6 ltrim 去除字符串左侧空格
3.7 去除字符串右侧空格
-- 去除字符串'abcd ' 右侧的空格
select concat(rtrim(' abcde '),'测试字符串')
3.8 trim去掉字符串两侧的空格
3.9 round四舍五入
3.10 rand随机数
3.11 日期和时间函数
4、存储过程 procedure
5、视图
6、事务
6.1 开启事务begin、回滚事务rollback
6.2 提交事务commit
如果开始了一个事务,执行了begin之后,没有rollback 也没有commit,中间系统出问题了,默认会执行rollback;
7、索引
创建索引:目的是加快查找速度。
7.1 创建索引
-- 给数字 创建索引
create index age_index on students(age);
-- 给 字符串 字段创建索引
CREATE INDEX name_index on students(name(10));
7.2 索引的调用
7.3 查看索引
7.4 删除索引
7.5 索引的优缺点
完结啦,数据库就到这里,还得多用。多用就会熟练很多。接下来,准备学习 接口测试啦。