1、笛卡尔集

产生条件:

 省略连接条件
 连接条件无效
 所有表中的所有行互相连接
• 为了避免笛卡尔集, 可以在 WHERE 加入有 效的连接条件。

2、等值/连接连接

2.1 使用连接在多个表中查询数据:

 在 WHERE 子句中写入连接条件。
 在表中有相同列时,在列名之前加上表名前缀。

2.2 区分重复的列名

在不同表中具有相同列名的列可以用表的别名加以区分。
如果使用了表别名,则在select语句中需要使用表别名代替表名。
表别名最多支持32个字符长度,但建议越少越好。、

2.3 表的别名

使用别名可以简化查询。
使用表名前缀可以提高执行效率。

2.4 连接多个表

连接 n个表,至少需要 n-1个连接条件。

一、连表查询

1.内联

inner join 

2.外联

left join 、right join

连接n个表需要n-1个连接条件

多表等值连接的结果为多表的交集部分

一般需要为表起别名

多表的顺序没有要求

可以搭配前面介绍的所有句子使用,比如排序,分组,筛选

二、常用函数

1.日期函数

   NOW():获取当前日期和时间
   DAY():获取日期中的天
   MONTH():获取日期中的月
   YEAR():获取日期中的年
   日期转换函数DATE_FORMAT()/STR_TO_DATE()

   DATE_FORMAT():将日期转换成字符串
   STR_TO_DATE():将字符串转换成日期

   查询各学生的年龄,只按年份来算
   按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

2.字符串函数

    UPPER()/LOWER():大小写互转
    REPLACE():搜索并替换字符串中的子字符串
    SUBSTRING():从具有特定长度的位置开始的最一个子字符串  substr
    TRIM():去除前后空格
    LENGTH():获取字符串长度

3.数字函数

   FLOOR:向下取整
   CEIL: 向上取整
   ROUND:四舍五入

三、聚合函数

   SUM():求和。常与GROUP BY一起使用,也可单独使用,
   AVG():求平均值。常与GROUP BY一起使用,也可单独使用
   MAX():求最大值。常与GROUP BY一起使用,也可单独使用
   MIN():求最小值。常与GROUP BY一起使用,也可单独使用
   COUNT():统计记录的条数。常与GROUP BY一起使用,也可单独使用
    如果有筛选的条件加关键字having

四、合并

    UNION:将所有的查询结果合并到一起,然后去除掉相同的记录

    UNION ALL:将所有的查询结果合并到一起,不会去除掉相同的记录