数据库DML操作,查询

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.28set @@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函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值