主键和Null看似没有多大的关系,因为一般的主键设置都是not null,但是把两者结合起来,会有很多意想不到的情况,说是意想不到是因
主键和Null看似没有多大的关系,因为一般的主键设置都是not null,但是把两者结合起来,会有很多意想不到的情况,说是意想不到是因为结果不在预期范围,但是如果明白了基本的原理,整个过程又在情理之中。
我们先来演示一下问题。
首先创建一个表,创建唯一性索引。
SQL> conn n1/n1
Connected.
SQL>
SQL> select*from cat;
no rows selected
SQL> create table test(x number,y number);
Table created.
SQL> create unique index ind_test on test(x,y);
Index created.
SQL> insert into test values(1,2);
1 row created.
再次插入重复的数据,这个肯定会抛错是毫无疑问的。
SQL> insert into test values(1,2);
insert into test values(1,2)
*
ERROR at line 1:
ORA-00001: unique constraint (N1.IND_TEST) violated
然后我们开始测试null相关的场景。
SQL> insert into test values(1,null);
1 row created.
SQL> insert into test values(null,1);
1 row created.
插入两个Null值,也是可以的。
SQL> insert into test values(null,null);
1 row created.
再次插入两个null值,还是可以的。
SQL> insert into test values(null,null);
1 row created.
但是反过来再次插入1,null的时候就抛错了。
SQL> insert into test values(1,null);
insert into test values(1,null)
*
ERROR at line 1:
ORA-00001: unique constraint (N1.IND_TEST) violated
同理,null,1的场景也是如此。
SQL> insert into test values(null,1);
insert into test values(null,1)
*
ERROR at line 1:
ORA-00001: unique constraint (N1.IND_TEST) violated
再次插入两个null值。
SQL> insert into test values(null,null);
1 row created.
查看表test中的数据,如下:
SQL> select *from test;
X Y
---------- ----------
1 2
1
1
6 rows selected.
可以看到有6行。null值列看不到任何显示。
为了标识,我们打印出rownum来。
SQL> select rownum,x,y from test;
ROWNUM X Y
---------- ---------- ----------
1 1 2
2 1
3 1
4
5
6
6 rows selected.
测试完了null值相关的,我们来看看空串''的情况。
插入''的时候就会抛错。
SQL> insert into test values(1,'');
insert into test values(1,'')
*
ERROR at line 1:
ORA-00001: unique constraint (N1.IND_TEST) violated
插入两个空串,和null的效果是一样的。
SQL> insert into test values('','');
1 row created.
null和空串组合,也没有问题。
SQL> insert into test values(null,'');
1 row created.
SQL> insert into test values('','');
1 row created.
再次查看数据,null值的数据行明显增多。
SQL> select rownum,x,y from test;
ROWNUM X Y
---------- ---------- ----------
1 1 2
2 1
3 1
4
5
6
7
8
9
9 rows selected.
我们可以再进一步,查看null值的长度,使用length()
SQL> select rownum,x,length(x),y,length(y) from test;
ROWNUM X LENGTH(X) Y LENGTH(Y)
---------- ---------- ---------- ---------- ----------
1 1 1 2 1
2 1 1
3 1 1
4
5
6
7
8
9
9 rows selected.
可以看到null值对应的length没有任何显示。
如果用=来匹配空串,和null的效果一样,匹配不了。
SQL> select *from test where x='';
no rows selected
我们还是来看看dump的信息吧,,对于null列dump的结果就是null
1* select rownum,x,y,dump(x) from test
SQL> /

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于索引优化器工作原理的相关内容,其中包括了MySQL Server的组成,MySQL优化器选择索引额原理以及SQL成本分析,最后通过 select 查询总结整个查询过程,下面一起来看一下,希望对大家有帮助。

数据库系统由4个部分构成:1、数据库,是指长期存储在计算机内的,有组织,可共享的数据的集合;2、硬件,是指构成计算机系统的各种物理设备,包括存储所需的外部设备;3、软件,包括操作系统、数据库管理系统及应用程序;4、人员,包括系统分析员和数据库设计人员、应用程序员(负责编写使用数据库的应用程序)、最终用户(利用接口或查询语言访问数据库)、数据库管理员(负责数据库的总体信息控制)。

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

在JavaScript 中,undefined和null都代表着“无”的概念:1、undefined 表示一个未初始化的变量或一个不存在的属性,当声明了一个变量但没有对其赋值时,这个变量的值就是undefined,访问对象中不存在的属性时,返回的值也是undefined;2、null表示一个空的对象引用,在某些情况下,可以将对象的引用设置为null,以便释放其占用的内存。

数据库的“完整性”是指数据的正确性和相容性。完整性是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。完整性对于数据库系统的重要性:1、数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据;2、合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能;3、完善的数据库完整性有助于尽早发现应用软件的错误。

null和undefined都表示缺少值或未定义的状态,根据使用场景的不同,选择使用null还是undefined有以下一些指导原则:1、当需要明确指示一个变量为空或无效时,可以使用null;2、当一个变量已经声明但尚未赋值时,会被默认设置为undefined;3、当需要检查一个变量是否为空或未定义时,使用严格相等运算符“===”来判断变量是否为null或undefined。

结构层次是“数据库→数据表→记录→字段”;字段构成记录,记录构成数据表,数据表构成了数据库。数据库是一个完整的数据的记录的整体,一个数据库包含0到N个表,一个表包含0到N个字段,记录是表中的行。

null和undefined的区别在:1、语义含义;2、使用场景;3、与其它值的比较;4、与全局变量的关系;5、与函数参数的关系;6、可空性检查;7、性能考虑;8、在JSON序列化中的表现;9、与类型的关系。详细介绍:1、语义含义,null通常表示知道这个变量不会拥有任何有效的对象值,而undefined则通常表示变量未被赋值,或者对象没有此属性;2、使用场景等等。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
