首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【SQL】作为前端,应该了解的SQL知识(第一弹)

---- DBMS分类 层次数据库(HDB) 将数据通过层次结构(树状结构)表示出来 关系数据库(RDB) 采用行和列组成的二维表格存储数据,用SQL对数据进行操作 常见的RDB:Oracle...、SQL Server、DB2、PostgreSQL、MySQL 面向对象数据库(OODB) 保存对象的数据库 XML数据库(XMLDB) 对XML形式的数据进行处理 键值存储数据库...不能用来比较NULL 两边都是字符串,则按 ANSI码来比较。...相等则为1 不相等为0 安全等于运算符 可以比较null 相等则为1 不相等为0 不等于 不能用来比较NULL 判空 IS NULL、 IS NOT NULL 逻辑运算符 AND:与 OR...() 可以提高优先级 真值 众所周知,真值有true和false两种,但是在SQL中还有一种UNKNOWN的情况。前者是二值逻辑,后者是三值逻辑。 在值为NULL时,真值为UNKNOWN

89920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    码处高效:覆盖 equals() 时切记要覆盖 hashCode()

    如果两个对象根据 equals 方法比较出来是相等的,那么调用这两个对象的 hashCode 方法都必须产生同样的整数结果 如果两个对象根据 equals 方法比较是不相等的,那么调用这两个对象的...所以自然两个实例不相等,因为 HashMap 有一项优化,可以将与每个项相关联的散列码缓存起来,如果散列码不匹配,也就不再去检验对象的等同性。...它使得本该以线性时间运行的程序变成了以平方级的时间运行。 一个好的散列通常是 "为不相等的对象产生不相等的散列码"。这正是 hashCode 约定中的第三条含义。...,并且该类的 equals 方法通过递归地调用 equals 的方式来比较这个域,则同样为这个域递归地调用 hashCode 。...如果为null ,则返回0 3)如果该域是一个数组,则要把每一个元素当作单独的域来处理。

    67820

    【汇编语言】标志寄存器(三) —— 条件跳转,精准决策:汇编语言的比较与转移

    1.2 两类条件转移指令 因为cmp指令可以同时进行两种比较,无符号数比较和有符号数比较,所以根据cmp指令的比较结果进行转移的指令也分为两种,即: 根据无符号数的比较结果进行转移的条件转移指令(它们检测...根据无符号比较的条件转移指令 下面是常用的根据无符号数的比较结果进行转移的条件转移指令。 2.1 如何记忆?...比如je,检测 ZF位,当 ZF=1的时候进行转移,如果在 je 前面使用了 cmp 指令,那么je对ZF的检测,实际上就是间接地检测cmp的比较结果是否为两数相等。...上面的程序执行时,如果(ah)=(bh),则 cmp ah,bh 使 zf=1,而 je 检测 zf是否为 1,如果为1,将转移到标号s处执行指令add ah,ah。...因为此处的je指令检测到的zf=1,不是由cmp等比较指令设置的,而是由add指令设置的,并不具有“两数相等”的含义。

    15210

    【微机原理】指令JZ和JNZ的区别

    JZ(Jump if Zero)和 JNZ(Jump if Not Zero)是两个条件跳转指令,它们根据标志寄存器中的 零标志位(Zero Flag,ZF)的状态来决定程序的跳转行为。...两者的区别在于跳转的条件相反。 1. JZ(Jump if Zero) 功能: 当 零标志位(ZF) 被设置为1时,JZ 指令执行跳转。 使用场景: 主要用于检查某个操作的结果是否为零。...= BX,ZF 被清零,跳转到 target 标签 在上面的例子中,如果 AX 和 BX 不相等,CMP 指令会将 ZF 设置为 0,JNZ 指令将跳转到 target 标签。...50加载到CX REPE CMPSB ; 如果相等且ZF=1,继续比较,直到CX=0或发现不相等 JZ LP1 ; 如果ZF=1,则跳转到标签LP1,表示所有字节都相等...DEC SI ; 如果不相等,将SI指针减1,指向第一个不相等的字节 MOV BX, SI ; 将第一个不相等字节的地址存入BX MOV AL, [SI]

    59010

    第9条 覆盖equals时总要覆盖hashCode

    如果两个对象根据equals方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode方法都必须产生同样的整数结果....(即equals相等,那么hashCode一定相等,需要注意的是,反过来不一定成立,即hashCode相等不代表equals相等) 如果两个对象根据equals方法比较是不相等的,那么调用这两个对象中任意一个对象的...如果需要更复杂的比较,则为这个域计算一个‘范式’,然后针对这个范式调用hashCode。如果这个域的值为null,则返回0(或者其他某个常数,但通常是0)。...如果是个数组,则需要把每个元素当做单独的域来处理。也就是说,递归地应用上述规则,对每个重要的元素计算一个散列码,然后根据步骤b中的做法把这些散列值组合起来。...步骤(a) 为该域计算int类型的散列码c: 返回result 测试,是否符合『相等的实例是否都具有相等的散列码』 OK,知道怎么写之后,我们重写Student类的hashCode方法: @Override

    1.1K20

    【重学 MySQL】十七、比较运算符的使用

    这些运算符非常基础且重要,因为它们允许你根据特定条件过滤数据。 等于(=) 在MySQL中,等号运算符(=)用于比较两个值是否相等。如果两边的值相等,则表达式的结果为TRUE;否则,结果为FALSE。...=) 在MySQL中,不等于运算符有两个主要的形式: 和 !=。这两个运算符在功能上是完全相同的,都可以用来比较两个值是否不相等。...如果两边的值不相等,则表达式的结果为TRUE;否则,结果为FALSE。...这些运算符允许你根据列的值筛选出满足特定条件的记录。 大于(>) 大于运算符(>)用于比较两个值,以确定左边的值是否大于右边的值。...这些比较运算符是SQL查询的基础,它们允许你根据几乎任何条件来筛选数据。在编写查询时,理解并熟练使用这些运算符非常重要。

    20010

    解读 Optimizing Queries Using Materialized Views:A Practical, Scalable Solution

    改写算法 T_v介绍如何判断计划子树能否基于物化视图计算得到,如果为真,则说明如何通过视图构建对应的等价计划子树。...例如,发现 在集合 中, 在集合 中,两个集合不相等,则合并集合为 。...例如 视图等价谓词为 ,查询等价谓词为 ,两者谓词条件不相等,但逻辑上是等价的 ,对应的列等价类相等。...一个表达式可由一个文本字符串和一个列引用列表表示,为比较两个表达式,首先比较字符串,若字符串相同,则遍历比较列引用,如果所有列引用匹配,则表达式匹配。...搜索条件为是否属于同一类型,即如果一个键是给定搜索键的子集(超集)或与之相等,则该键符合条件,其中搜索键也是一个集合。

    15742

    【SQL】作为前端,应该了解的SQL知识(第二弹)

    select -12 % -5 from dual -- -2 select 12 % -5 from dual -- 2 比较运算符 等号运算符 = 判断两个值,字符串和表达式是否相等。...不能用来比较NULL 两边都是字符串,则按 ANSI码来比较。...相等则为1 不相等为0 安全等于运算符 可以比较null 相等则为1 不相等为0 不等于 不能用来比较NULL 判空 IS NULL、 IS NOT NULL 逻辑运算符 AND:与 OR...() 可以提高优先级 真值 众所周知,真值有true和false两种,但是在SQL中还有一种UNKNOWN的情况。前者是二值逻辑,后者是三值逻辑。...在值为NULL时,真值为UNKNOWN ⚙️聚合 用于汇总的函数称为聚合函数或聚集函数。聚合,就是将多行混为一行。

    17820

    面向面试编程连载(一)

    是的,先看他是否内存相等,如果不相等 5.请问我使用Integer定义两个数字,它们值都等于100,使用 == 和equals方式分别比较它们是否相等?...如果我把值都改成200呢,结果会发生什么改变? 在内存中的缓存值是相等的。优先比较内存,200超过127的大小范围==是不相等的 7.我如何验证上述结果原因?...如果是,则可以建立复合索引;否则考虑单字段索引; C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引; D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段...(数据结构B树和B+树) 首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。...自动化注解方式和selector接口编程的方式这两种比较各有什么特点?我们如何选择? 可以各举个spring中实际实现的例子吗? 关于Java的Selector,其实也没什么好说的。

    84050

    效率编程 之「对于所有对象都通用的方法」

    如果是,则返回ture。这只不过是一种性能优化,如果比较操作有可能很昂贵,就值得这么做。 使用instanceof操作符检查“参数是否为正确的类型”。如果不是,则返回false。...为了获得最佳的性能,应该最先比较最有可能不一致的域,或者是开销最低的域,最理想的情况是两个条件同时满足的域。...出现这样现象的原因就是,我们没有覆盖hashCode方法,以至于两个相等的实例具有不相等的散列码。修正这个问题非常简单,只需为PhoneNumber类提供一个合适的hashCode方法即可。...对于规模很大的散列表而言,这会关系到散列表能否正常工作。一个好的散列函数通常倾向于“为不相等的对象产生不相等的散列码”。理想情况下,散列函数应该把集合中不相等的实例均匀地分布到所有可能的散列值上。...4、写完了hashCode方法之后,问问自己“相等的实例是否都具有相等的散列码”。要编写单元测试来验证我们的推断。如果相等的实例有着不相等的散列码,则要找出原因,并修正错误。

    41930

    Effective Java(二)

    一致性(Consistency) equals约定的第四个要求是,如果两个对象相等,它们就必须始终保持相等,除非它们中有一个对象(或者两个都)被修改了。...高质量 equals 方法的诀窍 使用 == 操作符检查“参数是否为这个对象的引用”。如果是,则返回 true。这只不过是一种性能优化,如果比较操作有可能很昂贵,就值得这么做。...如果两个对象根据 equals(Object) 方法比较是相等的,那么调用这两个对象中的 hashCode 方法都必须产生同样的整数结果。...如果两个对象根据 equals(Object) 方法比较是不相等的,那么调用这两个对象中的 hashCode 方法,则不一定要求 hashCode 方法必须产生不同的结果。...因没有覆盖 hashCode 而违反的关键约定是第二条:相等的对象必须具有相等的散列码(hash code)。 一个好的散列函数通常倾向于“为不相等的对象产生不相等的散列码”。

    45620

    Effective-java-读书笔记之对于所有对象都通用的方法

    symmetric): 任何两个对象关于它们是否相等的结果保持一致.* 传递性(transitive): 如果一个对象等于第二个对象, 第二个对象等于第三个对象, 则第一个对象一定等于第三个对象.* 一致性...(consistent): 如果两个对象相等, 它们就必须始终保持相等, 除非它们被修改了.* 非空性(non-nullity): 所有的对象都必须不等于null.实现高质量equals方法的诀窍:*...使用==操作符检查参数是否为这个对象的引用, 如果是, 则返回true.* 使用instanceof操作符检查参数是否为正确的类型, 如果不是, 则返回false.* 把参数转换成正确的类型.* 对于该类中的每个关键域...(在应用程序多次执行的过程中, 每次执行所返回的整数可以不一致.)* 如果两个对象根据equals比较相等, 那么hashCode结果应该相同.* 如果两个对象根据equals比较不相等, 则hashCode...一个好的散列函数通常倾向于为不相等的对象产生不相等的散列码.)Hashcode的计算:* 初始值result = 17 (非零常数值, 这样散列值为0的域就会影响到结果).* 对于对象中equals涉及的每个域

    46600

    SQL Server使用缺失索引建议优化非聚集索引

    第二个缺失索引表明查询可能使用 Person.Person 表上的索引,该索引支持对 FirstName 列进行不相等搜索。...同样,存储在计划缓存中的执行计划也会因实例重启、故障转移和将数据库设置为脱机等事件而清除。 由于内存压力和重新编译,可能会从缓存中删除执行计划。...如果已为表实施了聚集索引,则 index_description 将包含“聚集”一词。...如果不存在聚集索引,则该表为堆。 在这种情况下,请检查表是否有意创建为堆以解决特定的性能问题。 大多数表都可从聚集索引中受益:通常,表是意外被实现为堆的。 考虑根据聚集索引设计指南实现聚集索引。...但是,如果我们在 StateProvinceID 上的现有索引被大量使用,并且其他请求主要在 StateProvinceID 和 City 上进行搜索,则对于数据库而言,具有在键中同时包含这两个列的单个索引所产生的开销较低

    24010

    equals 和 hashCode 到底有什么联系?一文告诉你!

    2)如果对象在equals()中使用的信息都没有改变,那么hashCode()值始终不变。 3)如果两个对象使用equals()方法判断为相等,则hashCode()方法也应该相等。...4)如果两个对象使用equals()方法判断为不相等,则不要求hashCode()也必须不相等;但是开发人员应该认识到,不相等的对象产生不相同的hashCode可以提高哈希表的性能。...如果该位置没有对象,可以直接将object插入该位置;如果该位置有对象(可能有多个,通过链表实现),则调用equals()方法比较这些对象与object是否相等,如果相等,则不需要保存object;如果不相等...如果两个对象equals()相等,则它们在哈希表(如HashSet、HashMap等)中只应该出现一次;如果hashCode()不相等,那么它们会被散列到哈希表的不同位置,哈希表中出现了不止一次。...1 重写hashcode()的原则 通过前面的描述我们知道,重写hashCode需要遵守以下原则: 1)如果重写了equals()方法,检查条件“两个对象使用equals()方法判断为相等,则hashCode

    67130

    ​第3章 对于所有对象都通用的方法

    : 逻辑相等,就是逻辑上是相等的,比如id一样,判定它们相等,即使它们是两个不同的对象 什么时候应该覆盖equals 当类需要逻辑相等这个概念的时候就应该覆盖equals 比如要判断两个student是否是同一个人...如果两个对象根据equals方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode方法都必须产生同样的整数结果....(即equals相等,那么hashCode一定相等,需要注意的是,反过来不一定成立,即hashCode相等不代表equals相等) 如果两个对象根据equals方法比较是不相等的,那么调用这两个对象中任意一个对象的...如果需要更复杂的比较,则为这个域计算一个‘范式’,然后针对这个范式调用hashCode。如果这个域的值为null,则返回0(或者其他某个常数,但通常是0)。...如果是个数组,则需要把每个元素当做单独的域来处理。也就是说,递归地应用上述规则,对每个重要的元素计算一个散列码,然后根据步骤b中的做法把这些散列值组合起来。

    52320

    记一次字符串末尾空白丢失的排查 → MySQL 是会玩的!

    也就是相等 MySQL 8.0.27 如下   0 表示 FALSE ,表示不相等   这是什么原因,我们继续往下看 字符集与字符序   比较肯定就需要比较规则, SQL 的比较规则就离不开字符序,...COLLATION; 可以查看全部的字符序;也可以带条件查具体某个字符集的字符序 Default 等于 Yes 表示是默认字符序   每个字符集都有默认的字符序   server的字符集与字符序...,粒度越细的优先级越高( column > table > database > server )   如果细粒度未指定字符集、字符序,那么会继承上一级的字符集,字符序则是上一级字符集的默认字符序   ...,会根据列的字符序来比较和排序     2、所有 MySQL 排序规则的类型都是 PAD SPACE 。...,会根据列的字符序来比较和排序     2、 MySQL 字符序的 pad 参数的可选值,除了 PAD SPACE ,还增加了 NO PAD     3、对于非二进制字符串( CHAR 、 VARCHAR

    23720

    详解equals()方法和hashCode()方法

    (2)如果对象在equals()中使用的信息都没有改变,那么hashCode()值始终不变。 (3)如果两个对象使用equals()方法判断为相等,则hashCode()方法也应该相等。...(4)如果两个对象使用equals()方法判断为不相等,则不要求hashCode()也必须不相等;但是开发人员应该认识到,不相等的对象产生不相同的hashCode可以提高哈希表的性能。...如果该位置没有对象,可以直接将object插入该位置;如果该位置有对象(可能有多个,通过链表实现),则调用equals()方法比较这些对象与object是否相等,如果相等,则不需要保存object;如果不相等...如果两个对象equals()相等,则它们在哈希表(如HashSet、HashMap等)中只应该出现一次;如果hashCode()不相等,那么它们会被散列到哈希表的不同位置,哈希表中出现了不止一次。...1、重写hashcode()的原则 通过前面的描述我们知道,重写hashCode需要遵守以下原则: (1)如果重写了equals()方法,检查条件“两个对象使用equals()方法判断为相等,则hashCode

    72841
    领券