1.格式

SQL 语言大小写不敏感
SQL 可以写在一行或者多行
关键字不能被缩写也不能分行
各子句一般要分行写
使用缩进提高语句的可读性
 
2.列的别名
SELECT activity_id FROM jsnh_activity

 activity_id的别名设为id

SELECT activity_id id FROM jsnh_activity

SELECT activity_id AS id FROM jsnh_activity

 

3.字符串

字符串可以是 SELECT 列表中的一个字符,数字,日期,日期和字符只能在单引号中出现
 
字符串‘aa’作为列名param1返回,activity_id-3列名作为id返回。注意+是运算符,不是字符串的拼接符
SELECT 'aa' as param1,activity_id + '-3' as id FROM jsnh_activity

 

4.显示表结构

DESCRIBE jsnh_activity

 

5.过滤和排序

过滤:WHERE
排序:ORDER BY
SELECT * FROM jsnh_activity WHERE activity_id > 3 ORDER BY activity_id DESC

 

5.1WHERE

1)比较运算

 

 2)逻辑运算

 

 

3)like通配符补充说明

(1)MySQL中的常用统配符有三个
       %:用来表示任意多个字符,包含0个字符
       _  : 用来表示任意单个字符
       escape:用来转义特定字符

在MySQL中统配符一般和模糊查询 like 关键字结合使用

(2)%的使用方式
select * from user where username like '%P%';  
查询包含P的字符串


(3)"_"的使用方式
select * from user where username like 'P_boy';
查询长度为5,以p开头,以boy结尾的字符串

(4)escape的使用方式及注意事项
escape的作用是用来转义,比方说我们有需求查询某些特殊字符的时候,就需要使用它:比如要查字符%或者_,那么我们就需要用到转义
select username from user where username like '%pbo/_%' escape '/';

查询包含pbo_的字符串这里定义/为转译符,所以/_实际表示的是_

 

4)in和exists

https://blog.csdn.net/Cool_Wayen/article/details/79614806

 

6.分组

6.1分组函数

分组函数作用于一组数据,并对一组数据返回一个值
AVG()  平均数
COUNT()  数量
MAX()        最大值
MIN()        最小值
SUM()        求和
 
SELECT AVG(activity_id), COUNT(activity_id),MAX(activity_id),MIN(activity_id),SUM(activity_id) FROM jsnh_activity

6.2GROUP BY

使用GROUP BY子句将表中的数据分成若干组,GROUP BY可以包含多个列
 
按照activity_code分组,再对每组获取activity_id的平均值,最大值等
SELECT activity_code,AVG(activity_id), COUNT(activity_id),MAX(activity_id),MIN(activity_id),SUM(activity_id) FROM jsnh_activity GROUP BY activity_code

 

按照activity_codeactivity_id两个字段分组,相当于按照两个字段的内容拼接在一起的值进行分组

SELECT activity_code,AVG(activity_id), COUNT(activity_id),MAX(activity_id),MIN(activity_id),SUM(activity_id) FROM jsnh_activity GROUP BY activity_code,activity_id

 注意:group子句后不能有where

 

6.3条件过滤having

在分组后,对分组后的结果进行条件过滤

查询出activity_id 大于2的结果,再对结果按照activity_code进行分组,再获取每个分组的activity_id的平均值,最大值等,再过滤出activity_id平均值大于5的结果

SELECT activity_code,AVG(activity_id), COUNT(activity_id),MAX(activity_id),MIN(activity_id),SUM(activity_id) 
FROM jsnh_activity WHERE activity_id > 2 GROUP BY activity_code HAVING  AVG(activity_id) > 5

 

7、distinct 去重

SELECT activity_code FROM jsnh_activity

 

 对查询到的结果进行去重,去掉完全重复的结果

SELECT DISTINCT *  FROM jsnh_activity

 

对查询结果,按列activity_code去重,去掉activity_code重复的结果

SELECT DISTINCT(activity_code),activity_id  FROM jsnh_activity

 

8.LIMIT

截取部分结果集

对查询到的结果只返回前10个,第一个数字标识从几个开始截取,第二个数字表示截取多少个

SELECT * FROM jsnh_activity LIMIT 0,10

 

9.多表联查

9.1分类

内连接 [inner] join on
外连接
  左外连接 left [outer] join on
  右外连接 right [outer] join on
  全外连接 full join on
交叉连接 cross join 
 
9.2几种连接查询获取的结果的区别
 

 

 

 

 9.3特殊的自连接

cap_menu表,主键MENU_ID,父节点主键PARENT_MENU_ID,查询出有父节点的数据,查询出id、name、父id、父name

SELECT m.MENU_ID 子id,m.MENU_NAME 子name,n.MENU_ID 父id,n.MENU_NAME 父name
FROM cap_menu m,cap_menu n
WHERE m.PARENT_MENU_ID = n.MENU_ID

 

10.子查询

https://www.jianshu.com/p/620eef505bd8