MySql数据库之一对一关系与各种查询

本文详细介绍了MySQL中的一对一关系,并深入探讨了各种查询技术,包括合并查询、连接查询(内连接、左外连接、右外连接)、自然查询、子查询和自连接查询。通过实例展示了如何查询满足特定条件的学生信息,如成绩70分以上,以及如何找到部门薪水最高、与特定员工信息完全匹配等复杂情况。
摘要由CSDN通过智能技术生成

一对一关系

例如qq和qq的详细信息直接的对一关系
qq
qqid password
qqdetail
qqid name qqage gender
建立外键的时候,如何明确主从关系?
1.看谁引用了谁,被引用的表是主表
2.外键在从表中建立,关联主表
create table qq(
    qqid int primary key,
    password int not null
);
create table qqdetail(
    qqid int primary key,
    qname varchar(100) not null,
    qage int not null,
    constraint fk_qqdetail_qqid  foreign key(qqid)  references qq(qqid)
);
建立表关系
alter table qqdetail add constraint fk_detail_qqid foreign key
(qqid) references qq(qqid);
create table A(
    name varchar(100),
    score int
);
create table B(
    name varchar(100),
    score int
)

insert into A values('a',10),(b,'20'),('c',30);
insert into 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
inner join
    score c
on
    s.sid=c.sid;
左外连接查询
以左边的表为主 主表中的数据都会查询出来(有可能会产生无用的数据)
select 
    *
from
    stude
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值