create table cps_emp as
            select * from s_emp where 1=1;
这里“1=1”是什么意思?还有就是: select distinct m.first_name,m.id 
              from s_emp m,s_emp e
                  where m.id=e.manager_id(+)
                  and  e.manager_id is null;
后面为什么要有 and  e.manager_id is null?是什么作用?问题3:select first_name,salary,
             nvl(to_char(grade),'no matched salgrade') 
             from  s_emp,salgrade 
             where salary between  losal(+) and hisal(+);
losal是什么类型的?这种外连接是什么意思?谢谢大家!请指教!

解决方案 »

  1.   

    第一个问题的答案:
     1=1 就是表示“真” 的意思
     where 1=1 就是表示什么条件都可以和写不写 这个条件是一样的。
      

  2.   

    create table cps_emp as
      select * from s_emp where 1=1;这个是表的数据拷贝语句 cps_emp 完全拷贝表  s_emp 
      

  3.   

    create table cps_emp as
      select * from s_emp where 1=1;
    这里“1=1”是什么意思?
    这个1=1 是把s_emp表中的数据拷到cps_emp的意思。。
    还有就是: select distinct m.first_name,m.id  
      from s_emp m,s_emp e
      where m.id=e.manager_id(+)
      and e.manager_id is null;
    后面为什么要有 and e.manager_id is null?是什么作用?
    这个我感觉是is not null 这是使得id用到索引的意思
    个人意见
      

  4.   

    (问题1)
    create table cps_emp as
      select * from s_emp where 1=1;
    这里“1=1”是什么意思?这里创建一个表cps_em与s_emp一致。(表结构和数据)如果使用以下方式,将导致,只有表结构,但没有表数据:
    create table cps_emp as
      select * from s_emp where 1=2;

    (问题2)
    还有就是: select distinct m.first_name,m.id  
      from s_emp m,s_emp e
      where m.id=e.manager_id(+)
      and e.manager_id is null;
    后面为什么要有 and e.manager_id is null?是什么作用?select distinct m.first_name,m.id  
      from s_emp m,s_emp e where m.id=e.manager_id(+)
    以上语句形成一个笛卡尔积,连接条件:
    m.id=e.manager_id(+),其中,该条件导致e.manager_id可以为空,m.id的值不为空。
    e.manager_id is null  这个条件说明:找到m.id不在e.manager_id中的记录。(问题3)select first_name,salary,
      nvl(to_char(grade),'no matched salgrade')  
      from s_emp,salgrade  
      where salary between losal(+) and hisal(+);
    losal是什么类型的?这种外连接是什么意思?谢谢大家!请指教!查看losal和hisal在哪个表中,然后通过执行  desc 表名  来查出该字段的类型。(跟salary类型一样,应该是number类型)这种外连接,应该是当losal和hisal都有值时,则salary必须在losal和hisal之间;如果losal或者hisal有一个值没有值,则salary只需要满足一个条件就可以(小于最大的,或者大于最大的);如果losal和hisal都没有值,则,该salary依然当做满足条件的数据。(此分析为个人根据外连接的概念得出,仅供参考,最好通过实际的sql,试验一下)。