软件测试第十阶段(MySQL)

链接查询

子查询

联合查询

链接查询

将两张或者多张表联合起来查询 就是链接查询(join)有两种

交叉链接:

表中每一行 分别和其他行 组成一个新的行

新表的行数是两个表的行数相乘 列数是两个表的列数相加

自然链接(内链接 等值链接)

将多个表中 符合条件行进行行链接

得到交叉链接的结果

select * from 表1,表2;

得到自然链接的结果

select * from 表1,表2 where 表1.字段=表2.字段;

案例:

1.查询显示学生的班级名称、学生姓名、班级id
select name,class,classes.classid from students,classes where students.classid=classes.classesid;

2.查询显示学生的姓名的老师的姓名
表1:学生表:students,关键有两个字段 学生姓名和老师的id 字段名name teacherid
表2:老师表:teachers,关键有两个字段 老师姓名和老师的id字段名name tid
select s.name,t.name from students as s,teachers as t where s.teacherid=t.tid;

3.查询各个班级所开设的课程名 结果显示班级名和课程名
首先分析三张表的关联关系
表1:班级表:classes 表中有id和班级名称 字段名classid和class
表2:课程表:courses 表中有课程id和课程名 字段名 courseid和course
表3:班级课程关联关系表:coc 表中班级id和课程id 字段名classid和courseid
select class,course from classes,courses,coc where classes.classid=coc.classid and course.courseid=coc.courseid;

字段别名

给字段一个新名字

显示结果中字段名会直接用新的名字显示出来

格式
select 字段名 as 新名字 from 表名 ...
案例 查看学员的姓名和年龄 显示结果中 字段名分别是 学员姓名 和学员年龄 
select name as "学员姓名",age as"学员年龄" from students;

表别名

select 字段 from 表名 as 新名

如果用了新的名字 必须使用 否则报错

案例 在进行联合查询的时候 为表定义别名

为students表取名为s

为classes表取名为c

select name,c.classid from students as s,classes as c where s.classid=c.
classid;

使用自然链接存在问题

会导致数据缺失

解决办法 用左外连接 右外连接

左表 前面的

右表 后面的

左外连接

显示结果以左表为准 左表中的数据会全部出现 右边的数据有就显示 没有显示为空

左表 left join 右表 on 条件

右外连接

显示结果以右表为准 右表中的数据会全部出现 左边的数据 有就显示 没有就显示为空

左表 right join 右表 on 条件

案例 显示每个学生的姓名和班级名(没有班级的学生也要显示出来)

select name,class from students left join classes on students.classid=classes.classid;

子查询

在查询语句中 使用另外一个语句的查询结果

案例 查询所有年龄大于平均年龄的学生

select * from students where age>(select avg(age)) from students;

视图

1.数据库的设计方法

ER模型  表和标的关联关系

关系的类别:

一对一

一对多

多对多

概念:

主键:唯一标识表中的一条记录

外键:用于两张表建立关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值