关于达梦数据库高级查询的一些基础操作

达梦数据库

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是8.0版本,简称DM8。
DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。

高级查询

多表联查

1.笛卡尔集查询
select 列名列表 from1,2;
2. 内联接查询
select 列名列表 from1,2 where 两表关联列条件表达式;
select 列名列表 from1 inner join on 两表关联列条件表达式;
3. 外联接查询

a) 左外联接查询

select 列名列表 from1 left outer join2 on 两表关联列条件表达

b) 右外联接查询

select 列名列表 from1 right outer join2 on 两表关联列条件表达式;

c) 全联接查询

select 列名列表 from1 full join2 on 两表关联列条件表达式;

子查询

  1. where 子句子查询: 将一个查询的结果作为另一个查询(更新)操作的条件
select 列名列表 from 表名 where 条件列 = | in | not in (
子查询
) [条件… 其他];
  1. from 子句子查询: 将一个查询的结果看做一张虚拟表提供给其他查询使用
select 列名列表 from (
子查询
) 临时表名 [条件… 其他]; 
  1. select 子句子查询: 将一个查询的结果和其他查询的结果进行组合
select 列名列表,(
子查询
) from 表名 [条件… 其他]; 

示例

  1. 使用多表内联接(两种方式)查询用户手机号码、密码、注册时间、昵称信息
select u.phone,u.password,b.nick_name,b.reg_date,b.phone,
u.phone,b.phone
from i_user u inner join i_basic b
on u.phone=b.phone;

select u.phone,u.password,b.nick_name,b.reg_date,b.phone,
u.phone,b.phone
from i_user u,i_basic b
where u.phone=b.phone;

在这里插入图片描述
2. 查询用户手机号、昵称、下单时间、订单商品标题、商品数量、总价等信息

select b.phone,b._name,g.goods_title,g.ammount,g.price
from i_basic b,i_cart c,i_goods g
where b.phone=c.phone and g.goods_id=c.goods_id

3.查询显示所有类型的商品,如果某个类型没有对应的商品则显示为空

select *from i_goods g
left outer join i_category ca
on g.category_id=ca.category_id

在这里插入图片描述
4. 请用子查询查找年龄最小的用户的基本信息

select *from i_basic where birthday in(
select max(birthday) from i_basic
);

在这里插入图片描述
5. 请用子查询查找所有商品以及该商品所属的一级类型名称

select goods_id,goods_title,(
	select category_name from i_category where
	category_id=(
		select parent_id from i_category
		where category_id=g.category_id
	)
) 一级类型名称 from i_goods g;

在这里插入图片描述
6. 分页查询订单编号、用户身份证号、商品名称、商品数据量、总价,要求每页显示 7 条,显示第 5 页的数据

select o.order_id,b.id_card,(
	select goods_title from i_goods where goods_id=o.goods_id),
	o.ammount,o.sum_price from i_order o,i_basic b 
		where o.phone=b.phone limit 28,7;

在这里插入图片描述

小结

能用多表联查方式实现的查询使用子查询一定能够实现,但是使用子查询实现的查询使用多表联查不一定能够实现,在实际项目业务中根据业务需求灵活使用多表联查和子查询。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值