Navicat入门代码,学会让你玩转SQL成为运维大师

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语句通常出现在查询结果有统计函数的情况下。

Navicat入门代码,教你如何SQL

例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’)

标签

发表评论

CAPTCHAis initialing...