DML(Data Manipulation Language):数据操作语言,用来对数据库种表的数据进行增删改。 关键字:insert, delete, update 等。
查询
查询数据表数据:
select * from Machine;
按照条件查询数据(where和having):
select * from Machine where id = 1;
SELECT ip,ip1,ip2,ip3,ip4,count(*) ct,mobile_info FROM `lmaster_log`
GROUP BY ip1,ip2,ip3 ORDER BY ip1,ip2,ip3,ip4 HAVING ct > 2;
having一般跟在group by之后,执行记录组选择的一部分来工作的
语法:group by 分组字段;
- 注意:
- 分组后查询的字段:分组字段,聚合函数
- where 和 having 的区别
- where 在分组前进行限定,如果不满足条件,则不参与分组。havaing 在分组后进行限定,如果不满足条件,则不会被查询出来
- where 后不可以跟聚合函数,having可以进行聚合函数的判断
- 代码示例:
select sex, AVG(math) from student group by sex;
select sex AVG(math), COUNT(id) from student where math > 70 group by sex ;
select sex AVG(math), COUNT(id) from student where math > 70 group by sex having COUNT(id) > 2;
按照类型来查看:
select * from DCN_Instance group by `DCN Instance`;
注: ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'dacm.DCN_Instance.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 解释:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中, 也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。
按照条件查询,无法查询,需要做一下设置;(当前版本 5.7.28)
set @@GLOBAL.sql_mode='';
set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
或者:
select `DCN Instance`,sum(`Az contain DCN Instance`) from DCN_Instance group by `DCN Instance`;
拓展:sum 统计一组数据里面的总数
max 统计一组数据里面的最大的
分页查看:
select * from DCN_Instance limit 1;
分多个字段查看:
select 字段名1,字段名2,...from 表名;
去重查看,指的是所有字段全部相同;
select distinct 字段名1,字段名2,...from 表名;
计算列
-一般可以使用四则运算计算一些列的值。(一般只会进行数值型的运算)
- ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
- 表达式1:哪个字段需要判断是否为null
- 如果该字段为null后的替换值。
起别名
as:as可以用空格代替
where子句后面跟条件
- <=、>=、>、<、=、<>
- select 列名 from 表名 where 属性名 符号 属性值;
- select name from student where age > 18;
- between...and
- select 列名 from 表名 where 属性名 between 属性值 and 属性值;
- select name from student where student.age BETWEEN 10 AND 30;
- 包含端点
- in(集合)
- select 列名 from 表名 where 属性名 in (集合);
- Delete from DB_Node where 嵌套字段 in (select id from DB_Cluster where `Cluster ID` ='000014');
- like:模糊查询
- 占位符
- '_': 任意单个字符
- '%':任意多个字符
- select name from student where name like '张%';
- is null
- select 列名 from 表名 where 属性名 is null;
- select name from student where score is null;
- and 或 &&
- or 或 ||
- not 或 !
排序查询:
语法:order by 语句;
- order by 排序字段1 排序方法1,排序字段2 排序方法2…;
- 排序方式
- ASC:升序 默认的
- DESC:降序
- 注意:
- 如果有多个排序条件,则当第一个条件相同时,才会判断第二个条件。
聚合函数
- 定义 - 将一列数据作为整体,进行纵向的计算。 - count:计算个数 - 一般选择不包含非空的列:主键 - count(*) - max:计算最大值 - min:计算最小值 - sum:计算和 - avg:计算平均值 - 注意 - 聚合函数的计算,排除null值 - 解决方案 - 选择不包含非空的列 - IFNULL函数