1. "+"没有连接数据的作用,只能做+运算,那么在MySQL中如果想要将数据连接在一起又该如何办呢?CONCAT(参数1,参数2,…参数n);
  2. SELECT IFNULL(参数1,参数2);   参数1:用来判断是否为null      参数2:假如参数1为null,设置参数2为参数1的替代值
  3. 筛选条件(1)条件运算 > 、<、=、!=、<>、<=、>= (2) 逻辑运算 & 、 || 、! 、and、or、not (3)模糊查询like、between and 、inis (not) null
  4. like通常和通配符搭配使用:     ①:%:代表任意多个字符       ②:_:代表任意单个字符
  5. 常见单行函数:
    (1)字符函数concat、length、ifnull、Upper、Lower、Substr(string,start,length)·从string的start位起截取length位、
     Instr( string, sub-string, start, nth ) 返回sub-string在string中的位置,从start起查(默认为1),查第n次出现的位置(默认为1)。
    Trim([{Both(默认) | Leading(头部)|Trailing(尾部)} [sub-str(默认为空格)] FROM] string) 从string的**(默认左右两侧)删除sub-str
    Lpad( string, length, [ sub-str] )对string以 sub-str(默认为空字符)填充,最终结果返回的字符串长度为 length
    Replace (String,from_str,to_str)  将String中所有出现的from_str替换为to_str(不写默认为null)。
    (2)数学函数: Round()四舍五入;Ceil() 向上取整(返回大于等于该参数的最小整数); Floor() 向下取整,返回小于等于该参数苏的最大整数
    Truncate(X,D) 返回X的截断到小数位D号的值   Mod() 取余

    内连接:
  • 以表1记录为准,连接表2记录,根据连接条件:(1)表1有而表2没有表1没有而表2有的部分,均删除
                                                                                (2)表1有1而表2有n表1有n而表2有1,按对应关系补齐n条记录
  • 根据连接条件,若表1一条记录对应n条表2记录,则生成n条新记录,而不是删除多余的表2的记录

   外连接:

  • 以主表记录为准,连接从表记录,根据连接条件:(1)主表有从表没有,从表字段填充为null;(内连接与外连接唯一区别)(2)主表没有从表有的部分,删除
                                                                                   (3)主表有1而从表有n主表有n而从表有1,按对应关系补齐n条记录
  • left join左边的是主表,right join右边的是主表;                         注:内连接无left和right的区分

     

    select后面的子查询
    仅仅支持标量子查询(单行单列)
    /**案例1:查询每个部门的员工个数
        分析:涉及到表departments和表employees:count(*) --> department_id
    **/
    SELECT d.*, (
        SELECT COUNT(*) FROM employees e
        WHERE d.'department_id' = e.'department_id'
    )员工个数
    FROM departments d;
    from后面的子查询
    /**案例1:查询每个部门的平均工资的工资等级
    分析:①查询每个部门的平均工资(查询结果为一个结果集);
    ②将①的结果集起别名作为一张新表(avg),将表avg和表grade_level进行连接查询 SELECT av.
    *,grade_level FROM ( SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id ) av INNER JOIN job_grade ON av.ag BETWEEN lowest_sal AND highest_sal;