0
点赞
收藏
分享

微信扫一扫

MYSQL学习笔记(基础篇)


1.IFNULL 判断字段值是否存在null,存在转为0,一般用于运算

select money + IFNULL(num,0) nums  from table_name;

2.DISINCT mysql查询结果去重

select DISINST name from table_name;

3.DESCRIBE (desc)显示表结构

DESCRIBE table_name;

4.ISNULL() 查询值为null 的字段

5.IS NOT NULL 查询值不为null 的字段

6.LEAST()查询最小值

7.GREATEST()查询最大值

8.LENGTH()计算字段值长度

9.BETWEEN...AND...查询字段值区间 >=,<=

NOT BETWEEN...AND...不在这个区间的数据

10.replace() 替换函数

11.like 模糊搜索

title like '%a%'; 
title like '%a%e%';
title like '%a%' and title like '%e%';

12 _ :一个下划线代表一个不确定的字符

title like '_a%';
title like '_\_a%'; #转义字符查询带_的字符
title like '_$_a%' ESCAPE'$'; #将'$' 设置为转义字符

13.REGEXP 正则匹配字符串

常用的通配符

(1)'^' 匹配以该字符后面的字符开头的字符串
(2)'$' 匹配以该字符前面的字符结尾的字符串
(3)'.' 匹配任何一个单字符
(4)'[...]' 匹配在方括号内的任何字符,例如[abc]匹配a或b或c,为了命名字符的范围,使用一个'-',"[a-z]"匹配任何字母,而"[0-9]"匹配任何数字。
(5)* 匹配0个或多个在它前面的字符。例如"x*"匹配任何数量的'x'字符,[0-9*]匹配任何数量的数字,而"*"匹配任何数量的任何字符。

14.ORDER BY 排序

#SQL语句执行顺序

3 select title
1 from tablename
2 where id=1
4 order by id desc

#列的别名可以排序

二级排序
order by class desc num asc # 先class排序,再num排序

15.LIMIT 分页

limit 31,2
=
limit 2 OFFSET 31 #mysql8.0新特性

第六章:多表查询

1.笛卡尔积(或交叉连接)

2.等值连接vs非等值连接、自连接vs非自连接、内连接vs外连接

内连接,join on 
左外连接,left join on
右外连接,right join on
满外连接,full join on mysql不支持满外full

3.UNION 和UNION ALL

UNION会执行去重操作
UNION ALL 不会执行去重操作
结论:如果明确知道合并数据后的结果数据不存在重复数据,或者不需要去除重复的数据,则尽量使用 UNION ALL语句,以提高数据查询的效率。

4.SQL99语法新特性1:自然连接


SQL99 在 SQL92 的基础上提供了一些特殊语法,比如 NATURAL JOIN 用来表示自然连接。我们可以把


自然连接理解为 SQL92 中的等值连接。它会帮你自动查询两张连接表中 所有相同的字段 ,然后进行 等值连接 。



在SQL92标准中:

SELECT employee_id,last_name,department_name 
FROM employees e
JOIN departments d ON e.`department_id` = d.`department_id`
AND e.`manager_id` = d.`manager_id`;

在 SQL99 中你可以写成:

SELECT employee_id,last_name,department_name 
FROM employees e
NATURAL JOIN departments d;

5.SQL99语法新特性2:自然连接



当我们进行连接的时候, SQL99 还支持使用 USING 指定数据表里的 同名字段 进行等值连接。但是只能配



合 JOIN 一起使用。比如:



SELECT employee_id,last_name,department_name 
FROM employees e ,departments d
WHERE e.department_id = d.department_id;



你能看出与自然连接 NATURAL JOIN 不同的是, USING 指定了具体的相同的字段名称,你需要在 USING



的括号 () 中填入要指定的同名字段。同时使用 JOIN...USING 可以简化 JOIN ON 的等值连接。它与下



面的 SQL 查询结果是相同的:



SELECT employee_id,last_name,department_name 
FROM employees e
JOIN departments d USING (department_id);


第七章: 单行函数 

1.基本函数

2.数值类型函数

3.字符串函数

4.日期和时间函数

5.流程控制函数

6.加密与解密函数

7.MySQL信息函数

8.其他函数

第八章:聚合函数

1.常见的聚合函数

1.1  AVG /  SUM

1.2  MAX  /  MIN 

1.3  COUNT

求方差,标准差,中位数

2.GROUP BY的使用

        with rollup 

3.HAVING 的使用

        要求1:如果过滤条件中使用了聚合函数,则必须使用HAVING来替换WHERE.否则报错

        要求2:HAVING必须声明在group by 的后面

        开发中我们使用HAVING的前提是SQL中使用了group by

WHERE 与 HAVING的对比

①从适用范围对比,HAVING的适用范围更广。

②如果过滤条件中没有聚合函数:这种情况下,WHERE的执行效率要高于HAVING

4.SQL底层执行原理

4.1  SELECT  语句的完整结构

4.2  SQL语句的执行过程

举报

相关推荐

0 条评论