趣文网,分享全网好句子、好文章!

sql查询语句学习 多表查询和子查询以及连接查询

时间:2023-06-07 03:21:01

相关推荐

sql查询语句学习 多表查询和子查询以及连接查询

交叉连接查询

这种查询方式基本不会使用,原因就是这种查询方式得到的是两个表的乘积(笛卡儿集)

语法就是select * from a,b;

内连接查询,可以有效的去除笛卡尔集现象

内连接查询分为两类:

隐式内连接 select * from A,B where 条件隐式连接使用别名:select * from A 别名1,B 别名2 where 别名1.xx=别名2.xx;显示内连接 select * from A inner join B on 条件 (inner可以省略)显示连接使用别名: select * from A 别名1 inner join B 别名2 on 别名1.xx=别名2.xx

举例:

SELECT * FROM category c,product p WHERE c.cid=p.category_id;

外连接

外连接有两种方式,一种是左外连接,一种是右外连接

左外连接:select * from A left outer join B on条件右外连接:select * from A right out join B on 条件左外连接就是左边的表的内容全部显示,然后匹配右边的表,如果右边的表匹配不到,则空右外连接就是右边的表的内容全部显示,然后匹配左边的表,如果左边的表匹配不到,则空

总结:

内连接就是两个表的交集

左外连接就是左边表加两表交集

右外连接就是右边表加两表交集

子查询

子查询就是查询中还有查询,就是一条select语句结果作为另外一条select语法的一部分(查询结果,查询条件,表等)

子查询的用处很多比如:查询本公司工资最高的员工的详细信息

select * from emp where sal=max(sal)这个是错误的,原因是聚合函数不可以用在条件中,要想解决这个问题,只能用子查询select* from emp where sal=(select max(sal)from emp)

exists关键字select * from emp where exists(select max(sal) from emp)这句话的意思是只要(select max(sal) from emp)有结果则执行select * from emp,否则不执行

子查询出现在where后是作为条件出现的

子查询出现在from之后是作为表存在的

作为表举例 select e.emono,e.ename from(select * from where deptno=30) e还给表起了一个别名e

作为条件有以下几种情况

单行单列:可以使用=,>,<,>=,<=,!=多行单列(集合)可以用All ANY IN not IN单行多列(对象),就是一行,像一个对象一样什么属性都有多行多列:多行多列一直用在from后面作为表

单行单列举例:select * from emp where sal >(select avg(sal) from emp)

多行多列举例:select * from emp where sal> All(select sal from emp where deptno=10)

单行多列举例:select * from emp where(job,deptno,sal)IN(select job,deptno,sal from emp where ename="殷天正");(查询和殷天正一样工作,工号,工资的人的工作,工号,工资从emp表中)

每天分享编程语言,欢迎关注

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(2)
  1. →淡然、零°C2023-12-08 04:06→淡然、零°C[广东省网友]182.23.186.36
    我觉得学习SQL查询语句可以让我更深入地了解数据库,多表查询和子查询让我在实际应用中处理复杂数据变得更轻松。
    顶0踩0
  2. 浮世离歌2023-09-07 03:43浮世离歌[香港网友]110.93.49.154
    学习SQL查询语句真的很重要,特别是多表查询和子查询,连接查询更是提高了我的数据处理能力。
    顶0踩0
相关阅读