一、查询
1. 查询表格全部数据
SELECT * from 表名;
2. 查询单个表格的单个字段数据或者多个字段数据;字段之间英文都好隔开
select id from 表名;
select id,name from 表名;
3、单表条件查询+and,and连接不同的条件,相当于且,要同事满足的条件
单条件查询
select * from 表名 where id=1122;
多条件查询
select * from 表名 where id=1234 and name='小白';
4、分组查询+ group by
语法:SELECT 字段1 ,字段 2 from 表名 where 条件 GROUP BY 字段1/字段2;
需求;查询禅道中每个产品的bug总数,按产品id进行分组统计
SELECT COUNT(*),product from zt_bug where deleted=1 GROUP BY product;
结果:
过滤条件having,having是对已经分组的数据再进行处理,如,查询产品bug总数中bug总数大于1000的产品:
SELECT COUNT(*),product from zt_bug where deleted=1 GROUP BY product HAVING COUNT(*)>1000;
SELECT COUNT(*),product from zt_bug where deleted=1 and openedDate > '2023-01-01' GROUP BY product; -- 查询2023年每个项目的bug总数,按照产品进行分组统计
可能会遇到的问题:
1)、group by 后面的字段只能是查询的字段中,如只能是product或者zt_bug表中的字段
5、in 语句
语法:匹配多个字段,select * from 表名 where 字段 in (字段1,字段2)
查询等级为1、2级的bug数据行
SELECT * FROM zt_bug zb where severity in('1','2');
6、between 语句
语法:选取介于两个值之间的数据范围。BETWEEN 同 AND 一起搭配使用
WHERE column BETWEEN value1 AND value2
WHERE column NOT BETWEEN value1 AND value2
1、数值型,通常 value1 应该小于 value2,例子:查询9月零点之前的bug数
SELECT * FROM zt_bug where openedDate BETWEEN '2023-09-01' AND '2023-09-30';
SELECT * FROM zt_bug where openedDate BETWEEN '2023-09-01 00:00:00' AND '2023-09-30 23:59:59';
7、like 语句
语法:
select * from table1 where code like ‘%abc’; 查询列值以abc结尾的
Select * from table1 where code like ‘abc%’ 查询列值以abc开头的
Select * from table1 where code like ‘%abc%’ 查询列值包含abc的;
二、sql 加减乘除取余运算
语法:SELECT (UNIX_TIMESTAMP(结束时间)-UNIX_TIMESTAMP(开始时间))/(24*3600) AS days from 表名 where 条件
使用时间错的方式,查询产品名字叫‘线上问题池’下的2023年后1级bug的平均处理工时(天数)
SELECT (AVG(UNIX_TIMESTAMP(resolvedDate)-UNIX_TIMESTAMP(openedDate)))/(24*3600) AS days from zt_bug where resolvedDate != '00-00-00' and product ='86' and severity=1 and openedDate >'2023-01-01';
三、排序
语法:SELECT 列名 FROM 表 ORDER BY 指定列名
1、升序,两种方式效果一致,都是按照1234
SELECT * from zt_bug ORDER BY severity;
SELECT * from zt_bug ORDER BY severity ASC ;
2、倒序,根据严重程度倒序/降序,也就是4321
SELECT * from zt_bug ORDER BY severity DESC ;
3、多重排序,就像筛选条件中,以销量作为主要排序,销量一致时以价格作为第二条件排序
SELECT ID ,name from zt_product ORDER BY ID ASC , name DESC ;
4、根据列位置排序
语法:SELECT 所有列 FROM 表 ORDER BY 2,3
对查询的所有字段中,仅对13和14列字段机型升序排序
SELECT * FROM zt_bug zb ORDER BY 13,14;