MySQL02

一.把查询结果去除重复记录

关键字:distinct,只能出现在所有字段的最前方,如果有多个字段,表示两个字段联合去重

select distinct 字段名 from 表名;

二.连接查询

1.什么是连接查询:

从一张表中单独查询是单表查询;多个表联合起来查询称为连接查询。

2.分类:

(根据语法的年代)

  • SQL92:1992年的时候出现的语法
  • SQL99:1999年的时候出现的语法

(根据表的连接的方式)

  • 内连接:(1)等值连接(2)非等值连接(3)自连接
  • 外连接:(1)左外连接(左连接)(2)右外连接(右连接)
  • 全连接

3.笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件限制的时候,最终查询的结果条数,是两张表条数的乘积。

select 字段名1,字段名2 from 表1,表2;

 4.避免笛卡尔积现象:连接时加条件,满足这个条件的数据被筛选出来:(匹配的次数没有减少,但是显示出来的数据会减少)表起别名很重要

        表1.字段名1=表2.字段名1

5.内连接之等值连接(条件是等量关系,所以称为等值连接)

select 字段名1,字段名2 from 表1 inner jion 表2 on 表1和表2连接条件 where 筛选条件
//inner可以省略

SQL92缺点:结构不够清晰,表的连接条件和后期进一步筛选的条件,都放到了where后面。

SQL99优点:表连接的条件是独立的,连接之后,如果还需进一步筛选,再往后加where

6.内连接之非等值连接

区间:between...and...

7.内连接之自连接(一张表看成两张表)

8.外连接:除了匹配上的数据其他也显示,出现了主次关系

right:表示将jion关键字右边的这张表看成主表,主要是为了将这张表的数据全部查询出来,捎带着关联查询左边的表,left同理。

select 字段名1,字段名2 from 表1 right outer jion 表2 on 表1和表2连接条件 where 筛选条件
//outer可以省略

 外连接的查询结果次数一定大于内连接的查询结果次数。

9.多张表连接 一条sql语句中内连接和外连接可以混合,都可以出现

select 
    ... 
from 
    a 
jion
    b 
on 
    a和b的连接条件 
jion 
    c 
on 
    a和c的连接条件  

  三.子查询

1.什么是子查询:select语句中嵌套select语句,被嵌套的select语句称为子查询

2.子查询可以出现在哪里:select,from,where语句后面

3.where语句中的子查询

4.from语句中的子查询:可以将子查询的查询结果当做一张临时表

5.select后面的子查询:这个子查询只能返回一条结果,多于一条失败

四.union合并查询结果集

  • 直接将两个select语句用union连接起来。
  • union的效率高一些,对于表连接来说,每连接一次新表,则匹配的次数满足笛卡尔积,成倍的翻,但是union可以减少匹配的次数。,在减少匹配次数的情况下,还可以完成两个结果集的拼接。
  • union在进行结果集合合并得时候,要求两个结果集的列数相同

五.limit

1.limit是将查询结果集的一部分取出来,通常使用在分页查询中

2.在查询的最后加一条limit语句即可

  • 完整用法:limit startIndex,length//startIndex是起始下标,length是长度(默认在0开始)
  • 缺省用法:limit n,取前n条记录

3.注意:mysql中limit在order by之后执行

4.分页

limit (pageNo-1)*pageSize,pageeSize

六.关于DQL语句的大总结

select...from...where...group by...having...ordere by...limit...

                                               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值