`

sql 中 exists 关键字的用法

阅读更多

好久没发表博客了,今日偶有闲暇 仔细研究了一遍oracle中exists 的用法,整理了在一起, 记录在itieye,以防后忘。。。。嘎嘎

1. 关于数据首先做好数据的初始化工作

-- Create table
create table CUSTOMERS
(
  CID    NUMBER not null,
  CNAME  VARCHAR2(50) not null
)
alter table CUSTOMERS
  add constraint CUSTOMERS_PK primary key (CID)
  using index
  tablespace USERS


-- Create sequence

create sequence SEQ_CUSTOMERS
minvalue 1
maxvalue 999999
start with 1
increment by 1
cache 20;


select * from customers;

insert into customers values(seq_customers.nextval,'张三');

insert into customers values(seq_customers.nextval,'李四');
insert into customers values(seq_customers.nextval,'王五');

 

--------------------------------------------------------------------------
-- Create table
create table ORDERS
(
  OID   NUMBER not null,
  ONAME VARCHAR2(50) not null,
  CID   NUMBER
)
-- Create/Recreate primary, unique and foreign key constraints
alter table ORDERS
  add constraint ORDERS_PK primary key (OID)
  using index
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

-- Create sequence
create sequence SEQ_ORDERS
minvalue 1
maxvalue 999999
start with 1
increment by 1
cache 20;

insert into orders values(seq_orders.nextval,'订单1','1');
insert into orders values(seq_orders.nextval,'订单2','2');
insert into orders values(seq_orders.nextval,'订单3','2');

 

2.

/* 查询图书的标题,这些图书是有出版商的,换句话 查询的是 有出版商的图书 的图书标题*/

1.使用exists 关键字

select title from books where exists (select 1 from publishers where pub_id = books.pub_id);

2. 使用in

select * from books where pub_id in (select pub_id from publishers);


----------------------------------------------------------------------

not exists 和exists

/*  查询没有出版过书的 出版商的名称 */
select name from publishers where not exists ( select 1 from books where pub_id = publishers.pub_id)

查询 这些 出版商的名称                          是在图书表中没有对应的记录            这些出版商的id


/*  查询有出版过书的 出版商的名称 */
select name from publishers where exists ( select 1 from books where pub_id = publishers.pub_id)

 

分享到:
评论
1 楼 inter18099 2013-10-04  
      

相关推荐

    sql exists和not exists用法

    使用EXISTS(或NOT EXISTS)关键字引入一个子查询时,子查询实际上不产生任何数据;它只返回TRUE或FALS值。 指定一个子查询,检测行的存在。 如果子查询包含行,则返回 TRUE IN效率要差(返回子查询)

    MySQL中exists关键字和in的区别有那些? SQL语句优化有那些方法? 查询速度很慢应该怎么办?

    in 先执行子查询,子查询的结果返回去重之后,再执行主查询,所以,子查询的返回结果越少,越适合使用in关键字。 二、SQL语句的优化方式有那些?  1. 尽量避免非操作符的使用。在索引列上用NOT,等非操作符会导致...

    mssql和sqlite中关于if not exists 的写法

    本文介绍下sql server查询中,有关if exists与if not exists关键字的用法,有需要的朋友参考下

    SQL21日自学通

    在SQL*PLUS 中使用变量453 DEFINE 454 ACCEPT 455 NEW_VALUE457 DUAL 表458 DECODE 函数459 日期转换462 运行一系列的SQL 文件465 在你的SQL 脚本中加入注释466 高级报表467 总结469 问与答469 校练场469 练习470 第...

    精通sql结构化查询语句

    11.1.4 由VALUES关键字插入多行数据 11.1.5 使用SELECT语句插入数据 11.1.6 通过视图插入数据 11.1.7 使用子查询插入数据 11.2 数据的更新操作 11.2.1 UPDATE语句的基本语法 11.2.2 使用UPDATE语句更新指定的列值 ...

    经典全面的SQL语句大全

     9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)  10、说明:两张关联表,删除主表中已经在副表中没有的信息 delete from table1 where not exists ( select *...

    2009达内SQL学习笔记

    通配符在搜索模式中任意位置使用,并且可以使用多个通配符。 通配符%表示任何字符出现任意次数;还能代表搜索模式中给定位置的0个或多个字符。下划线匹配单个任意字符。 如:select table_name from user_tables ...

    SQL语法大全

    3. SQL常用命令使用方法: (1) 数据记录筛选: sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 like \'%字段值%\' order by 字段名 [desc]" ...

    C#开发经验技巧宝典

    0842 如何正确地理解和使用SQL中的关键字 503 19.2 比较、逻辑运算符查询 504 0843 如何使用算术运算符号进行比较查询 504 0844 如何使用比较运算符号进行比较查询 504 0845 如何使用AND逻辑运算符查询 ...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...

    MYSQL常用命令大全

    然后使用source命令,后面参数为脚本文件(如这里用到的.sql) mysql>source wcnc_db.sql B:使用mysqldump命令 mysqldump -u username -p dbname < filename.sql C:使用mysql命令 mysql -u username -p -D dbname ...

    Java数据库编程宝典2

    第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...

    Java数据库编程宝典4

    第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...

    Java数据库编程宝典1

    第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...

    Java数据库编程宝典3

    第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...

    Oracle_Database_11g完全参考手册.part3/3

    13.1.3 EXISTS及其相关子查询的使用 13.2 外部连接 13.2.1 Oracle9i以前版本中的外部连接的语法 13.2.2 现在的外部连接语法 13.2.3 用外部连接代替NOTIN 13.2.4 用NOTEXISTS代替NOTIN 13.3 自然连接和内部连接 13.4 ...

    Oracle_Database_11g完全参考手册.part2/3

    13.1.3 EXISTS及其相关子查询的使用 13.2 外部连接 13.2.1 Oracle9i以前版本中的外部连接的语法 13.2.2 现在的外部连接语法 13.2.3 用外部连接代替NOTIN 13.2.4 用NOTEXISTS代替NOTIN 13.3 自然连接和内部连接 13.4 ...

Global site tag (gtag.js) - Google Analytics