createtable A(
name varchar(100),
score int
);createtable B(
name varchar(100),
score int
)
insertinto A values('a',10),(b,'20'),('c',30);insertinto B values('a',10),(b,'20'),('d',40);
合并查询
返回的结果集字段类型和数量要保持一致
单独使用union会把两张表的数据合并,并且过滤掉相同的数据
不想过滤掉数据可以使用union all
select name,id from A uinon select * from B;
连接查询
select * from student,score;
查询两张表的数据 4*5=20 产生20条数据,笛卡尔积
这样会产生大量无用的数据,可以通过外键来过滤掉
查询所有学生的成绩,考过试的才输出 99查询法
select * from student,score where student.id=score.id;
表中有没有外键关系,都可以使用连接查询
外键是约束,约束数据的插入,查询就是查询 与约束无关
内连接查询
把两张表连接到一起查询
查询所有人的成绩
使用inner JOIN关键词 条件使用on,并且inner可以省略不写
select
*
from
student s
innerjoin
score c
on
s.sid=c.sid;
左外连接查询
以左边的表为主 主表中的数据都会查询出来(有可能会产生无用的数据)
select
*
from
stude