Oracle SQL ANY用法
oracle 中 select 使用总结

AAAMiZAAEAAAAA/AAA 1 John Brown
AAAMiZAAEAAAAA/AAB 2 Cynthia Green
AAAMiZAAEAAAAA/AAC 3 Steve White
AAAMiZAAEAAAAA/AAD 4 Gail Black
AAAMiZAAEAAAAA/AAE 5 Doreen Blue
26.98
12 rows selected.
SQL>
SQL> select price*2 "double_price" from products;
double_price ------------
39.9 60 51.98 27.9 99.98 29.9 26.98 25.98 21.98 31.98 29.98
CUSTOMER_ID FIRST_NAME LAST_NAME DOB PHONE
----------- --------------
4 Gail Black
800-555-1214
SQL>
12、函数nvl()
NVL()函数可以将空值转换成另外一个可以真正理解的值
double_price ------------
26.98
12 rows selected.
SQL>
SQL> select price*2 as double_price from products;
DOUBLE_PRICE ------------
39.9 60 51.98 27.9 99.98 29.9 26.98 25.98 21.98 31.98 29.98
SQL> select first_name,NVL(dob,'13-JUN-1997') from customers;
C#中操作Oracle时的SQL语句参数的用法

C#中操作Oracle时的SQL语句参数的⽤法OracleTransaction myTrans ;conn.Open();myTrans =conn.BeginTransaction(IsolationLevel.ReadCommitted);comm.Transaction =myTrans;mandText="insert into TagInfo(TagID,AutoSubSysID,TagCode,TagName,TagType,TagValueType,TagMaxValue,TagMinValue,TagAlartMax";mandText+=" ,TagAlartMin,TagSaveInterval,TagSaveIgBand,ValidTerm,TimeStampMode,TagAlartPos";mandText+=" ,TagAlartPosDes,Description) ";mandText+=" values(trim(to_char(SeqTagID.Nextval ,'0000000000')),'0000000100',:TagCode,:TagName,:TagType,:TagValueType,:TagMa xValue,:TagMinValue,:TagAlartMax";mandText+=" ,:TagAlartMin,:TagSaveInterval,:TagSaveIgBand,:ValidTerm,:TimeStampMode,:TagAlartPos";mandText+=" ,:TagAlartPosDes,:Description)";OracleParameter [] parameterValue = {new OracleParameter("TagCode",OracleType.VarChar,20)//0,new OracleParameter("TagName",OracleType.VarChar,40),new OracleParameter("TagType",OracleType.Char,1),new OracleParameter("TagValueType",OracleType.Char,1),new OracleParameter("TagMaxValue",OracleType.Double),new OracleParameter("TagMinValue",OracleType.Double),new OracleParameter("TagAlartMax",OracleType.Double),new OracleParameter("TagAlartMin",OracleType.Double),new OracleParameter("TagSaveInterval",OracleType.Int32),new OracleParameter("TagSaveIgBand",OracleType.Double),new OracleParameter("ValidTerm",OracleType.Int32),new OracleParameter("TimeStampMode",OracleType.Char,1),new OracleParameter("TagAlartPos",OracleType.Int32),new OracleParameter("TagAlartPosDes",OracleType.VarChar,40),new OracleParameter("Description",OracleType.VarChar,80)};foreach(OracleParameter parameter in parameterValue) comm.Parameters.Add(parameter);int m,n;try{for(int j=3;j<=30;j++){m=j;for(int i=1;i<12;i++){n=i;string TagID="";string TagCode ="00100100010100";string TagName ="RLS";//TagCodeTagCode +=(j<10)?"0"+j.ToString():j.ToString();TagCode +=(i<10)?"000"+i.ToString():"00"+i.ToString();parameterValue[0].Value = TagCode;//TagNameTagName +=(j<10)?"000"+j.ToString():"00"+j.ToString();TagName +=(i<10)?"000"+i.ToString():"00"+i.ToString();parameterValue[1].Value = TagName;//TagTypeparameterValue[2].Value =(i<5)? '0':'2';//TagValueTypeparameterValue[3].Value=(i==1 || i>=6)?'0':'1';//TagMaxValueif(i==1 ||i==9){parameterValue[4].Value=10000;}else if(i>=2 && i<6){parameterValue[4].Value=1;}else if(i==6){parameterValue[4].Value=3600;}else if(i==7){parameterValue[4].Value=300;}else if(i==8){parameterValue[4].Value=10;}else if(i==10){parameterValue[4].Value=DBNull.Value;}else if(i==11){parameterValue[4].Value=600;}//TagMinValueif((i>=1 && i<6)||(i>=9 &&i<11)){parameterValue[5].Value=0;}else if(i==6){parameterValue[5].Value=10;}else if(i==7 ||i==11){parameterValue[5].Value=5;}else if(i==8){parameterValue[5].Value=2;}//TagAlartMaxparameterValue[6].IsNullable=true;if((i==1)) parameterValue[6].Value=10000;else parameterValue[6].Value=DBNull.Value;//TabAlartMinparameterValue[7].Value =(i==1)?1:0;//TagSaveIntervalif(i==1){parameterValue[8].Value=10000;}else if(i>=2 && i<=5){parameterValue[8].Value=20000;}else if(i>5){parameterValue[8].Value=60000;}//TagSaveIgBandif((i==1)) parameterValue[9].Value=2;else parameterValue[9].Value=1;//ValidTermparameterValue[10].Value =(i==1)?60000:300000;//TimeStampModeparameterValue[11].Value="0";//TagAlartPosparameterValue[12].IsNullable=true;if((i>=1) && (i<=4)) parameterValue[12].Value =0;else parameterValue[12].Value =DBNull.Value;//TagAlartPosDesparameterValue[13].Value =(i>=2 && i<=4)?"异常":"";//DescriptionparameterValue[14].Value ="";comm.ExecuteNonQuery();。
ORACLE-SQL语句学习教程

目录概述 (2)第一章SQL*PLUS 工具软件的使用 (5)第二章基本查询 (9)第三章条件查询 (13)第四章单行函数 (16)第五章多表查询 (20)第六章组函数 (23)第七章子查询 (25)第八章运行期间指定变量 (29)第九章创建基表 (31)第十章ORACLE数据字典 (36)第十一章操纵数据 (38)第十二章修改基表及其约束 (42)第十三章创建序列 (45)第十四章创建视图 (47)第十五章创建索引 (50)概述20世纪70年代初,E.F。
Codd 在计算机学会(Association of Computer Machinery,简写为ACM)期刊Communications of the ACM(ACM 通讯)发表了题为”A Relational Model of Data for Large Shared Data Banks”(大型共享数据库的数据关系模型)的论文,该论文提出的关系数据库模型成为今天最为权威的关系型数据库管理模型.IBM公司首先使用该模型开发出了结构化英语查询语言SEQUEL(Structured English Query Language),作为其关系数据库原型System R的操作语言,实现对关系数据库的信息检索.SEQUEL后来简写为SQL,即Structured Query Language(结构化查询语言)的缩写.ORACLE公司于1997年推出了第一个商业应用的SQL软件.20世纪80年代初,美国国家标准化组织(ANSI)开始着手制订SQL标准,最早的ANSI 标准于1986年颁布,它也被称为SQL-86。
标准的出台使SQL作为标准的关系数据库语言的地位得到加强。
SQL标准几经修改和完善,目前SQL语言方面新的ANSI标准是1992年制定的ANSI X3.135—1992,“Database Language SQL”。
此标准也被国际电工委员会(International Electro technical Commission,即IEC)所属的国际标准化组织(International Standards Organization, 即ISO)所接受,并将它命名为ISO/IEC9075:1992, “Database Language SQL”。
Oracle常用SQL命令

Oracle常⽤SQL命令创建表空间1.创建默认表空间WLP_DATCREATE TABLESPACE "MYSPACE" DATAFILE'D:\oracle\oradata\orcl\data/WLP_DAT.dbf' SIZE 32M REUSE AUTOEXTEND ON NEXT 32MLOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;2.创建临时表空间WLP_TEMP(⽤于缓存,可以不建)ALTER TABLESPACE "TEMP" ADD TEMPFILE'D:\oracle\oradata\orcl\data/WLP_TEMP.dbf' SIZE 32m REUSE autoextend on next 32m;创建⽤户并授权1CREATE USER "WLPING" PROFILE "DEFAULT"2 IDENTIFIED BY "123456"3DEFAULT TABLESPACE "MYSPACE" //默认指定表空间4TEMPORARY TABLESPACE "TEMP" //指定缓存表空间5 ACCOUNT UNLOCK; //⽤户⾮锁定67GRANT EXECUTE ON dbms_comparison TO "WLPING";8GRANT UNLIMITED TABLESPACE TO "XIR_MD";9GRANT "CONNECT" TO "XIR_MD";10GRANT "RESOURCE" TO "XIR_MD";1112-- GRANT DBA TO XIR_MD;PROFILE:Oracle系统中的profile可以⽤来对⽤户所能使⽤的数据库资源进⾏限制,使⽤Create Profile命令创建⼀个Profile,⽤它来实现对数据库资源的限制使⽤,如果把该profile分配给⽤户,则该⽤户所能使⽤的数据库资源都在该profile的限制之内。
Oracle SQL EXISTS用法

Oracle SQL EXISTS用法(1)在T1表中查找与T2表中id字段数据相同的记录内容。
SELECT *FROM T1WHERE EXISTS (SELECT *FROM T2WHERE T1.id = T2.id)上面的例子可以用ANY改写为下列等价的语句:SELECT *FROM T1WHERE T1.id = ANY (SELECT idFROM T2)也可以用IN改写为下列等价的语句:SELECT *FROM T1WHERE T1.id IN (SELECT idFROM T2)(2)查看所有拥有Chair者的列表。
SELECT OWNERFIRSTNAME, OWNERLASTNAMEFROM ANTIQUEOWNERSWhere EXISTS(SELECT *FROM ANTIQUESWhere ITEM = 'Chair');在上例中,如果在ANTIQUES列中有Chair,那么子查询就会返回一行或者多行,使得EXISTS子句为真,然后让SQL列出拥有者。
如果没有搜索到Chair,则没有行被返回,条件就为假。
(3)返回ORDERS里面所有的值,而不是只有NAME#='BS'的值。
SELECT * FROM ORDERSWHERE EXISTS(SELECT *FORM ORDERSWHERE NAME#='BS')(4)返回符合条件STATE='NE' AND #=#的值。
SELECT * FROM ORDERSWHERE EXISTS(SELECT *FROM CUSTOMER CWHERE STATE='NE' AND #=#)(5)返回ORDERS里面所有的值,而不是只有NAME#='BS'的值。
SELECT * FROM ORDERSWHERE EXISTS(SELECT *FORM ORDERSWHERE NAME#='BS')上面的语句也可以改为下面形式即可得到NAME#='BS'的记录。
Oracle数据库常用Sql语句大全

Oracle数据库常用Sql语句大全最简单的就是查询:select语句数据库操作语言DML:update、insert、delete等数据库定义语言DDL:create、drop、alter等等oracle取前几条数据语句sqlserver中可以用top n 的方法,oracle中用rownum,但如果只用rownum会随机取数据,如果想按一定顺序取前几条数据则可这样写:select * from (select列 from 表 where 条件 order by列 desc) where rownum<>select * from (select rownum r ,* from test) ttwhere tt.r 50 and tt.r <= 100;=””>这样子写是会全表扫描的的,小的表不觉得会有多慢,数据量大了你就知道有多不好了,改成这样就不会了oracle怎幺写”IF”语句?如果是 SQL 语句里面使用。
使用 DECODE 或者 CASE WHENDECODE 的用法就是DECODE(abc, 50, 'A’, 'B’)CASE WHEN 的用法就是CASE WHEN abc=50 THEN 'A’ ELSE 'B’ END如果是在存储过程里面的话,就是简单的 IF/ELSE 了SQL 语句的话,就是SELECTabc, DECODE(abc, 50, 'A’, 'B’)FROM表什幺是oracle实例,写出在oracle如何查找实例名的sql语句oracle数据库实例(instance_name)是用于和操作系统进行联系的标识,也就是说数据库和操作系统之间的交互使用的是数据库实例。
数据库名和实例名可以相同也可以不同。
在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。
Oracle SQL Developer 使用简要说明
Oracle SQL Developer 使用简要说明Oracle SQL Developer 是免费的图形化数据库开发工具。
使用 SQL Developer,可以浏览数据库对象、运行 SQL 语句和 SQL 脚本,并且还可以编辑和调试 PL/SQL 语句。
还可以运行所提供的任何数量的报表(reports),以及创建和保存自己的报表(reports)。
SQL Developer 可以提高工作效率并简化数据库开发任务。
SQL Developer 以 Java 编写而成,能够提供跨平台工具。
使用 Java 意味着同一工具可以运行在 Windows、Linux 和 MAC OS X。
这就提供了一个跨平台的统一界面。
SQL Developer 的到数据库的默认连接使用的是瘦 jdbc 驱动程序。
默认使用 JDBC 瘦驱动程序意味着无需安装Oracle 客户端,从而将配置和占用空间大小降至最低。
SQL Developer 的安装只需进行解压和双击操作即可,简单易行。
创建数据库连接使用 Oracle SQL Developer 管理数据库对象首先要创建数据库连接。
执行以下步骤:1.打开 Windows 资源管理器,双击 <path>\sqldeveloper\sqldeveloper.exe。
注:也可以在非 Windows 环境中执行 sqldeveloper。
2.在 Connections 选项卡中,右键单击 Connections 并选择 New Database Connection。
3.在 Connection Name 域中输入 <your_db_sid_name>,在 Username 和 Password 域中输入hr,指定<hostname> 作为 Hostname,在 SID 域中输入 <your_db_sid>。
然后单击 Test。
4.连接状态已成功测试。
oracle常用的SQL及语法
1、两个oracle 开发工具介绍a)SqlDbx王金生曾推荐过的一款数据库客户端开发工具,使用容易,不需要额外的安装其它插件,有sql提示功能,支持Oracle,Sybase ASE, IBM,DB2/UDB, MicrosoftSQL Server 和ODBC数据源,免费绿色版。
b)PLSQL Developer专门针对oracle开发的一款比较专业的客户端工具,除了常用的数据库操作外,还支持存储过程及函数的调试功能等比较高级的功能,详细的操作可以安装完毕后大家去慢慢研究。
配置方式见网上找的一段方法,第二种:/view/65b5a80f6c85ec3a87c2c583.html以上提到的工具及可能用到的插件见共享目录中的文件。
2、oracle 与 sqlserver 语法大比较a)oracle各类型字段描述b)字段类型比较c)常用函数比较注:此处仅记录语法有区别的地方,更多丰富的语法请查看附件中的手册。
以下的exp为expression的缩写d)关于脏读目前我们使用的sqlserver 数据库,在查询数据时,都要求在select语句中后面跟一个(nolock)或(with nolock)来保证读取大表时不影响其它程序进程的数据操作。
在oracle中,目前还不允许脏读的方式,在每次select 后,读到的数据都是已经commit的数据,所以为了避免读取数据的不准确,程序中如果有比较耗时的sql 操作,尤其是在insert 和update后,尽量减小事务,而且要在事务结束后及时commit。
e)表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)在创建表及其主键、外键、CHECK、UNIQUE、DEFAULT、INDEX时,SQL SERVER 与ORACLE的语法大致相同。
主要区别如下:Oracle定义表字段的default属性紧跟字段类型之后,如下:Create table MZ_Ghxx( ghlxh number primay key ,rq date default sysdate not null,….)而不能写成Create table MZ_Ghxx( ghlxh number primay key ,rq date not null default sysdate,….)f)存储过程/函数结构的不同SQLSERVER中存储过程的结构大致如下CREATE PROCEDURE procedure_name/*输入、输出参数的声明部分*/ASDECLARE/*局部变量的声明部分*/BEGIN/*主体SQL语句部分*//*游标声明、使用语句在此部分*/ENDORACLE中存储过程的结构大致如下CREATE OR REPLACE PROCEDURE procedure_name(/*输入、输出参数的声明部分*/ )AS/*局部变量、游标等的声明部分*/BEGIN/*主体SQL语句部分*//*游标使用语句在此部分*/EXCEPTION/*异常处理部分*/END ;ORACLE端FUNCTION语法说明CREATE [OR REPLACE] FUNCTION function_name[(argument [{IN | OUT | IN OUT }] ) type,…[(argument [{IN | OUT | IN OUT }] ) typeRETURN return_type {IS | AS}BEGIN…END;变量赋值在SQL SERVER语句中用如下语句对局部变量赋值(初始值或数据库表的字段值或表达式):“SELECT 局部变量名= 所赋值(初始值或数据库表的字段值或表达式)”;而在ORACLE中,将初始值赋给局部变量时,用如下语句:“局部变量名: = 所赋值(初始值或表达式);”,将检索出的字段值赋给局部变量时,用如下语句:“SELECT 数据库表的字段值INTO 局部变量名…”。
sqlserver中All、Any和Some用法与区别
sqlserver中All、Any和Some⽤法与区别转⾃:SQLServer中有三个关键字可以修改⽐较运算符:All、Any和Some,其中Some和Any等价。
他们作⽤于⽐较运算符和⼦查询之间,作⽤类似Exists、not exists、in、not in以及其他逻辑意义,这些语法同样被SQLServer2000⽀持但是很少看到有⼈⽤它们。
官⽅参考⽂: (建议阅读)set nocount onuse tempdbgoif (object_id ('t1') is not null)drop table t1create table t1 (n int)insert into t1 select 2 unionselect 3if (object_id ('t2') is not null)drop table t2create table t2 (n int)insert into t2 select 1 unionselect 2 union select 3 union select 4-- t1表数据 2,3-- t2表数据 1,2,3,4-- '>all' 表⽰:t2表中列n的数据⼤于t1表中列n的数据的数,结果只有4.select * from t2 where n > all(select n from t1 ) --4select * from t2 where n > any(select n from t1 ) --3,4select * from t2 where n > some(selectn from t1) --3,4select * from t2 where n = all(select n from t1 ) --⽆数据select * from t2 where n = any(select n from t1 ) --2,3select * from t2 where n = some(selectn from t1) --2,3select * from t2 where n < all(select n from t1 ) --1select * from t2 where n < any(select n from t1 ) --1,2select * from t2 where n < some(selectn from t1) --1,2select * from t2 where n <>all (select n from t1 ) --1,4select * from t2 where n <>any (select n from t1 ) --1,2,3,4select * from t2 where n <>some(select n from t1) --1,2,3,4set nocount off注意:1. =any 与in 等效.2. 如果t1中包含null数据,那么所有All相关的⽐较运算将不会返回任何结果。
Oracle+PLSQL语句大全
--修改表的内容 DDLselect*from emp;--使用insert添加行insert into emp(ename,job,empno)values('WANGYI','DBA','2000');commit;--忽略列的的列表insert into emp values(3000,'ZHANG','DBA',1000,to_date('1990-07-15','yyyy-mm-dd'),2000,null,10); commit;--为列指定空值insert into emp values(3001,'ZHANG1','DBA',1000,to_date('1990-07-15','yyyy-mm-dd'),null,null,null); rollback;--在列值中使用单引号和双引号单引号里面的双引号表示单引号,例如插入 O’nal insert into emp(ename,empno)values('O''nal',2222);--复制一个表create table emp2 as select*from emp ;truncate table emp2;--从一个表向另外一个表复制行insert into emp2(empno,ename,sal)select empno,ename,sal from emp where empno=7369;rollback;insert into emp2 select*from emp where empno=7369;--使用update修改行update emp set ename='KKKK'where ename='WANGYI';--如果有两个WANG则两个都修改COMMIT;--returning 子句variable sk numberupdate emp set sal=3000where ename='KKKK'returning avg(sal)into: sk;----有问题--使用delete 删除行delete from emp where ename='KKKK';commit;--jdbc_lobselect*from emp;drop table JDBCTEST;SELECT*FROM jdbct1;alter table jdbct1 add(comm number(10));alter table jdbct1 drop(comm);--包:规范+包体--创建包规范create or replace package emp2_package as --指定包的用户可以使用的过程和函数的列表(同时包括变量,类型定义,游标)function func_sum(n number,m number) return number ;end emp2_package;--创建包体create or replace package body emp2_package as --实现声明中的方法 function func_sum(n number, m number) return number assums number;beginsums:=n+m;return sums;end func_sum;end emp2_package;--调用包中的函数和过程select emp2_package.func_sum(1,2) from dual;--获取包中函数和过程的信息select * from user_procedures ;--删除包drop package emp2_package;--触发器--创建触发器(简单的)create or replace trigger trigger_testbefore insert on emp2for each row when (new.sal>10000) --行级触发器begin-- raise_application_error('-20011','工资不能超过1W!');dbms_output.put_line('工资不能超过1W!');end trigger_test;--测试触发器insert into emp2(empno,ename,sal) values (9527,'gggg',11111);--创建触发器create or replace trigger trigger_test3after insert or update of sal on empfor each row when (new.sal>old.sal*0.75)begin--update emp set sal=:old.sal;dbms_output.put_line(:old.sal);end trigger_test3;--创建触发器(insert)create or replace trigger trigger_2before insert or update on empfor each row when (new.sal<100)begininsert into emp(empno,ename,sal) values(1111,'tttttt',:new.sal*10);end;--测试触发器insert into emp(empno,ename,sal) values(2312,'rrrr',1000);update emp set sal=9999 where ename='rrrr';select * from emp;select * from dual;--dual是oracle 中的一张虚表,用于测试函数用--大小写转换select upper('abc') from dual; --转换为大写select upper(DUMMY) from dual;select lower(DUMMY) from dual; --转换为小写select lower(dummy) from dual; --字段不区分大小写select initcap('this is a test') from dual; --单词首字母大写--字符操作select concat('aaa', 'bbb') from dual; --连接两个字符串select 'aaa' || 'bbb' from dual; --也可以用||连接字符串select substr('abcdef', 3) from dual; --拆分字符串。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle SQL ANY用法
(1)查找定价高于或等于任何产品子类别的最高定价的产品。
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ListPrice >= ANY
(SELECT MAX (ListPrice)
FROM Production.Product
GROUP BY ProductSubcategoryID)
对于每个产品子类别,内部查询查找最高定价。
外部查询查看所有这些值,并确定定价高于或等于任何产品子类别的最高定价的单个产品。
如果ANY更改为ALL,查询将只返回定价高于或等于内部查询返回的所有定价的那些产品。
如果子查询不返回任何值,那么整个查询将不会返回任何值。
(2)查找AdventureWorks生产的所有轮子产品的名称。
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID =ANY
(SELECT ProductSubcategoryID
FROM Production.ProductSubcategory
WHERE Name = 'Wheels')
结果为:
LL Mountain Front Wheel
ML Mountain Front Wheel
HL Mountain Front Wheel
LL Road Front Wheel
ML Road Front Wheel
HL Road Front Wheel
Touring Front Wheel
LL Mountain Rear Wheel
ML Mountain Rear Wheel
HL Mountain Rear Wheel
LL Road Rear Wheel
ML Road Rear Wheel
HL Road Rear Wheel
Touring Rear Wheel
(14行受影响)
如果使用IN也会得到同样的结果,代码如下所示:
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID IN
(SELECT ProductSubcategoryID
FROM Production.ProductSubcategory
WHERE Name = 'Wheels')
(3)查找位于任何销售人员都不负责的地区的客户。
Use AdventureWorks;
GO
SELECT CustomerID
FROM Sales.Customer
WHERE TerritoryID <> ANY
(SELECT TerritoryID
FROM Sales.SalesPerson)
查询结果包含除销售地区为NULL的客户以外的所有客户,因为分配给客户的每个地区都由一个销售人员负责。
内部查询查找销售人员负责的所有销售地区,然后对于每个地区,外部查询查找不在任一地区的客户。
由于同一原因,当在此查询中使用NOT IN时,结果将不包含任何客户。
本例还可以使用< >ALL运算符获得相同的结果,该运算符与NOT IN等效。