oracle中复杂sql查询语句详解 (1/4)

1.查询语句的使用
使用 select语句和子查询(subquery)可以从一个或多个表,视图,实体试图中返回数据.
 
1.1相关子查询
可以将子查询(as subquery)或in或exists当成where的一个条件的一部分,这样的查询称为子查询
  .where中可以包含一个select语句的子查询
  .where中可以包含in,exists语句
  .最多可以嵌套16层
  .层次过多会影响性能
  [例]简单子查询实例
  查询是否有的专家既以研究所的名义来申请基金项目,又以大学系为单位申请项目
  (按规定只能以一个单位来申请)
  sql> create table univ_subject
  2    (
  3       name                 varchar2(12) not null,
  4       per_id                number     not null,
  5      dept_name       varchar2(20)            
  6    );
  sql> insert into univ_subject  values('gaoqianjing',1001,'信息工程系');
  sql> insert into univ_subject  values('wangbing',1002,'物理系');
  sql> insert into univ_subject  values('liming',1003,'化学系');
  ===============
   sql> create table  colle_subject
  2     (
  3              colle_name    varchar2(20),
  4              per_id              number
  5     );
  sql> insert into colle_subject values('电子研究所',1001);
  sql>  insert into colle_subject values('物理研究所',1005);
  ================
  sql> select name,per_id,dept_name from univ_subject where per_id in
  2    (select per_id from colle_subject);

  name            per_id   dept_name
  ------------          ---------     --------------------
  gaoqianjing  1001      信息工程系

首页 1 2 3 4 末页

时间: 2024-07-29 07:59:44

oracle中复杂sql查询语句详解 (1/4)的相关文章

PHP中防止SQL注入方法详解_php技巧

问题描述: 如果用户输入的数据在未经处理的情况下插入到一条SQL查询语句,那么应用将很可能遭受到SQL注入攻击,正如下面的例子: 复制代码 代码如下: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('" . $unsafe_variable . "')"); 因为用户的输入可能是这样的: 复制代码 代码如下: value');

oracle中使用SQL递归语句

场景:常见的领导关系树结构,知道某一节点ID,要查出此节点的所有下级(直接下级和间接下级),此时需要使用SQL递归语句. oracle中的递归语句:  start   with     connect   by   prior  . 例子:  pid  id   a   b     a   c       a   e     b   b1     b   b2     c   c1     e   e1     e   e3     d   d1         指定pid=a,选出     a

Oracle中创建和管理表详解

以下是对Oracle中的创建和管理表进行了详细的分析介绍,需要的朋友可以过来参考下   SQL> /* SQL> 对于表的操作: 创建表,修改表(添加新的列,改变当前某些列,删除列),删除表 SQL> 创建表: create table(需要create table的权限) SQL> 修改表: alter table tablename add/modify/drop SQL> 删除表:drop table tablename SQL> */ SQL> show

Oracle中TO_DATE函数使用方法详解

一.在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用"yyyy-MM-dd HH:mm:ss"的格式作为格式进行转换,但是在Oracle中会引起错误:"ORA 01810 格式代码出现两次".如: select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;  原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQ

oracle中lpad函数的用法详解_oracle

oracle中lpad的用法 pad翻译:填充 lpad函数,在字符串的左侧添加指定字符串,用法: www.jb51.net lpad(String ,截取长度,添加的字符串). 说是添加字符串也不准确,比较准确的说法是对String进行截取字符串, 如果截取长度大于String的长度,则在 String的左侧添加字符串进行填补,如果第三个参数未指定,则用空格进行填补. 例如: select lpad('test',10) from dual; 将返回" test" select lp

Oracle中创建和管理表详解_oracle

SQL> /*SQL> 对于表的操作: 创建表,修改表(添加新的列,改变当前某些列,删除列),删除表SQL> 创建表: create table(需要create table的权限)SQL> 修改表: alter table tablename add/modify/dropSQL> 删除表:drop table tablenameSQL> */SQL> show user;USER 为 "SCOTT"SQL> --访问hr用户下的表SQ

如何在Oracle中使用Java存储过程(详解)

其实,这篇短文,我早就应该写了.因为,Java存储过程今后在各大数据库厂商中越来越流行,功能也越来越强大.这里以Oracle为例,介绍一下java存储过程的具体用法. 一.如何创建java存储过程? 通常有三种方法来创建java存储过程. 1.使用oracle的sql语句来创建: e.g. 使用create or replace and compile java source named "<name>" as 后边跟上java源程序.要求类的方法必须是public sta

Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)_Android

由于考虑到数据库的安全性,不被轻易SQL注入,执行查询语句时,一般不使用直接拼接的语句,而是使用参数传递的方法.然后在使用参数传递的方法中时,发现当使用like方式查询数据时,很容易出现一个问题. 错误案例: 复制代码 代码如下: String myname = "abc";String sql = "select * from mytable where name like '?%'";Cursor cursor = db.rawQuery(sql, new St

oracle中exp,imp的使用详解_oracle

基本语法和实例:      1.EXP:       有三种主要的方式(完全.用户.表)       1.完全:           EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y           如果要执行完全导出,必须具有特殊的权限       2.用户模式:           EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC           这