MySQL基础--3--DQL连接,子查询简介

连接查询
        一:内连接

SELECT 查询列表
from 表1 别名
inner join 表2 别名
on 连接条件
where~~~~


            《1》等值连接

                多表连接结果为多表的交际部分
                n表连接最少需要n-1连接条件
                无顺序要求
                一般需要起别名
                可以搭配子句,比如排序函数等


            《2》非等值连接
            《3》自连接
            《4》特点

1:添加排序,分组,筛选
2:inner可以省略
3:筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读
4:inner join连接和sql92语法中的等值连接效果是一样的


        二:外连接

SELECT 查询列表
FROM 表1 别名 【连接类型】
join     表2 别名 
on       连接条件
【where 筛选条件】
【group by 分组】
【HAVING 筛选条件】
【order by 排序列表】
查询成绩为空的学生,学生是主语,student在表1,成绩为条件,result在表2,成绩为空,两表联立后select后面接的哪个字段(如result.score),where后面就是result.score IS NULL


            《1》左外连接

left【outer】 join


            《2》右外连接

right【order】  join


            《3》全外连接

full 【outer】
就是内连接的结果+表1中有但表2没有+表2中有但表1有
类似于并集


            《4》特点

1:外连接的查询结果为主表中的所有记录,如果从表中有和他匹配的,则显示匹配的值,没有则显示null
2:外连接查询结果为内连接结果+主表中有而从表中没有的记录
3:左外连接,left join左边的是主表,右外连接,right join右边的是主表
4:左外和右外交换两个表的位置,结果相同
5:信息细则所属为主表,字段为副表


        三:交叉连接

cross join
sql99语法
笛卡尔乘积,很loser,暂时没看出来作用

 

 


    子查询
        一:含义:出现在其他与剧中的select语句,称为子查询或内查询,外部的查询语句称为主查询或外查询
        二:分类
            《1》按子查询出现的位置:子查询执行优先于主查询,主查询使用子查询的结果
                <1>select后面:只支持标量子查询
                <2>from后面:支持表子查询,将结果看做一张表,要求起别名
                <3>where或having后面

重点
1:子查询放在小括号内
2:子查询一般放在条件的右侧
3:标量子查询,一般搭配着单行操作符使用,如>  <  >=  <=  =  <>
列子查询,一般搭配着多行操作符使用,如in any/some all


                    1>标量子查询(单行子查询):注意不要用不符合逻辑操作
                    2>列子查询(多行子查询):使用多行比较操作符
                    3>行子查询(多列多行)
                <4>exists后面

语法:exists(完整的查询语句)
结果:1或者0


                    表子查询(也叫相关子查询)
            《2》按结果集的行列数不同
                <1>标量子查询(一行一列)
                <2>列子查询(一列多行)
                <3>行子查询(结果集有多行多列)
                <4>表子查询(结果集一般为多行多列)
    三:分页查询
        《1》语法

select 查询列表
from 表
【join type join 表2
on 连接条件
where 筛选条件
group by 分组字段
having 分组后的筛选
order by 排序的字段
limit 【offset,】size】
offset是要显示的起始索引,默认起始索引从0开始,size是要显示的条目个数,起始值11的话,显示的是第一条是第12数据


            按页数显示

limit (page-1)*size,size


        《2》特点:limit语句放在查询语句的最后
    四:语句执行顺序

先执行from语句,
再执行join连接语句,
再执行on后面的连接条件,
再执行where语句,
再执行group by语句,
再执行having分组后查询语句,
再执行select查询列表,
再执行order by排序,
再执行limit分页


    五:联合查询
        《1》语法

查询语句1
union 【all】
查询语句2
可多个union
不去重可以加all参数


        《2》应用场景:要查询的信息来自多个表,且多个表没有直接的连接关系,但是查询的信息一致
        《3》特点
            <1>要求多条查询语句的查询列数是一致的
            <2>要求多条查询语句的查询的每一列的类型和顺序最好一致,否则会查询,但数据会混乱
            <3>union 关键字默认去重,如要不去重,可以使用union all

你可能感兴趣的:(MySQL)