首页
学习
活动
专区
工具
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

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

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

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

65020

第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

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 ⚙️聚合 用于汇总函数称为聚合函数或聚集函数。聚合,就是多行混为一行。

15820

面向面试编程连载(一)

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

81750

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

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

40230

Effective Java(二)

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

44220

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

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

43900

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

65230

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

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

11810

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

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

50220

记一次字符串末尾空白丢失排查 → 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

14020

详解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

70341

你可能不知道字符比较“秘密”

Figure-2: 在Chinese_PRC_CI_AS排序规则下比较SQL_Latin1_General_CP1_CI_AS或是Chinese_PRC_CI_AS不同排序规则下,这个字符竟然是相等...Windows NLS团队已经决定,未定义字符进行比较时将被忽略,部分原因是没有一个好办法未定义字符和其他已经定义字符进行比较SQL Server继承了这一语义。...同理,如果你创建一张未定义字符表名表,然后尝试创建另一个未定义字符表名表,第二张表会因为表名重复而创建失败,即使这个未定义字符代码点是不同。...原因就是:跟未进行定义字符作比较时,SQL Server视为相等如果实际应用中要视为常规字符,转为二进制比较即可。因为二进制比较就单纯按照字符代码点比较了。...所以解决最开始问题不难,如下: ? Figure-3: 在Latin1_General_BIN排序规则下比较 不难推导出,在二进制排序规则下数据库中,默认下,这个字符是不相等。 ?

1K70

在根类Object中,实现了equals()和hashCode()这个方法

个obj,如果equals()相等,hashCode()一定相等个obj,如果hashCode()相等,equals()不一定相等(Hash散值有冲突情况,虽然概率很低)。   ...在集合中,判断个对象是否相等规则是: 第一步,如果hashCode()相等查看第二步,否则不相等; 第二步,查看equals()是否相等如果相等obj相等,否则还是不相等。...因为Objectequals()方法默认是个对象引用比较,意思就是指向同一内存相等,否则不相等如果你现在需要利用对象里面的值来判断是否相等重载equals()方法。...根据一个类equals方法,个截然不同实例有可能在逻辑上是相等,但是,根据Object类hashCode方法,它们仅仅是个对象,对象hashCode方法返回个看起来是随机整数,而不是根据第二个约定要求那样...比如new一个对象,再new一个内容相等对象,调用equals方法返回true,但他们hashCode值不同,个对象存入HashSet中,hashCode值不同,都可以存进去,这样set中包含相等对象

54600

详解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

42320
领券