Navicat入门代码,跟着代码学,毕竟工作需要,为了生活,要尝试学习新的技能,或许哪一天你也就是运维大神了!
SELECT <目标列名表> FROM <数据源表> [WHERE <查询条件>] [GROUP BY <分组列>] [HAVING <组选择条件>] [ORDER BY <排序列>]
例1:查询操作流水表中的所有单据。 Select * from T_OPER_LOG 例2:查询操作流水表中所有的单据号, 并在输出时命名为“LOG单据”。 Select `task_id` as LOG单据 From T_OPER_LOG 例3:查询操作流水表中所有的单据号, 重复的单据号不显示。 Select distinct`task_id` From T_OPER_LOG
例1:查询所有的被催办单据。 Select * from T_OPER_LOG Where `oper_type`=‘1600’ 例2:查询所有的被催或转组办单据。 Select * from T_OPER_LOG Where `oper_type` in (‘1600’,’220’) Select * from T_OPER_LOG Where `oper_type` = ‘1600’ or `oper_type` = ‘220’ or表示任意满足一个条件,and表示必须同时满足条件
例3:查询姓张的同事操作过的所有单据。 Select * from T_OPER_LOG Where operator like‘%zhang’ 通配符%代表任意长度的字符串 例4:查询姓张,且英文名长度为7位字母的同事操作过的所有单据。 Select * from T_OPER_LOG Where operator like‘__zhang’ 通配符_代表任意长度的字符串
例5:查询djzhang或姓雷的同事在3月2日以前操作过的单据号,命名为单据号并去重。 Select distinct `task_id` as 单据号 from T_OPER_LOG Where (operator =‘djzhang’ or operator like‘%lei’) And `oper_time`<‘2014-03-02 00:00:00’
ORDER BY <列名> [ASC | DESC ] [ ,… n ] ASC表示按列值升序方式排序,DESC表示按列值降序方式排序。 如果没有指定排序方式,则默认的排序方式为升序排序。 在ORDER BY子句中,可以指定多个用逗号分隔的列名。这些列 出现的顺序决定了查询结果排序的顺序。 例6:查询操作流水表中的所有催办单据,先按操作人排升序,再 按照操作时间排降序。 Select * from T_OPER_LOG Where `oper_type`=‘1600’ Order by `operator` asc,`oper_time` desc
GROUP BY <分组列> [ ,… n ] 有时我们需要把FROM、WHERE子句产生的表按某种原则分成 若干组,然后再对每个组进行统计,一组形成一行,最后把所有 这些行组成一个表,称为组表。 分组原则是<分组列>的列值相同,就为同一组。 GROUP BY语句通常出现在查询结果有统计函数的情况下。
例7:查询3月1日所有人员催办次数。 Select `operator` as 催办人,count(*) as 催办次数 From `T_OPER_LOG` Where `oper_type`='1600' And `oper_time` like '2014-03-01%' Group by `operator`
HAVING <组选择条件> HAVING子句指定GROUP BY生成的组表的选择条件,在 GROUP BY子句之后,并且必须与GROUP BY子句一起使用。 例8:查询3月1日催办次数大于等于3的人员当天催办次数。 Select `operator` as 催办人,count(*) as 催办次数 From `T_OPER_LOG` Where `oper_type`='1600' And `oper_time` like '2014-03-01%' Group by `operator` Having count(*)>=3
例1:查询3月1日被催办过的单据用户QQ号码。 通过JOIN语句关联两张表中的字段,将两张表捆绑在一起。 几种不同的JOIN语句 JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
例1:查询3月1日被催办过的单据用户QQ号码。 Select distinct t1.`userid` as 用户QQ号码 From `SAM_CASE201403`.`T_TASK_BASE` as t1 Left join `SAM_CASE201403`.`T_OPER_LOG ` as t2 On t2.`task_id`=t1.`task_id` Where t2.`oper_type`=‘1600’ And t2.`oper_time` like ‘2014-03-01%’
例2:查询3月有升级错误的一线员工名。 Select distinct t1.`create_user` as 一线员工名 From `SAM_CASE201403`.`T_TASK_BASE` as t1 Left join `SAM_CASE201403`.`T_OPER_LOG ` as t2 On t2.`task_id`=t1.`task_id` Where t2.`oper_type`=‘220’ And t1.`intro` like ‘%升级错误%’ And t1.`create_time` like ‘2014-03%’
例2:查询3月1日有升级错误的一线员工名。 Select distinct t1.`create_user` as 一线员工名 From `SAM_CASE201403`.`T_TASK_BASE` as t1 Where t1.`intro` like ‘%升级错误%’ And t1.`create_time` like ‘2014-03-01%’ And t1.`task_id` in (select `task_id` from `T_OPER_LOG` where `oper_type`=‘220’)
未经允许不得转载:运维大虾 » Navicat入门代码,学会让你玩转SQL成为运维大师