zoukankan      html  css  js  c++  java
  • sql查询以及常见问题理解解析

    推荐w3挺好的基础网站:https://www.w3cschool.cn/t_sql/t_sql_date_functions.html

    =,<,>,> =,<=,IN,BETWEEN运算符包含等于

    一.首先介绍多表查询常见方式:

    嵌套查询:

    select a.id from t_job a where jobid in(select jobid from t_pipeline where jobname=' xx')

    其实也可以理解为子查询一种

    内连接查询inner join 一般我们直接叫join

    SELECT Persons.LastName a , Orders.OrderNo b
    FROM Persons, Orders
    WHERE a.Id_P = b.Id_P 

    外连接查询:left join ,right join 

    left join 关键字在左,多去少补,以左边表的关键字为准

    SELECT column_name(s)
    FROM table_name1 a
    LEFT JOIN table_name2 b
    ON table_name1.id= b.id

    right join
    关键字在右,多去少补,以右边表的关键字为准
    SELECT ID,NANE
    FROM t_JOB a
    LEFT JOIN T_PIPLINE b
    ON table_name1.id= b.PIPELINEID 

    临时表:
    select id from (select a.*,b.jobName from t_job a left join t_pipeline b on a.id=b.id)t group by id order by desc

    联合查询union 和 all
    UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
    SELECT column_name(s) FROM table_name1
    UNION
    SELECT column_name(s) FROM table_name2
    UNION 操作符选取不同的值不会有重复的字段,若需要保留用 union All
    SELECT column_name(s) FROM table_name1
    UNION ALL
    SELECT column_name(s) FROM table_name2

    二。聚合函数 group by having 运用

    聚合函数是SQL一种特殊的函数。例如:

    • count(*):获取数量
    • sum():求和(这里要注意求和是忽略null值的,null与其他数值相加结果为null,所以可以通过ifnull(xxx,0)将null的值赋为0)
    • avg():求平均数
    • max():求最大值
    • min():求最小值
    where 和group by ,having
    概念上首先
    where:数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,直接查询的表数据,他有个缺陷不可以和聚合函数联合使用
    having 读取的是内存
    只要条件里面的字段, 不是表里面原先有的字段就需要用having. SQL在查询表的时候先把查询的字段放到了内存里,而where查询的时候是从表里面查的,其余需要用having。
    当分组筛选的时候 用having,
    其它情况用where
    用having就一定要和group by连用

    HAVING语句通常与GROUP BY语句联合使用,用来过滤GROUP BY语句返回的数据集合,having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。

    HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足

    三:sql 查重,去重
    假如一万条数据有两条重复怎么找出来
    查重select * from t_job where (select id from t_job group by id where count(id)>1);
    去重
    select * from t_job where Name in (select distinct Name from t_job );

    四:分页
    limit by
    索引 0开始
    select id from t_job limit by 5,15
    从第六行开始数10行向后 。。。
  • 相关阅读:
    asp.net core的DI框架思考以及服务实例的获取方式总结
    并发相关随笔(持续更新)
    为什么Dotnet Core的DI默认是在控制器中注入
    在控制台下玩玩dotnet core内置原生的DI
    asp.net core 依赖注入实现全过程粗略剖析(3)
    EF 下如何更新数据表数据
    asp.net core 依赖注入实现全过程粗略剖析(2)
    asp.net core 依赖注入实现全过程粗略剖析(1)
    【MongoDB 高可用篇】MongoDB Sharding Cluster启动和关闭过程
    【MongoDB 高可用篇】MongoDB Sharding Cluster集群环境搭建
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/10646318.html
Copyright © 2011-2022 走看看