精华内容
下载资源
问答
  • oracle关于AS的用法

    千次阅读 2014-07-01 10:18:42
    在Oracle中as关键字不能用于指定表别名,在Oracle中指定表别名时只需在原有表名和表别名之间用空格分隔即可,  但可以用于指定列别名,但在存储过程中如果列别名与原有列名相同,在运行时会报错(编译...

           在Oracle中as关键字不能用于指定表的别名,在Oracle中指定表的别名时只需在原有表名和表的别名之间用空格分隔即可,

           但可以用于指定列的别名,但在存储过程中如果列的别名与原有列名相同,在运行时会报错(编译时不会出错),其他情况下

           列的别名可以与列名本身相同。

    见下面的说明:

    1.查询时as作为给列名起名:

    select  roomId  as 房间ID   from  rooms;

    此时,as可以要也可以不要,它与下面的等同

    select   roomId   房间ID  from   rooms;


    2.查询时,它不能给表起名,如下面的是错误的(以中文为例,不管中英文它都是错误的):

    select  roomId  from rooms  as 房间;

    或者  select  房间.roomId  from  rooms  as 房间;

    它只 能是 select    房间.roomId  from  room  房间;  

    或:  select    RoomId.roomId  from  room  RoomId


    展开全文
  • 关于Oracle中的as和with as 的用法

    万次阅读 2016-03-22 09:28:37
    在Oracle中as关键字不能用于指定表的别名,在Oracle中指定表的别名时只需在原有表名和表的别名之间用空格分隔...在查询oracle中as关键字的用法的时候,发现oracle中with as的用法,觉得非常有用,转载一篇大神的博客
    
    

    在Oracle中as关键字不能用于指定表的别名,在Oracle中指定表的别名时只需在原有表名和表的别名之间用空格分隔即可,

    但可以用于指定列的别名,但在存储过程中如果列的别名与原有列名相同,在运行时会报错(编译时不会出错),其他情况下

    列的别名可以与列名本身相同。

    在查询oracle中as关键字的用法的时候,发现oracle中with as的用法,觉得非常有用,转载一篇大神的博客。

    with as语法
    –针对一个别名
    with tmp as (select * from tb_name)

    –针对多个别名
    with
       tmp as (select * from tb_name),
       tmp2 as (select * from tb_name2),
       tmp3 as (select * from tb_name3),
       …

    1
    2
    3
    4
    5
    6
    7
    8
    9
    --相当于建了个e临时表
    with e as (select * from scott.emp e where e.empno=7499)
    select * from e;
     
    --相当于建了e、d临时表
    with
         e as (select * from scott.emp),
         d as (select * from scott.dept)
    select * from e, d where e.deptno = d.deptno;

    其实就是把一大堆重复用到的sql语句放在with as里面,取一个别名,后面的查询就可以用它,这样对于大批量的sql语句起到一个优化的作用,而且清楚明了。

    向一张表插入数据的with as用法

    1
    2
    3
    4
    5
    insert into table2
    with
        s1 as (select rownum c1 from dual connect by rownum <= 10),
        s2 as (select rownum c2 from dual connect by rownum <= 10)
    select a.c1, b.c2 from s1 a, s2 b where...;

    select s1.sid, s2.sid from s1 ,s2需要有关联条件,不然结果会是笛卡尔积。
    with as 相当于虚拟视图。

    with as短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个sql片断,该sql片断会被整个sql语句所用到。有的时候,是为了让sql语句的可读性更高些,也有可能是在union all的不同部分,作为提供数据的部分。
      
    特别对于union all比较有用。因为union all的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用with as短语,则只要执行一遍即可。如果with as短语所定义的表名被调用两次以上,则优化器会自动将with as短语所获取的数据放入一个temp表里,如果只是被调用一次,则不会。而提示materialize则是强制将with as短语里的数据放入一个全局临时表里。很多查询通过这种方法都可以提高速度。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    with
        sql1 as (select to_char(a) s_name from test_tempa),
        sql2 as (select to_char(b) s_name from test_tempb where not exists (select s_name from sql1 where rownum=1))
    select * from sql1
    union all
    select * from sql2
    union all
    select 'no records' from dual
           where not exists (select s_name from sql1 where rownum=1)
           and not exists (select s_name from sql2 where rownum=1);

    with as优点
    增加了sql的易读性,如果构造了多个子查询,结构会更清晰;
    更重要的是:“一次分析,多次使用”,这也是为什么会提供性能的地方,达到了“少读”的目标

    展开全文
  • 关于 SQL as 用法

    2020-06-05 16:26:26
    前段时间一直在忙项目,导致很久没有更新博客了,这几天项目中碰到两个很有意思事情。如下 一: 我数据库中id是主键,不能重复,不能为空,且因为业务原因也不能设置为自增,业务是从另一个临时表中查出数据放...

    前段时间一直在忙项目,导致很久没有更新博客了,这几天项目中碰到两个很有意思的事情。如下

    一: 我数据库中id是主键,不能重复,不能为空,且因为业务原因也不能设置为自增,业务是从另一个临时表中查出数据放入正式表,且放入id还不能与临时表一样。所以就有了这个,在mybatis的XML中

    <insert>
    <selectKey keyProperty="id" order="before">
     select replace(uuid)
    </selectKey>
     insert into  xxxx表 (......) select  .......   from xxx表
     
    

    把这个放在insert的sql语句之前,意思是在插入之前通过keyProperty找到id,注意before,在insert之前将id替换,mybatis支持uuid()这个,这样就不会重复,很是方便。
    先写到这。忙工作了。改天接着这个写

    展开全文
  • 关于oracle with table as的用法

    千次阅读 2018-03-26 15:16:16
    最近在论坛经常看到有人使用with table as语句,一般都是构建一个临时表,用于测试,经研究此语句的用法我理解有以下好处: 1) 不用实际建表,可以轻松构建一个临时表,通过对这个表的处理测试一些功能;...

    最近在论坛经常看到有人使用with table as语句,一般都是构建一个临时表,用于测试,经研究此语句的用法我理解有以下好处:

    1)  不用实际建表,可以轻松构建一个临时表,通过对这个表的处理测试一些功能;

    例如:withas (

    select '010-82696948' telfrom dualunionall

    select'020 82167684'from dualunion all

    select'010-62102147\62104404'from dualunion all

    select'0860476-82321383'from dualunion all

    select'020-28876096'from dualunion all

    select'010-67260464-分机'from dual)

    select '086-0'||regexp_replace(replace(regexp_substr(tel,'[0-9]+[- ][0-9]{7}',1,1),'','-'),'^[0]*86[0]|^0','')from t;

    --对各种格式电话号码做规范化处理

    2)  复杂的查询会产生很大的sql,with table as语法可以把一些公共查询提出来,也可以显示一个个中间结果,可以使整个sql语句显得有条理些,可读性提高;

    3)  前面的中间结果可以被语句中的select或后面的中间结果表引用,类似于一个范围仅限于本语句的临时表,在需要多次查询某中间结果时可以提升效率 ,特别是对一些大数据量的表做多项统计时,可以大大提高效率。 

    例如: 

    with a as (select * from dba_objects where 某些查询条件),
         b as (select * from a where 某些查询条件)
         select * from b , a  where 其它查询条件;

    再比如:

    with tb as (select * from dba_objects where 某些查询条件),
              select count(*) from tb  where 其它查询条件1

              union

              select count(*) from tb  where 其它查询条件2

              union

              select count(*) from tb  where 其它查询条件3;

    1、语法

    with table as 相当于建个临时表(用于一个语句中某些中间结果放在临时表空间的SQL语句),Oracle 9i 新增WITH语法,可以将查询中的子查询命名,放到SELECT语句的最前面。

    语法就是
    with tempname as (select ....)
    select ...

    例子:
    with t as (select * from emp where depno=10)
    select * from t where empno=xxx

    with wd as (select did,arg(salary) 平均工资 from work group by did),
    em as (select emp.*,w.salary from emp left join work w on emp.eid = w.eid)
    select * from wd,em where wd.did =em.did and wd.平均工资>em.salary;

    =============================================================

     注意:这个临时表只能用于查询,不能用于更新,如:

    ith tt as ( select to_char(sysdate,'yyyymmdd') rq from dual )
    update song_temp set code=( select rq from tt) where code='11';

    这个语句会报错:ora-00928: 缺失select关键字!


    2、何时被清除

    临时表不都是会话结束就自动被PGA清除嘛! 但with as临时表是查询完成后就被清除了!
    23:48:58
    SCOTT@orcl> with aa as(select * from dept)
    23:57:58   2  select * from aa;

        DEPTNO DNAME          LOC
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON

    已用时间:  00: 00: 00.12
    23:58:06
    SCOTT@orcl> select * from aa;
    select * from aa
                  *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在


    已用时间:  00: 00: 00.02
    23:58:14
    SCOTT@orcl>

    3、举例

    假定有张很大的表,有几年来的经营数据,数据量很大。如果要统计一段时间内的邮件状态,如果都从总表中统计,效率一定不高,而采用with tablename as 语句,先将一段时间内的数据取出来,再进行统计就会简单的多。

     

    with tb as (

    select b.city,a.mail_num,a.rcv_area from tb_evt_mail_clct a, tb_jg b

             where a.clct_date = to_date('20110816', 'yyyymmdd')

               and (a.rcv_area like '23%' or a.rcv_area like '24%')

               and a.clct_bureau_org_code = b.zj_code

               and not exists (select 1 from tb_evt_dlv c

                     where c.mail_num = a.mail_num

                       and c.dlv_sts_code = 'I')

                       )   -- 提取出查询数据

    select aa.city 收寄城市, aa.wtt 未妥投, bb.wtd 未投递, cc.wkc 未开拆

      from (select tb.city, count(*) wtt

              from tb

             group by tb.city) aa  -- 统计1

      left join (select tb.city, count(*) wtd

                   from tb

                    where  not exists

                  (select 1 from tb_evt_dlv c

                          where c.mail_num = tb.mail_num

                            and (c.dlv_sts_code = 'H' or c.dlv_sts_code = 'I'))

                  group by tb.city) bb on bb.city = aa.city  -- 统计2

      left join (select tb.city, count(*) wkc 

                   from tb

                  where not exists

                  (select 1  from tb_evt_dlv c

                          where c.mail_num = tb.mail_num

                            and (c.dlv_sts_code = 'H' or c.dlv_sts_code = 'I'))

                    and not exists

                  (select 1 from tb_evt_bag_mail_rela e

                          where e.mail_num = tb.mail_num

                            and e.bag_actn_code = '2'

                            and e.deal_org_code like

                                substr(tb.rcv_area, 1, 4) || '%')

                  group by tb.city) cc on cc.city = aa.city -- 统计3

    展开全文
  • 用法是with A() as b:suiteblock其中A是一个类,该类中必须包含两个函数__enter__(),和__exit__() ,b为函数__enter__()函数返回值,当执行with A() as b: 时,首先会创建一个A 一个临时对象,然后调用__...
  • 关于SQL with as 循环用法

    千次阅读 2017-06-20 11:53:05
    WITH AS短语,也叫做子查询部分(subquery factoring),是用来定义一个SQL片断,该SQL片断会被整个SQL语句所用到。这个语句算是公用表表达式(CTE),对于with 循环 sql 2008有限制,最大只能递归 100 次,08以上...
  • Oracle中的as和with as 的用法

    千次阅读 2019-04-23 14:59:03
    关于Oracle中的as和with as 的用法 在Oracle中as关键字不能用于指定表的别名,在Oracle中指定表的别名时只需在原有表名和表的别名之间用空格分隔即可, 但可以用于指定列的别名,但在存储过程中如果列的别名与原有...
  • as的用法

    2008-02-01 11:31:00
    一、as作连词的用法 ... as...as的用法as...as意为"和……一样",表示同级的比较。使用时要注意第一个as为副词,第二个as为连词。其基本结构为:as+ adj./ adv. +as。例如:(1)This film is as interesting as that o
  • 关于oracle中 with xx as 的用法

    千次阅读 2017-05-11 18:35:04
    提高oracle查询性能之with clause 语句
  • Python中关于with open file as 的用法

    万次阅读 2015-04-23 18:57:42
    发现python中提供with open as 这个还是用不错!好,废话不多说了,看下例子: with open('./sigir_title_cizu.txt') as cizu, open('sigir_title.txt') as titles: cizuData = cizu.readlines() title
  • with 临时表 as (select ........) 关于with as 用户在一下开发人员写SQL语句有看到。说一下个人理解 例如: with ...
  • Oracle with as 的用法

    2019-09-23 18:13:31
    关于oracle with as用法 with as语法–针对一个别名with tmp as (select * from tb_name) –针对多个别名with tmp as (select * from tb_name), tmp2 as (select * from tb_name2), tmp3 as (select * from tb_...
  • 关于oracle with as用法

    2018-01-09 14:02:00
    因为UNION ALL每个部分可能相同,但是如果每个部分都去执行一遍话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。 如果WITH AS短语所定义表名被调用两次以上,则优化器...
  • python中with...as类似于try...except......finally...其用法是 with A() as b:  suite block 其中A是一个类,该类中必须包含两个函数__enter__(),和__exit__() ,b为函数__enter__()函数返回值,当执行...
  • with 临时表 as (select ........)关于with as 用户在一下开发人员写SQL语句有看到。说一下个人理解例如:with a as (select * from emp )select ename,deptno,sal,(select avg(sal) from a where deptno=a....
  • 在hive3.0之前我们一般建立hive外部表后,遇到增加字段或者修改字段类型长度等,我们习惯做法,删表重建后全表修复文件MSCK REPAIR TABLE table_name,一般对于没有错误历史数据表,这样修复是可以。但是我们...
  • as语法 –针对一个别名 with tmp as (select * from tb_name) –针对多个别名 with tmp as (select * from tb_name), tmp2 as (select * from tb_name2), tmp3 as (select * from tb_name3)...
  • 关于oracle with table as 创建临时表的用法示例 1、with table as 相当于建个临时表(用于一个语句中某些中间结果放在临时表空间的SQL语句),Oracle 9i 新增WITH语法,可以将查询中的子查询命名,放到SELECT语句...
  • 引言:with子句或子查询分解子句是SQL-99标准一部分,在Oracle9.2中被添加到OracleSQL语法中。with子句可以作为内联视图处理,也可以作为临时表解析。后者优点是,对子查询重复引用可能更有效,因为可以轻松地...
  • 作者:june_cai日期:2007-09-10 13:37:26链接:http://www.chinaunix.net/jh/4/221895.htmlLVM是一个基于逻辑卷管理机制,它是一个非常方便磁盘管理方式,以前只有 IBM  AIX才支持,最近装了LINUX AS 3发现...
  • mysql关于视图的用法以及作用关于视图的用法以及作用。 作用一: 提高了重用性,就像一个函数。如果要频繁获取user的name和goods的name。就应该使用以下sql语言。示例: select a.name as username, b.name as ...
  • 关于LeakCanary的用法

    2016-06-14 15:27:42
    今天结识了一个检测内存泄漏神器:...具体用法可以参考极客学院视频。今天主要说一下在AS步骤: 1,在gradle添加依赖,主要代码如下: dependencies { compile fileTree(dir: 'libs', include: ['*.jar'

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 430
精华内容 172
关键字:

关于as的用法