mysql高级查询语句

mysql高级查询

1.分组查询
分组查询是指使用group by字句对查询信息进行分组。
格式:

SELECT 字段1,字段2FROM 表名 GROUP BY分组字段 HAVING 分组条件;

分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。
having与where的区别:
having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用聚合函数(统计函数)
where后面不可以使聚合函数。
在这里插入图片描述
2.多表操作
实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系,接下来我们将在单表的基础上,一起学习多表方面的知识。

3.外键约束
键特点:
从表外键的值是对主表主键的引用。
从表外键类型,必须与主表主键类型一致。

声明外键约束

语法:
alter table 从表 add [constraint 外键名称] foreign key 从表名(从表外键字段名) references 主表
名(主表的主键);
[外键名称]用于删除外键约束的,一般建议“_fk”结尾
alter table 从表 drop foreign key 外键名称

使用外键目的:
保证数据完整性

4.一对多和多对多关系
在这里插入图片描述
在这里插入图片描述
5.多表查询
交叉连接查询(基本不会使用-得到的是两个表的乘积) [了解]
语法: select * from A,B;
在这里插入图片描述
内连接查询(使用的关键字 inner join – inner可以省略)
隐式内连接: select * from A,B where 条件;
显示内连接: select * from A inner join B on 条件;

外连接查询(使用的关键字 outer join – outer可以省略)
左外连接:left outer join
select * from A left outer join B on 条件;
右外连接:right outer join
select * from A right outer join B on 条件;

注意:左外连接,左表中的记录都会显示,不管有没有对应的右表内容。

隐式内连接:会保证左右两边的记录对象的id相同才会显示。

6.子查询
一条select语句结果作为另一条select语法一部分(查询条件,查询结果,表等)。 语法: select …查询字段 … from … 表… where … 查询条件

#3 子查询, 查询“化妆品”分类上架商品详情
#隐式内连接
SELECT p.*
FROM products p , category c
WHERE p.cid=c.cid AND c.cname = '化妆品';
#子查询
##作为查询条件
SELECT *
FROM products p
WHERE p.cid =
(
SELECT c.cid FROM category c
WHERE c.cname='化妆品'
);
##作为另一张表
SELECT *
FROM products p ,
(SELECT * FROM category WHERE cname='化妆品') c
WHERE p.cid = c.cid;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值