p=1483 具体各位可以参考这两篇博文,简单总结一下,11.2.0.3的库, 1.使用where type is null和is not null得到的记录结果判断值为非空。...原因就是11g新特性,新增一个有默认值的NOT NULL约束的字段,默认值不会像以前一样,插入每条记录中,而是会存储于一张数据字典表sys.ecol$,Oracle允许NOT NULL列默认值为NULL...这种新增非空约束字段在不同版本中确实有一些细节的变化,下面做一些简单测试。...table bisal add name varchar2(10) default '' not null; 10.2.0.3库,从报错信息看ORA-01407,不能更新NAME列为空,可以看出此时是要将表中已存在记录的新列...NULL约束字段,但报错信息变了,ORA-01758: table must be empty to add mandatory (NOT NULL) column,这个错误号在之前的版本有定义,不是新号
一、当单层查询发生别名与表字段重名冲突时,不同数据库在where中的处理行为是怎样的呢?...二、当嵌套查询发生别名与表字段重名冲突时,不同数据库在where中的处理行为是怎样的呢? 详见后文。...PG 在 WHERE 子句中使用表字段而非别名 在测试用例基础上,设计的测试用例与预期行为如下: 测试场景三(嵌套查询——含子查询别名): SELECT * FROM (SELECT a.client_id...结论 嵌套查询: 说明在嵌套查询中子查询有或没有别名,在内层查询的别名和表字段发生重名冲突时,内层 where 中使用的是表字段而非别名;外层 where 中使用的是子查询中的表字段。...说明在嵌套查询中子查询无别名,PG报错,但对于高斯数据库: 在嵌套查询中子查询有别名,在内层查询的别名和表字段发生重名冲突时,内层 where 中使用的是表字段而非别名;外层 where 中使用的是子查询结果中的表字段
前言 想要在同一设备上运行多个不同的操作系统和应用程序,实现更高效的资源利用吗?...通过本文,您可以轻松掌握在群晖NAS上安装虚拟机的方法,以及使用Virtual Machine Manager进行虚拟机管理和网络设置的技巧。...在VMM中,单击左侧导航栏中的“网络”选项卡,然后单击“创建”。在弹出窗口中,输入名称和描述,选择适当的IP地址和子网掩码,然后单击“应用”。 步骤4:创建虚拟机 在VMM中创建虚拟机非常简单。...单击左侧导航栏中的“虚拟机”选项卡,在列表中选择您刚才创建的虚拟机,然后单击右键并选择“编辑”。 在弹出窗口中,单击“网络”选项卡,并选择您刚才创建的虚拟交换机。...总结 通过以上步骤,您可以在群晖NAS上成功安装和运行虚拟机,使您的资源利用更加高效。当然,由于每个人的需求都不同,所以具体的虚拟机配置和设置可能会有所不同。
在springboot进行事务测试的时候,发现事务没有生效,在方法上添加了@Transactional注解并让方法先执行插入操作,接着再抛出个异常,触发事务回滚,代码如下: @Transactional...查看MySQL数据表的引擎类型 通过show create table TABLE_NAME命令查看MySQL中数据表对应的引擎类型,查询结果如下所示: Table Create Table TestTable...在SpringBoot的application.properties配置文件中,加入如下一行配置即可: spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect...如果执行大量的SELECT,MyISAM是更好的选择。 InnoDB:这种类型是事务安全的。它与BDB类型具有相同的特性,它们还支持外键。InnoDB表格速度很快。...只有在executeSave方法执行完成跳出此方法之后,即执行到调用逻辑中return ""语句的时候,数据库中才能查询到记录。
检测系统中是否还存在nodejs,在小黑窗输入 node -v 。...下载NVM 下载地址:Releases · coreybutler/nvm-windows · GitHub 安装NVM (1)查了一下说最好不要装C盘,主打一个听劝,在D盘新建文件夹。...(2)将下载好的安装包放入nvm文件夹中,解压,进行安装。 确认是否安装成功 在小黑窗输入 nvm 。...四、node 的不同版本安装及切换 使用 nvm install 命令安装指定版本的NodeJS 先别装!都先给我去配淘宝镜像!看问题部分! 问题:下载界面不动了?...五、开始使用 检查是否真的安装了nodejs 装成功后在 NVM 安装目录下出现一个 所安装版本的文件夹,这时可以尝试在小黑窗使用 nvm list 命令查看已安装 NodeJS 列表。
小技巧:通过 New-Ailas 指令在 Powershell 上启动多个不同版本的应用程序 如果你像我一样,电脑上安装有多个 Java 的话,你肯定会遇到这样的烦恼:当我们试图在命令行中调用其他非...classpath 上的 java.exe 时,需要费尽心思找到这些 Java 的路径,以全路径执行,这十分费时费力。...但是如果你正在使用 Powershell 的话,现在这些问题就可以得到解决了,解决的方法就是 New-Ailas 指令 New-Ailas 指令的完整用法如下: New-Alias [-Name]...[-PassThru] [-Scope ] [-Force] [-WhatIf] [-Confirm] [] 你可以在...New-Alias (Microsoft.PowerShell.Utility) – PowerShell | Microsoft Docs 找到详细的信息 但是事实上,我们不需要他的完整功能,而是只需要使用其
最近忙成狗了,很少挤出时间来学习,大部分时间都在加班测需求,今天在测一个需求的时候,需要对比数据同步后的数据是否正确,因此需要用到json对比差异,这里使用deepdiff。...一般是用deepdiff进行对比的时候,常见的对比是对比单个的json对象,这个时候如果某个字段的结果有差异时,可以使用exclude_paths选项去指定要忽略的字段内容,可以看下面的案例进行学习:...上面的代码是一般单条数据对比的情况。...那么如果数据量比较大的话,单条对比查询数据效率比较低,因此,肯呢个会调用接口进行批量查询,然后将数据转成[{},{},{}]的列表形式去进行对比,那么这个时候再使用exclude_paths就无法直接简单的排除某个字段了...从上图可以看出,此时对比列表元素的话,除非自己一个个去指定要排除哪个索引下的字段,不过这样当列表的数据比较多的时候,这样写起来就很不方便,代码可读性也很差,之前找到过一个用法,后来好久没用,有点忘了,今晚又去翻以前写过的代码记录
3.事务的特性: A:原子性 事务是最小的工作单元,不可再分 C:一致性 同一事务当中,所有操作必须同时成功,或者同时失败,保证数据的一致性 I:隔离性 多个事务之间具有一定的隔离。...Mysql的索引(Mysql数据库优化的重要手段) 1.索引的介绍:在数据库表的字段上添加的,为了提高查询效率存在的一种机制。一张表的一个字段可以添加一个索引,多个字段也可以添加为一个索引。...2.索引的实现原理:在任何数据库中,主键和添加unique约束的字段都会被自动添加索引。索引是一个单独的对象,不同的存储引擎以不同的形式存在。在MyISAM存储引擎中,索引存储在一个.MYI文件中。...(4)在where条件中,索引列字段参加了运算,索引失效。 (5)在where当中索引列使用了函数,索引就会失效。 6.索引的分类: (1)单一索引:一个字段上添加的字段。...(2)符合索引:两个字段或者更多的字段上添加索引。 (3)主键索引:主键上添加索引。 (4)唯一性索引:具有unique约束的字段上添加索引。
SQL进阶-2-自连接 SQL通常在不同的表之间进行连接运算,但是也可以在相同的表中进行运算。macOS中连接数据库: mysql -u root -p -- 后续输入密码 ?...中即便是相同的表,只要是被赋予了不同的名称,都应该被当做不同的表来使用,它们只是碰巧存储了相同数据的两个集合 表的自连接和不同表间的连接没有任何区别 扩展 想要获取3个以上的元素,通过多个表的连续扩展...笔记:根据具有相同值的字段分组,然后只显示大小大于1的组 基于多个字段 有时候会基于多个字段查找重复行 SELECT col1, COUNT(col1), col2, COUNT...join Products P2 where P1.id 中存在自增id and P1.name = P2.name 案例3-局部不一致的列 需求 在同一张表中,可能存在不是很合理的地方...where A1.family_id = A2.family_id -- 同一家人 and A1.address A2.address; -- 住址不同 查找价格相等但是名称不同的商品的记录
( 转 ) mysql复合索引、普通索引总结 对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)....利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。...包含多个列的主键始终会自动以复合索引的形式创建索引,其列的顺序是它们在表定义中出现的顺序,而不是在主键定义中指定的顺序。在考虑将来通过主键执行的搜索,确定哪一列应该排在最前面。...查询优化器在在where查询中的作用: 如果一个多列索引存在于 列 Col1 和 Col2 上,则以下语句:Select * from table where col1=val1 AND col2...在为BLOB和TEXT类型的数据列创建索引时,必须对索引的长度做出限制;MySQL所允许的最大索引全文索引文本字段上的普通索引只能加快对出现在字段内容最前面的字符串(也就是字段内容开头的字符)进行检索操作
表的垂直拆分 把含有多个列的表拆分成多个表,解决表宽度问题,具体包括以下几种拆分手段: 把不常用的字段单独放在同一个表中; 把大字段独立放入一个表中; 把经常使用的字段放在一起; 这样做的好处是非常明显的...需要把数据存放到多个数据库中,提高系统的总体可用性(分库,鸡蛋不能放在同一个篮子里)。...若多个物理记录对应同一个索引,若同时访问,也会出现锁冲突; 当表有多个索引时,不同事务可以用不同的索引锁住不同的行,另外innodb会同时用行锁对数据记录(聚簇索引)加锁。...应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0...,确保表中num列没有null值,然后这样查询:select id from t where num=0 应尽量避免在 where 子句中使用!
: 省略多个表的连接条件(或关联条件) 连接条件(或关联条件)无效 所有表中的所有行互相连接 为了避免笛卡尔积, 可以在 WHERE 加入有效的连接条件。...在不同表中具有相同列名的列可以用 表名 加以区分。...说明 :对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表的别名(或表名),并且操作列在多个表中存在时,就会抛异常。...本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义。...内连接 --外连接(sql92重要) 内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行 #内连接:合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
在MySQL中如下情况会出现笛卡 尔积: #出现了笛卡尔积的错误 #错误的原因:缺少了多表的连接条件 #错误的实现方式:每个员工和每个部门都匹配了一遍 SELECT employee_id,department_name...在不同表中具有相同列名的列可以用 表名 加以区分。...说明 :对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表的别名(或表 名),并且操作列在多个表中存在时,就会抛异常。...本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义。...内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行 外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的 行 ,这种连接称为左(或右
having where 语法上 having用select结果别名 where 用表中列名 结果范围返回客户端的行数 where...,用来指定创建索引;index_name 指定索引的名称,为可选参数,如果不指定,那么MySQL默认col_name为索引名;col_name 为需要创建索引的字段列,该列必须从数据表中定义的多个列中选择...1、字段的数值有唯一性的限制业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。...先看一下字段在全部数据中的选择度:select count(distinct address) / count(*) from shop;通过不同长度去计算,与全表的选择性对比:公式:count(distinct...在索引列上使用mysql的内置函数,索引失效。对索引列运算(如,+、-、*、/),索引失效。索引字段上使用(!= 或者 ,not in)时,可能会导致索引失效。
在表中,一列通常包含许多重复值;有时您只想列出不同的(不同的)值。 SELECT DISTINCT 语法 SELECT DISTINCT column1, column2, ......如果表中的字段是可选的,则可以在不向该字段添加值的情况下插入新记录或更新记录。然后,该字段将保存为 NULL 值。 注意: NULL 值不同于零值或包含空格的字段。...列出了在 “Address”字段中具有值的所有客户: SELECT CustomerName, ContactName, Address FROM Customers WHERE Address IS...SELECT TOP子句在具有数千条记录的大表上很有用。返回大量记录会影响性能。 注意: 并非所有数据库系统都支持该 SELECT TOP子句。...以下是一些示例,显示了LIKE带有“%”和“_”通配符的不同运算符: 所对应意思为: 第一行:匹配任何以a开头的字段 第二行:匹配任何以a结尾的字段 第三行:匹配任何具有“or”的字段
同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。...优缺点 1)所有字段值都是不可分解的原子值。 2)在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。 3)数据表中的每一列数据都和主键直接相关,而不能间接相关。...select * from news where id = 1 or id = 2 3)多个单列索引并不是最佳选择 MySQL 只能使用一个索引,会从多个索引中选择一个限制最为严格的索引,因此,为多个列创建单列索引...单列索引与多列索引 建立索引的使用场景 在最频繁使用的、用以缩小查询范围的字段,需要排序的字段上建立索引。...MySQL 使用重做日志(redo log)实现事务的持久性在数据库中,这两种日志经常都是一起工作的.隔离级别的实现 数据库对于隔离级别的实现就是使用并发控制机制对在同一时间执行的事务进行控制,限制不同的事务对于同一资源的访问和更新
4.2、存储引擎 MySQL 中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供不同的功能和能力。...FROM 表名 [WHERE]; -- SELECT 选择要查询的列 -- FROM 提供数据源 (表、视图或其他的数据源) -- 可以写*表示查询所有列,但是在实际开发中基本上不会使用,性能低,实际开发中是将所有字段列出来...11.4.1.2、不可重复读 在同一个事务中,同一个读操作对同一个数据的前后两次读取产生了不同的结果,这就是不可重复读。...该字段经常出现在where子句中(经常根据哪个字段查询) 注意:主键和具有unique约束的字段会自动添加索引,根据主键查询的效率高,尽量根据主键索引,我们可以查询sql语句的执行计划。...视图是站在不同的角度看到数据,同一张表的数据,通过不同的角度去看待数据。 我们可以对视图进行增删改查,会影响到原表的数据,通过视图来影响原表数据的,并不是直接操作原表。
利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。...索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。...对于多列惟一性索引,保证多个值的组合不重复。 PRIMARY KEY索引和UNIQUE索引非常类似。 事实上,PRIMARY KEY索引仅是一个具有名称PRIMARY的UNIQUE索引。...如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。 如果从表中删除了某列,则索引会受到影响。...2,复合索引 比如有一条语句是这样的:select * from users where area=’beijing’ and age=22; 如果我们是在area和age上分别创建单个索引的话,由于mysql
第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。...如果一个索引通过在多个字段上提取的关键字,称之为复合索引。...分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。 1.分区,partition,分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。...这些子表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。分表技术是比较麻烦的,需要手动去创建子表,app服务端读写时候需要计算子表名。...是MySQL提供一个可以将多个结构相同的myisam表,合并到一起的存储引擎: ? (2)垂直分表 一张表中存在多个字段。
某种特定类型的结构化清单; 相同的数据库中不能两次使用想用的表名; 不同的数据库中可以使用相同的表名; 列和数据类型: 表有列组成,列中存储着表中某部分的信息; 表中的一个字段,所有的表都是由一个或多个列组成的...在优化磁盘使用方面有重要作用; 行: 表中的一个记录; 别称记录,从技术上讲:行才是正确的术语; 主键: 一列或一组列,其值能够唯一区分表中的每一行; 唯一标识表中每行的这个列(或这组列...between关键字匹配的范围中所有的值,包括指定的开始值与结束值; 空值检查: 在一个列中不包含值时,称为包含空值NULL; NULL 无值,它与字段包含0,空字符串或者仅仅包含空格不同; 关键字:is...因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们; 因此,再过滤数据时,一定要验证返回数据中确实给出了被过滤列具有的NULL的行。...第10章:创建计算字段 计算字段相关概念: 计算字段与列不同,计算字段并不实际存在与数据库表中,计算字段是运行时在select语句中创建的; 字段:基本与列的意思相同,经常互换使用,不过数据库列一般称为列
领取专属 10元无门槛券
手把手带您无忧上云