精华内容
下载资源
问答
  • having 和where区别

    2017-07-10 18:04:02
    where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。 --having子句,对分组查询的结果进行过滤  --查询部门号大于10的不同部门的不同工作岗位的人数  select deptno,job, ...

    在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。




    --having子句,对分组查询的结果进行过滤
      --查询部门号大于10的不同部门的不同工作岗位的人数
      select deptno,job, count(*) from emp where deptno > 10 group by deptno,job;--from -where-group by
      select deptno,job, count(*) from emp group by deptno,job having deptno >10;--from -group by-having
      --当where和having都可以使用的时候,这时优先使用where,where执行效率高
     
      --查询不同部门的不同工作岗位的人数并且人数大于1的信息
        --多行函数必须先分组再过滤
       select deptno,job, count(*) from emp group by deptno,job having  count(*) >1;
      
      --统计人数小于4的部门的平均工资。
       select avg(sal), count(*)
         from emp
        group by deptno         --分组
       having count(*) < 6      --过滤
        order by avg(sal) desc; --排序


      --统计各部门的最高工资,排除最高工资小于3000的部门。
       select max(sal)
         from emp
        group by deptno
       having max(sal) >= 3000
        order by max(sal) desc;



    --查询条件where子句 使用算术表达式 = ,< , > ,>= ,<= ,<>
    --查看工资等于1250的员工信息
    select * from emp where sal = 1250;
    --查看工作是CLERK的员工信息,注意大小写
    select * from emp where job = 'clerk';--查询的值是区分大小写
        SELECT * from emp where job = 'CLERK';--关键字不区分大小写
    --查看工资大于1250的员工姓名和工作
    select ename,job,sal from emp  where sal>1250 order by sal ;--order by关键字放到where后面
    --查看工资大于等于2000的员工信息
    select * from emp  where sal>=1250;
    --查看工资小于等于2000的员工信息;
    select * from emp  where sal<=1250;
    --查看工资不等于1500的员工信息
    select * from emp where sal <> 1250;
    --查看入职日期在1981年后的员工信息
        select * from emp where hiredate > '31-12月-1981';-- 日期默认的格式 日月年 





    --where子句使用关键字  and,between, or, in, like ,is null ,is not null
    --查询工资在2000-3000(包括2000和3000)之间的员工信息
        select * from emp where sal>=2000 and sal<=3000; --and
        select * from emp where sal between 2000 and 3000;--between and
      --查询工作为SALESMAN,ANALYST,MANAGER的员工信息
        select * from emp where job='SALESMAN' or job='ANALYST' or  job='MANAGER'; --or
        select * from emp where job in('SALESMAN','ANALYST','MANAGER'); --in
      --查询姓名中包含s的,以s开头的,以s结尾的,第二个字符为A的,包含下划线的名字。
        select * from emp where ename like '%S%';--%代表一到多个任意的字符
        select * from emp where ename like 'S%'; --S开头
        select * from emp where ename like '%S';--S结尾
        select * from emp where ename like '_A%';--下划线代表任意一个字符
       
        
      --查询名字中包含下划线的用户信息
         select * from emp where ename like '%A_%' escape 'A'; --escape '\'转义字符
      --查询有津贴奖金的员工信息
         select * from emp where comm >0;
         select * from emp where comm is not null; --包含奖金为0的员工信息 
         select * from emp where comm is null;  
      --修改表的数据
        select * from emp for update;


































    展开全文
  • linux指令which和whereis的区别

    千次阅读 2019-08-07 16:14:26
     whereis命令只能用于搜索程序名,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)源代码文件(参数-s)。如果省略参数,则返回所有信息。  whereis命令的使用实例:  #whereis vim ...
     1.which
      which命令是查找命令是否存在,以及命令的存放位置在哪儿。
      例:#which ls
    
     2.whereis
      whereis命令只能用于搜索程序名,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
      whereis命令的使用实例:
      #whereis vim
    展开全文
  • laravel中的where和orwhere的源码分析

    千次阅读 2018-11-15 16:39:38
    博主在写sql的时候,遇到了要用orwhere的情况,关键这个orwhere的条件是一个数组,就是要用orwhereIn的方法来写。。反正在这之前博主是一直不知道, 竟然还有orWhereIn的方法,反正是实现了需求。不过越想越不舒服,...

    一、背景

          博主在写sql的时候,遇到了要用orwhere的情况,关键这个orwhere的条件是一个数组,就是要用orwhereIn的方法来写。。反正在这之前博主是一直不知道, 竟然还有orWhereIn的方法,反正是实现了需求。不过越想越不舒服,不能放任这种不明代码不管,所以索性研究下DB的源码部分

    二、关于DB的源码

    laravel的DB源码是在:

    //这个文件夹下封装着对应的DB源码
    \vendor\laravel\framework\src\Illuminate\Database
    

    1、关于数据库增删改查部分的源码位置

    \vendor\laravel\framework\src\Illuminate\Database\Query\Grammars
    

    这个文件下下面有几个文件,大家打开就能看到封装好的方法,例如:

      protected $selectComponents = [
            'aggregate',
            'columns',
            'from',
            'joins',
            'wheres',
            'groups',
            'havings',
            'orders',
            'limit',
            'offset',
            'unions',
            'lock',
        ];
    

    2、关于数据库连接,排序部分的源码

    \vendor\laravel\framework\src\Illuminate\Database\Query
    //文件下有个builder文件,里面封装的就是我们要找的表连接操作的封装
    public $bindings = [
            'select' => [],
            'join'   => [],
            'where'  => [],
            'having' => [],
            'order'  => [],
            'union'  => [],
        ];
    

    在这个文件看了下,普通的where条件查询,最后传给数据库实例的是:

    在这里插入图片描述

    这里我们能看到,最后传的是原生的and.

    而对于orwhere,最后传递的是or
    在这里插入图片描述

          然后大家再看一看其他的方法就发现了,凡事能用and的,都有与之对应的or操作,也就是说,什么orwhereIn啊,orWhereNotInwherenull,orWhereNull全部都是封装好的,我们直接用就好了,本质上只是最后传递给实例的andor参数不同而已。

          到这里博主也算是搞懂了自己想要知道的问题,说到底还是没有好好的看laravel的源码,很多方法人家都是封装好的,但是你不知道,那你注定不会用。加油。

    end

    展开全文
  • Oracle中Inner join和Where区别

    千次阅读 2015-10-13 11:58:04
    (其他Join参数也是显性连接)Where Inner join产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用...
    1 .Where子句中使用的连接语句,在数据库语言中,被称为隐性连接。Inner join……on子句产生的连接称为显性连接。(其他Join参数也是显性连接)Where 和Inner join产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。

      2 .无论怎么连接,都可以用Join子句,但是连接同一个表的时候,注意要定义别名,否则产生错误!

      > Inner join:理解为“有效连接”,两张表中都有的数据才会显示left join:理解为“有左显示”,比如on a.field=b.field,则显示a表中存在的全部数据及a\\b中都有的数据,A中有、B没有的数据以null显示。

      > Right join:理解为“有右显示”,比如on a.field=b.field,则显示B表中存在的全部数据及a\\b中都有的数据,B中有、A没有的数据以null显示。

      > Full join:理解为“全连接”,两张表中所有数据都显示,实际就是inner +(left-inner)+(right-inner)。

      3 .Join可以分主次表,外联接有三种类型:完全外联,左联,右联。

      完全外联包含两张表的所有记录。

      左联是以左边的表为主,右边的为辅,右联则相反。

      4.一般要使得数据库查询语句性能好点遵循一下原则:

      在做表与表的连接查询时,大表在前,小表在后。

      不使用表别名,通过字段前缀区分不同表中的字段。

      查询条件中的限制条件要写在表连接条件前。

      尽量使用索引的字段做为查询条件。

      在 SQL-92 标准中,内联接可在 FROM 或 WHERE 子句中指定。这是 WHERE 子句中唯一一种 SQL-92 支持的联接类型。WHERE 子句中指定的内联接称为旧式内联接。
    下面的 Transact-SQL 查询是内联接的一个示例:

      USE pubs
      SELECT *
      FROM authors AS a INNER JOIN publishers AS p
      ON a.city = p.city
      ORDER BY a.au_lname DESC

      此内联接称为相等联接。它返回两个表中的所有列,但只返回在联接列中具有相等值的行。

      下面是结果集:

      au_id       au_lname au_fname  phone             address        city
      ----------- -------- -------- ------------     --------------- --------
      238-95-7766 Carson Cheryl     415 548-7723 589    Darwin Ln.    Berkeley
      409-56-7008 Bennet Abraham    415 658-9932 6223   Bateman St.   Berkeley
      state  zip   contract pub_id     pub_name          city    state country
      ----- ----- -------- ------ --------------------- -------- ----- -------
      CA    94705    1      1389   Algodata Infosystems Berkeley  CA    USA
      CA    94705    1      1389   Algodata Infosystems Berkeley  CA    USA
      (2 row(s) affected)

      在结果集中,city 列出现两次。由于重复相同的信息没有意义,因此可以通过更改选择列表消除两个相同列中的一个。其结果称为自然联接。可以重新表述前面的 Transact-SQL 查询以形成自然联接。例如:

      USE pubs
      SELECT p.pub_id, p.pub_name, p.state, a.*
      FROM publishers p INNER JOIN authors a
      ON p.city = a.city
      ORDER BY a.au_lname ASC, a.au_fname ASC

      下面是结果集:

      pub_id   pub_name            state    au_id       au_lname au_fname
      ------ ---------------      -------- -----------  -------- --------
        1389    Algodata Infosystems  CA     409-56-7008   Bennet  Abraham
      1389    Algodata Infosystems  CA      238-95-7766  Carson  Cheryl
      phone               address       city     state  zip  contract
      ---------------    ------------- --------  ----- ----- ---------
      415 658-9932 6223   Bateman St.  Berkeley   CA    94705  1
      415 548-7723 589    Darwin Ln.   Berkeley   CA    94705  1
      (2 row(s) affected)

      本示例中,publishers.city 没有出现在结果中。
    使用等号以外的运算符的联接

      也可以联接两个不相等的列中的值。用于内联接的运算符和谓词同样也可用于不相等联接。有关联接中可用的运算符和谓词的更多信息,请参见在表达式中使用运算符和 WHERE。

      下面的 Transact-SQL 示例是一个大于 (>) 联接,可用于查找住在 Massachusetts 之后(按字母顺序排列)的州的 New Moon 作家,Massachusetts 是 New Moon Books 的所在地。

      USE pubs
      SELECT p.pub_name, p.state, a.au_lname, a.au_fname, a.state
      FROM publishers p INNER JOIN authors a
      ON a.state > p.state
      WHERE p.pub_name = 'New Moon Books'
      ORDER BY au_lname ASC, au_fname ASC

      下面是结果集:

      pub_name            state    au_lname              au_fname          state
      ----------------   ------- -------------------- -------------------- -----
      New Moon Books       MA    Blotchet-Halls           Reginald           OR
      New Moon Books       MA    del Castillo             Innes              MI
      New Moon Books       MA    Greene                   Morningstar        TN
      New Moon Books       MA    Panteley                 Sylvia             MD
      New Moon Books       MA    Ringer                   Albert             UT
      New Moon Books       MA    Ringer                   Anne               UT
      (6 row(s) affected)

      使用不等运算符的联接

      很少使用不等联接 (< >)。通常不等联接只有与自联接同时使用才有意义。例如,可以使用下面的不等 Transact-SQL 联接和自联接查找包含不同价格的两本或多本廉价(低于 $15)书的类别:

      USE pubs
      SELECT DISTINCT t1.type, t1.price
      FROM titles t1 INNER JOIN titles t2
      ON t1.type = t2.type
      AND t1.price <> t2.price
      WHERE t1.price < $15 AND t2.price < $15

      说明 表达式 NOT column_name = column_name 与表达式 column_name < > column_name 等效。
    下面的 Transact-SQL 示例中,使用不等联接和自联接的组合查找 titleauthor 表中的所有行,在该表中有两行或多行具有相同的 title_id 但 au_id 号不同(即一本书有多个作者):

      USE pubs
      SELECT DISTINCT t1.au_id, t1.title_id
      FROM titleauthor t1 INNER JOIN titleauthor t2
      ON t1.title_id = t2.title_id
      WHERE t1.au_id <> t2.au_id
      ORDER BY t1.au_id

      下面是结果集:

      au_id       title_id
      ----------- --------
      213-46-8915 BU1032
      267-41-2394 BU1111
      267-41-2394 TC7777
      409-56-7008 BU1032
      427-17-2319 PC8888
      472-27-2349 TC7777
      672-71-3249 TC7777
      722-51-5454 MC3021
      724-80-9391 BU1111
      724-80-9391 PS1372
      756-30-7391 PS1372
      846-92-7186 PC8888
      899-46-2035 MC3021
      899-46-2035 PS2091
      998-72-3567 PS2091
    展开全文
  • 分享关于mysql中的where和having子句的区别,本文主要分享对象为刚刚接触sql的新人,下面将结合实际案例分析: 下面以一个例子来具体的讲解: 1. where和having都可以使用的场景 1)select addtime,name from dw_...
  • SQL的WHERE和HAVING比较

    千次阅读 2017-03-23 22:40:52
    最核心的区别WHERE是针对表的(原始)数据行做筛选,而HAVING是对结果集做筛选。 通过以下两点说明。 1. 执行效率对比 SELECT ownerUserId, sum(amount) FROM PayOrder WHERE ownerUserId =7744 GROUP BY ...
  • mysql中join连接后的条件筛选使用where和and的区别 1. join inner join 在 join inner join 中where和and的查询结果相同,都是取连接后的结果再进行条件筛选 select m.menu_id,m.sort_id,s.sort_id,s.sort_...
  • having子句与where有相似之处但也有区别,都是设定条件的语句。在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
  • SQL中where, group by, having的用法和区别

    万次阅读 2017-02-08 23:07:30
    group by,where,having 是数据库查询中最常用的几个关键字。在工作中,时常用到,那么,当一个查询中使用了where ,group by ,having及聚集函数时 ,执行顺序是怎么样的?为了回答这个问题,将这个三个关键字的用法...
  • select * from student s left join class c on s.classId=c.id order by s.id 查询结果如下: 下面在ON 条件中拼接一个条件:s.name="张三" select * from student s left join class c on s.classId=c.id and s....
  • Linux中which,whereis,locatefind的区别

    千次阅读 2015-09-06 11:42:35
    Linux中which,whereis,locatefind的区别linux中对文件进行查找主要使用的就是标题中的四个命令,为什么会提供四个命令,当然是因为他们彼此功能上存在差异,下面就简单介绍一下这四个命令的特点.whichwhich returns ...
  • Clickhouse WHERE PREWHERE 子句

    千次阅读 2020-07-09 09:34:28
    参考: https://clickhouse.tech/docs/en/sql-reference/statements/select/prewhere/ https://clickhouse.tech/docs/en/sql-reference/statements/select/where/
  • GROUP BY,WHERE,HAVING间的区别和用法

    千次阅读 2014-01-02 15:24:38
    having子句与where都是过滤语句。 where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。 having 子句的作用是筛选...
  • 我们经常会使用到left join左连接进行多表连接查询,使用的时候,根据条件的筛选,我们有的时候是将筛选条件放在on后面用and连起来,有时候是将筛选条件写在where的过滤中,那么这两种方式的写法有什么区别吗?...
  • linux系统中 查找 find 和where whereis <程序名称> 查找软件的安装路径 -b 只查找二进制文件 -m 只查找帮助文件 -s 只查找源代码 -u 排除指定类型文件 -f 只显示文件名 -B <目录> 在指定目录下...
  • whereis 命令用来定位指令的二进制程序、源代码文件 man 手册页等相关文件的路径。 find 相比,whereis 查找的速度非常快,这是因为 Linux 会将系统内的所有文件都记录在一个数据库文件中。当使用 whereis ...
  • oracle中full join中on和where区别

    万次阅读 2013-11-07 17:06:57
    Oracle的full join中on和where区别  看两张表: SELECT * FROM tmp_trmnl_flag ; 此张表中有100条记录,bcd_code字段全部为空。 SELECT * FROM TD_SETT_BCD_PROD_TMP ; 此张表里面记录很多...
  • 5 select语句3.2 where子句(条件子句)1、where的作用,是对表中行数据进行限制,符合where条件数据就被选中,不符合where... select id,salary from s_emp where 1=1;  select id,salary from s_emp where 1=2;2
  • CVPR2011年有一篇文章Wheres Waldo Matching People in Images of Crowds效果如下: 总结如下: 1. 看论文的题目就很奇怪,Where’s Waldo:Matching People in Images of Crowds,其中Where's waldo 是一个很...
  • GROUP BY,WHERE,HAVING之间的区别和用法

    千次阅读 2012-11-27 22:31:48
    having子句与where有相似之处但也有区别,都是设定条件的语句。 在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。...
  • sql join 与where区别

    千次阅读 2016-03-18 14:23:17
    今天在分析一个sql语句的时候 发现 left join 与where a=b(+) 产生的执行计划不一样 而且效率也是不一样的 到底怎么回事 我在网上找了篇文章分享  (1.)select语句的执行顺序 Processing Order of the SELECT s
  • mysql中 WHERE GROUP BY 的联合使用

    千次阅读 2019-09-17 18:28:45
    where group by联合使用...select 列a,聚合函数 from 表名 where 过滤条件 group by 列a having 过滤条件group by 字句也和where条件语句结合在一起使用。当结合在一起时,where在前,group by 在后。即先对select x...
  • sql on和where条件的使用

    千次阅读 2019-06-05 08:23:59
    sql on和where条件的使用
  • 在使用left join的过程中,总是遇到一个问题,就是将条件放在on中还是... 在用left join中,on和where条件的区别如下: (1)on条件是在生成中间表时使用的条件,它不管on中的条件是否为真,都会返回左表中的记录。...
  • https://blog.csdn.net/ethan_10/article/details/80536088 ... having子句与where有相似之处但也有区别,都是设定条件的语句。 在查询过程中聚合语句(sum,min,max,avg,count)要比having子句...
  • MySQL查找语句WHERE和LIKE模糊查询

    千次阅读 2020-04-07 16:57:16
    基本比较符号 跟Java比较符号 =、!=、<>(不等于)、<、<=、>、>=; BETTWEN…AND;表示范围 IN(set);...(为空) IS NOT NULL(不为空)(=NULL不能用来判断是否为空);...条件查询–where ...s...
  • Where子句

    千次阅读 2017-04-22 10:20:24
    Where子句 1、查询emp表中20号部门的员工信息 select * from emp where deptno = 20;   2、查询姓名是SMITH的员工,字符串使用'',内容大小写敏感 select * from emp where ename = 'SMITH';     3、查询...
  • whereis命令用法举例

    千次阅读 2018-09-10 10:15:57
    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)源代码文件(参数-s)。如果省略参数,则返回所有信息。 find相比,whereis查找的速度非常快,这是因为linux系统会将 系统...
  • [C#]Lambda表达式和Where语法

    万次阅读 2014-05-23 01:14:34
    之前一直以为C#中Lambda表达式和Where语法很神圣,看人家写出一串这样的代码出来都感觉好高深,其实只是不敢接触而已,然后今晚看了一下,其实仔细理解一下也很简单!看例子:[code]csharpcode:01usingSystem;02...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 957,388
精华内容 382,955
关键字:

where和where’s的区别