数据库(六)------高级查询(三)

本文详细介绍了数据库的多表联查,包括子查询的使用,如作为计算字段、条件及新表。同时,讨论了内部联结、外部联结、自然联结和交叉联结等联结表的方法,帮助理解如何在不同表之间建立查询关系。
摘要由CSDN通过智能技术生成

目录

6.3 多表联查

6.3.1 子查询

 6.3.1.1 把子查询当成是一个计算字段/检索列来使用

 6.3.1.2 把子查询当成是一个条件来使用

6.3.1.3 把子查询当成一个新表使用

6.3.2 联结表

6.3.2.1 内部联结

6.3.2.2 外部联结

6.3.2.3 自然联结

6.3.2.4 交叉联结


6.3 多表联查

6.3.1 子查询

案例 统计“调查部”和“业务营运部”的员工人数
    这个案例设计到了两个表 因为查询的已知条件在一个部门表中 而员工的信息在员工表中 所以按照现阶段的单表查询是做不到这个效果 

    所以遇到这种情况 我们只能通过连接多个有关系的表来进行查询

创建表的初衷
	1.创建表的时候 不能把不同性质的数据放到一个表中
	2.修改操作时会影响效率
		想把销售部的地址修改成湖南长沙...  芝加哥
		update emp set location = "湖南长沙" where dname = "销售部";

		数据的粘耦性很差 可以达到数据如果要修改 不会去影响其他表
创建外键来连接多表之间的关系 同时也能约束 表中的数据的合法性
	foreign key:外键的关键字

	# 一个表中的某个列 是另一个表中的主键 我们可以确定是外键关系

	1.创建表的时候添加外键
		constraint 外键的名字 foreign key(表1的列名) references 表名2(表2的列);
		create table empInfo(
		empid int primary key auto_increment,
		empName char(4),
		number int,
		constraint key1 foreign key(number) references dept(deptno)
		);
	2.表创建好之后添加外键
		alter table 表名1 add constraint 外键的名字 foreign key(表1的列名) 
			reference 表名2(表2的列);
	一对一
	一对多
	多对多
# 子查询:在一个查询中能嵌套另一个查询 一般会由内往外查询
# 查询买了商品id是'TNT2'的用户信息 只显示 用户id和名字
	1.根据商品id查询订单号
	select order_num from orderitems where prod_id = "TNT2";
	2.根据订单号去查询用户id
	3.根据用户id去查询用户的详细信息
	select cust_id, cust_name from customers where cust_id in(
		select cust_id from orders where order_num in(
			select order_num from orderitems where prod_id = "TNT2"
		)
	);

orderitems表:

 customers表:

order表:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值