精华内容
下载资源
问答
  • oracle数据库startwith用法
  • oracle数据库with_as用法

    2013-11-21 15:05:44
    详细介绍oracle数据库中新出的with_as语法以及相关使用
  • with as 在oracle中用法WITH wa_tab_name AS (SELECT * FROM emp) SELECT * FROM wa_tab_name; #相当于在将emp表临时存放在了wa_tab_name中 再如: WITH wa_tab_name AS (SELECT deptno,COUNT(*) AS cnt FROM ...

    with as 在oracle中用法:

    WITH wa_tab_name AS (SELECT * FROM emp)
    SELECT * FROM wa_tab_name;
    #相当于在将emp表临时存放在了wa_tab_name中
    

    再如:

    WITH wa_tab_name AS (SELECT deptno,COUNT(*) AS cnt FROM emp GROUP BY deptno)
    SELECT * FROM dept a JOIN wa_tab_name b 
    ON a.deptno = b.deptno; 
    #求每个部门多少人,先在wa_tab_name中计算出来临时存放,再进行关联
    

    关于with as优化改写sql
    本人在前段时间工作中,当天正好没啥事,看到身边同事在看一个多表关联的sql,我就闲来问了一句他干嘛呢?具体这个sql应用是这样的:
    是一个用于前台展示的分页语句,用来展示每日跑批状态记录表。对应的后台数据库是postgresql数据库,一共4个表关联,还有1个表用于where过滤,每次在前台查询一次最少耗时2分30秒+。如果随着每个月数据量稍微增加,sql将执行更长时间。
    sql大概如下(因为生产脚本,不变透露,所以我凭印象写个大概的样子)

    SELECT *
      FROM (SELECT A.COL_NAME1,
                   A.COL_NAME2,
                   A.COL_NAME3,
                   A.COL_NAME4,
                   B.COL_NAME1,
                   COUNT(C.COL_NAME1)
              FROM A --3000+数据量
              JOIN B --4000+数据量
                ON A.COL_NAME = B.COL_NAME
               AND A.BAT_NO = B.BAT_NO
              JOIN C --4000+数据量
                ON A.COL_NAME = C.COL_NAME
               AND A.BAT_NO = C.BAT_NO
              LEFT JOIN (SELECT D.BAT_NO, D.COL_NAME, COUNT(*)
                          FROM D --20000+数据量
                         GROUP BY D.BAT_NO, D.COL_NAME) D
                ON A.COL_NAME = D.COL_NAME
               AND A.BAT_NO = D.BAT_NO
             WHERE A.COL_NAME = '$date'
               AND A.BAT_NO = '$hostid'
               AND A.OBJECT_NAME || A.ID NOT IN
                   (SELECT E.OBJECT_NAME || E.ID
                      FROM E --4000+数据量
                     WHERE E.COL_NAME = '$date'
                       AND E.BAT_NO = '$hostid')
             GROUP BY A.COL_NAME1,
                      A.COL_NAME2,
                      A.COL_NAME3,
                      A.COL_NAME4,
                      B.COL_NAME1) 
    LIMIT '$end_no' OFFSET '$start_no' ;
    

    因为是postgresql数据库,我之前也没有接触过啊,这执行计划打开我也不一定看的懂啊,怎么办?索性不看执行计划了,靠自己硬解析sql,定位问题出在了哪里,毕竟我写sql也好几年了,像有笛卡尔积之类的垃圾sql还是应该能直接通过sql看出来的。
    首先我看各个表的数据量,看了最大的数据量才2w多,其余的都是4000条左右的数据,这对我一个数仓人员来说随便写sql都应该问题不大啊,为什么会有执行2分多钟的情况呢?(有可能是mpp数据库搞多了,所以才有这性能,但是我以前在oralce上开发时候这么点数据量也不会跑这么慢的)
    数据量看着不大啊,那我在看看sql有没有标量子查询之类的啊,我仔细一看,这sql要是我写我也得这样写,唯一我要改的是where条件拼接哪里,(where条件多字段直接过滤就行,为啥子拼接呢,难道是这个地方因为拼接导致的?)我的改写如下:

    SELECT *
    FROM (SELECT A.COL_NAME1,
                A.COL_NAME2,
                A.COL_NAME3,
                A.COL_NAME4,
                B.COL_NAME1,
                COUNT(C.COL_NAME1)
           FROM A --3000+数据量
           JOIN B --4000+数据量
             ON A.COL_NAME = B.COL_NAME
            AND A.BAT_NO = B.BAT_NO
           JOIN C --4000+数据量
             ON A.COL_NAME = C.COL_NAME
            AND A.BAT_NO = C.BAT_NO
           LEFT JOIN (SELECT D.BAT_NO, D.COL_NAME, COUNT(*)
                       FROM D --20000+数据量
                      GROUP BY D.BAT_NO, D.COL_NAME) D
             ON A.COL_NAME = D.COL_NAME
            AND A.BAT_NO = D.BAT_NO
          WHERE A.COL_NAME = '$date'
            AND A.BAT_NO = '$hostid'
            AND (A.OBJECT_NAME , A.ID) NOT IN
                (SELECT E.OBJECT_NAME , E.ID
                   FROM E --4000+数据量
                  WHERE E.COL_NAME = '$date'
                    AND E.BAT_NO = '$hostid')
          GROUP BY A.COL_NAME1,
                   A.COL_NAME2,
                   A.COL_NAME3,
                   A.COL_NAME4,
                   B.COL_NAME1) 
    LIMIT '$end_no' OFFSET '$start_no' ;
    

    拉到数据库跑了一下,结果耗时还是2分30秒多,那么问题就不在这里了啊。这只能拿出我的“笨办法”了,要不然搞不出问题原因那岂不是很没面子啊?我就将这个sql拆分,让其a先与b关联 加上where 条件,跑了一下,很快,问题不在这。继续往下,a join b join c ,结果跑了一下还是很快;那我进行了单独查询d,

    SELECT D.BAT_NO, D.COL_NAME, COUNT(*)
                       FROM D --20000+数据量
                      GROUP BY D.BAT_NO, D.COL_NAME;
                      #跑了一下,执行的很快呢--返回上千条数据
    

    我又重新关联,结果就跑的很慢了。那么问题定位出来了,就是出在与d表关联时候了。单独跑d表的这个sql很快,但是执行起来表关联很慢,我想难道后台执行计划是嵌套循环,而且每返回1条数据就查一次这个表吗?
    这如果是生产跑批脚本,我一般就把d表拆出来临时建立个临时表了,然后在下一步在执行关联,可是此时这个sql是前台直接调用的sql啊,没办法,我只能一个sql写出来。这时候想到用with as 可以生成临时表,就是不知道postgresql支持不支持。我先在数据库里测试了一下with as 语法支持,万幸支持此语法,那这就好办 了,我将d表查询放在with as 中,这样这个表就只用查询一次了。试一下效果:

    WITH WA_TAB_NAME AS
     (SELECT D.BAT_NO, D.COL_NAME, COUNT(*)
        FROM D --20000+数据量
       GROUP BY D.BAT_NO, D.COL_NAME)
    SELECT *
      FROM (SELECT A.COL_NAME1,
                   A.COL_NAME2,
                   A.COL_NAME3,
                   A.COL_NAME4,
                   B.COL_NAME1,
                   COUNT(C.COL_NAME1)
              FROM A --3000+数据量
              JOIN B --4000+数据量
                ON A.COL_NAME = B.COL_NAME
               AND A.BAT_NO = B.BAT_NO
              JOIN C --4000+数据量
                ON A.COL_NAME = C.COL_NAME
               AND A.BAT_NO = C.BAT_NO
              LEFT JOIN WA_TAB_NAME D
                ON A.COL_NAME = D.COL_NAME
               AND A.BAT_NO = D.BAT_NO
             WHERE A.COL_NAME = '$date'
               AND A.BAT_NO = '$hostid'
               AND (A.OBJECT_NAME, A.ID) NOT IN
                   (SELECT E.OBJECT_NAME, E.ID
                      FROM E --4000+数据量
                     WHERE E.COL_NAME = '$date'
                       AND E.BAT_NO = '$hostid')
             GROUP BY A.COL_NAME1,
                      A.COL_NAME2,
                      A.COL_NAME3,
                      A.COL_NAME4,
                      B.COL_NAME1) LIMIT '$end_no' OFFSET '$start_no';
    

    这次怀着忐忑的心情又跑了一下,因为如果还是执行不快有可能是分页的问题导致的,那分页语句优化更难了。这次测试了一下,刚一点执行,1秒多中出来了结果,我还以为我看花了,结果还是上次执行的呢,后来我又点了一次,确实1秒多一点。激动啊,这是我优化改写sql中效果最明显的一次了,赶紧告诉同事,同事亲测,直说“牛,厉害,佩服”。哈哈哈,我也就是蒙的啦,不过是真的开心啊,后来改到前台脚本中,在前台展示需要2秒出结果,不过已经很快了,在也不用向以前一样点了一下鼠标等半天了。

    好了,这次就写到这了,马上过年了,有sql问题的小伙伴欢迎留言,一起学习探讨。祝各位鼠年大吉,身体健康,工作顺利。

    展开全文
  • sql数据库WITH AS的用法

    2013-03-06 09:11:34
    WITH temptab(子节点, 父节点) AS (SELECT a.子节点, a.父节点 FROM 物料表 a WHERE 子节点='XXXX' UNION ALL SELECT b.子节点, b.父节点 FROM 物料表 b, temptab c WHERE b.父节点 = c.子节点) select * ...
  • 数据库 insert 用法

    2012-04-18 18:00:37
    WITH [ ,...n ] ] INSERT  [ TOP ( expression ) [ PERCENT ] ]  [ INTO ]  { | rowset_function_limited  [ WITH ( [ ...n ] ) ]  } {  [ ( column_list ) ]  [ ]
     WITH <common_table_expression> [ ,...n ] ]
    INSERT
        [ TOP ( expression ) [ PERCENT ] ]
        [ INTO ]
        { <object> | rowset_function_limited
          [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
        }
    {
        [ ( column_list ) ]
        [ <OUTPUT Clause> ]
        { VALUES ( ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ] )
        | derived_table
        | execute_statement
        | <dml_table_source>
        | DEFAULT VALUES
        }
    }
    [; ]

    <object> ::=
    {
        [ server_name . database_name . schema_name .
          | database_name .[ schema_name ] .
          | schema_name .
        ]
            table_or_view_name
    }

    <dml_table_source> ::=
        SELECT <select_list>
        FROM ( <dml_statement_with_output_clause> )
                          [AS] table_alias [ ( column_alias [ ,...n ] ) ]
            [ WHERE <search_condition> ]
        [ OPTION ( <query_hint> [ ,...n ] ) ]

    参数

    <//ddue.schemas.microsoft.com/authoring/2003/5:content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
    WITH <common_table_expression>

    指定在 INSERT 语句作用域内定义的临时命名结果集(也称为公用表表达式)。结果集源自 SELECT 语句。

    公用表表达式还可以与 SELECT、DELETE、UPDATE 和 CREATE VIEW 语句一起使用。有关详细信息,请参阅WITH common_table_expression (Transact-SQL)。

    TOP ( expression ) [ PERCENT ]

    指定将插入的随机行的数目或百分比。expression 可以是行数或行的百分比。在和 INSERT、UPDATE 或 DELETE 语句结合使用的 TOP 表达式中引用的行不按任何顺序排列。

    在 INSERT、UPDATE 和 DELETE 语句中,需要使用括号分隔 TOP 中的 expression。有关详细信息,请参阅 TOP (Transact-SQL)。

    INTO

    一个可选的关键字,可以将它用在 INSERT 和目标表之间。

    server_name

    表或视图所在服务器的名称(将 OPENDATASOURCE 函数用作服务器名称)。如果指定了 server_name,则需要 database_nameschema_name

    database_name

    数据库的名称。

    schema_name

    表或视图所属架构的名称。

    table_or view_name

    要接收数据的表或视图的名称。

    table 变量在其作用域内可用作 INSERT 语句中的表源。

    table_or_view_name 引用的视图必须可更新,并且只在该视图的 FROM 子句中引用一个基表。例如,多表视图中的 INSERT 必须使用只引用一个基表中各列的 column_list。有关可更新视图的详细信息,请参阅 CREATE VIEW (Transact-SQL)。

    rowset_function_limited

    OPENQUERY 或 OPENROWSET 函数。

    WITH ( <table_hint_limited> [... n ] )
    展开全文
  • With查询语句不是以select开始的,而是以“WITH”关键字开头 可认为在真正进行查询之前预先构造了一个临时表,之后便可多次使用它做进一步的分析和处理 WITH Clause方法的优点 增加了SQL的易读性,如果构造了多个子...

    With查询语句不是以select开始的,而是以“WITH”关键字开头
    可认为在真正进行查询之前预先构造了一个临时表,之后便可多次使用它做进一步的分析和处理

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

    第一种使用子查询的方法表被扫描了两次,而使用WITH Clause方法,表仅被扫描一次。这样可以大大的提高数据分析和查询的效率。
    另外,观察WITH Clause方法执行计划,其中“SYS_TEMP_XXXX”便是在运行过程中构造的中间统计结果临时表。

    语法:

    with tempName as (select ....)
    select ...
    

    –针对一个别名
    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),

    –相当于建了个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 用法:

    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…;
    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短语里的数据放入一个全局临时表里。

    很多查询通过这种方法都可以提高速度。

    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的易读性,如果构造了多个子查询,结构会更清晰;
    更重要的是:“一次分析,多次使用”,这也是为什么会提供性能的地方,达到了“少读”的目标

    展开全文
  • http://liujunbo107.blog.163.com/blog/static/4354124020101019114644512/ 一、.返回数值的用户自定义函数(标量函数) create function 函数名称 (  参数1 类型定义1, ...with encryption as begi

    http://liujunbo107.blog.163.com/blog/static/4354124020101019114644512/

    一、.返回数值的用户自定义函数(标量函数)
    create function 函数名称
    (
     参数1 类型定义1,
     参数2 类型定义2,
     ...
    )
    returns 返回值类型 
    with encryption
    as
    begin
     函数体代码 
     return 返回值
    end

    --/
    create function fun001()
    returns varchar(20)
    as
    begin
     return 'Welcome to China'
    end

    --select getdate()

    select dbo.fun001()


    --jisuan(n)=1+2+3+...+n

    create function jisuan(@n int)
    returns int
    as
    begin
     declare @s int,@i int
     set @s=0
     set @i=1
     while (@i<=@n)
     begin
      set @s=@s+@i
      set @i=@i+1
     end
     return @s
    end


    select dbo.jisuan(100)

    select dbo.jisuan(10)


    --统计城市获取人数
    create function fun002(@city varchar(20))
    returns int
    as
    begin
     declare @count int
     select @count=count(*) from student 
     where city=@city
     return @count
    end


    select dbo.fun002('北京')


    select distinct city from student
    select distinct city,dbo.fun002(city) as num from student

    print  dbo.fun002('北京')


    --(1)通过函数完成:返回两个整数的最大值
    create function fun003(@a int,@b int)
    returns int
    as
    begin
    declare @s int

     if (@a>@b)
     set @s=@a
     else
     set @s=@b
    return @s
    end
    --函数中最后一条语句必须是返回语句。
    select dbo.fun003(34,5656)
    select dbo.fun003(34,3)
    --(2)通过函数完成:返回三个整数的最大值
    /*
    a b c
    --fun003(fun003(a,b),c)

    a>b
     a c
    else
     b c
    */
    create function fun004(@a int,@b int,@c int)
    returns int
    as
    begin 
     return dbo.fun003(dbo.fun003(@a,@b),@c)
    end

    select dbo.fun004(23,5,2323)
    select dbo.fun004(23,5232,23)
    select dbo.fun004(2334,-5232,23)

    create function fun005(@a int,@b int,@c int)
    returns int
    as
    begin
     declare @s int
     if (@a > @b)
     begin
      --返回a c 最大值
      if (@a > @c)
      set @s=@a
      else
      set @s=@c
     end
     else
     begin
      --返回b c最大值
      if (@b > @c)
      set @s=@b
      else
      set @s=@c
     end
    return @s
    end


    select dbo.fun005(23,5,2323)
    select dbo.fun005(23,5232,23)
    select dbo.fun005(2334,-5232,23)

    --通过姓名统计总分


    create function fun006(@name varchar(20))
    returns numeric(10,2)
    with encryption
    as
    begin
    declare @s numeric(10,2)
    if exists(select * from student where name=@name)
    begin
     if exists(select * from relation where stu_no in(select stu_no from student where name=@name))
     begin
      select @s=sum(mark) from relation where stu_no in (select stu_no from student where name=@name)
     end
     else
     begin
      set @s=-2
     end
    end
    else
    begin
     set @s=-1
    end
    return @s 
    end

     

    select dbo.fun006('abc')
    select dbo.fun006('张三')
    select dbo.fun006('陈刚')
    select name,dbo.fun006(name) as summark from student

    select name,dbo.fun006(name) as summark from student
    where dbo.fun006(name) >= 0

    --根据课程名称统计平均分
    create function fun111(@c_name varchar(20))
    returns numeric(5,2)
    with encryption
    as 
    begin
    declare @s numeric(5,2)
     if exists(select * from course where c_name=@c_name)
     begin
      if exists()
      begin
      end
      else
      begin
      nd
     end
     else
     begin
      set @s=-1
     end
    return @s
    end

     


    二、内联(单语句)的返回表的用户自定义函数
    create function 函数名称
    (
     参数1 类型定义1,
     参数2 类型定义2,
     ...
    )
    returns table
    with encryption
    as
    return select语句


    --按照城市获取学生信息

    create function fun007(@city varchar(20))
    returns table
    with encryption
    as
    return 
    select * from student where city=@city

    select * from dbo.fun007('北京')
    select * from fun007('北京')

     

    --按照姓名统计此人选修的课程基本信息
    create function fun008(@name varchar(20))
    returns table
    with encryption
    as
    return 
    select * from course where c_no in(
    select c_no from relation where stu_no in(
    select stu_no from student where name=@name))


    select * from fun008('陈刚')
    select * from fun008('张三')
    select * from fun008('abc')


    --按照课程名称统计学修这门课程的学生信息
    create  function fun113(@c_name varchar(20))
    returns table
    with encryption
    as 
    return
    select *  from student where stu_no in(
    select stu_no from relation where c_no in(select c_no from course where c_name=@c_name))

     
    select * from fun113('网站设计')

     

    三、.多语句的返回表的用户自定义函数
    create  function  函数名称
    (
     参数1  类型定义1,
     参数2  类型定义2,
     ...
    )
    returns  @return_variable  table (定义)
    [with  encryption]
    [as]
    begin
      function_body
      return
    end

    --按照城市统计给城市的学生的姓名 性别 和城市


    create function fun009(@city varchar(20))
    returns @tab table(
    name varchar(20),
    sex char(2),
    city varchar(20)
    )
    with encryption
    as
    begin
     insert into @tab(name,sex,city) select name,sex,city from student where city=@city
     return
    end


    select * from fun009('北京')

     


    --统计全体学生的姓名和总分

    create function fun010()
    returns @tab table(
    name varchar(20),
    summark numeric(10,2)
    )
    with encryption
    as
    begin
    declare @name varchar(20)
    declare @summark numeric(10,2)
    declare cur cursor for select name from student where stu_no in(select stu_no from relation)
    open cur
    fetch cur into @name
    while (@@fetch_status=0)
    begin
     select @summark=sum(mark) from relation where stu_no in (
     select stu_no from student where name=@name )
     insert into @tab(name,summark) values(@name,@summark)
     fetch cur into @name
    end
    close cur
    deallocate cur
    return 
    end


    select * from fun010()


    展开全文
  • WITH CHECK OPTION:透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式) 例如: create view TestView as select id,name FROM Table where IsCheck=1 with check ...
  • 学习sqlserver的数据备份与恢复 用 SQL 语句还原数据库with move 选项用法) 1. 查看 SQL Server 2000 中 Northwind 数据库文件的逻辑文件名(logical file name)和物理文件路径(operation system file name):...
  • 一、with as 概念介绍with as 也叫做子查询部分(subquery factoring),可以定义一个SQL段落,该SQL段落可以被整个SQL语句所用到类似于临时表的作用。w...
  • 神通数据库connect by用法 神通数据库大多数sql和Oracle用法一样。 对于connect by ,大致的理解是用于树形结构的表,一般在于查找父子关系数据时使用。 模板sql如下: select * from treeTable start with id=1 ...
  • 1. 查看 SQL Server 2000 中 Northwind 数据库文件的逻辑文件名(logical file name)和物理文件路径(operation system file name): use Nothwind go select name, filename, * from dbo.sysfiles name ...
  • 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ...
  • 在oracle数据库中,需要查询树结构类型数据的时候,使用start with connect by prior递归查询非常方便,指定一个起始节点,就可以查询到起始节点以上以及以下的所有树形层级。 为了能更好的介绍如何使用,首先需要...
  • 【鹏城万里】 发表于 www.sqlstudy.com SQL Server:用 SQL 语句还原数据库with Move 选项用法)。 当我们把服务器A上的一个数据库备份后,在服务器B上还原的时候, 直接 restore 的时候,大多情况下都会出错,...
  • 它们都离不开Sqlite数据库的支持。 本文主要介绍下,如何在swift中使用原生的sqlite的API。 在Xcode中引入sqlite API 新建一个swift项目后,我们需要让项目引入sqlite的动态链接库: 1、项目配置界面,选择Build ...
  • http://blog.csdn.net/czmao1985/archive/2010/09/01/5855186.aspx
  • 数据库中cast的用法用法你知道吗?下面小编就跟你们详细介绍下数据库中cast的用法用法,希望对你们有用。  数据库中cast的用法用法如下:  经常在前辈们的SQL中可以看到CAST的用法,例如  WITH T AS...
  • 数据库中cast的用法用法你知道吗?下面小编就跟你们详细介绍下数据库中cast的用法用法,希望对你们有用。  数据库中cast的用法用法如下:  经常在前辈们的SQL中可以看到CAST的用法,例如  WITH T AS...
  • 数据库触发器的用法

    千次阅读 2012-05-13 22:41:01
    CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH [ ,...n ] ]{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATIO
  • Python with 用法

    2019-09-30 15:05:54
    打开文件 with open('em.txt', 'wb') as f: f.write('ememem') 线程lock lock = threading.Lock() # with里面获取lock, 退出with后释放lock with lock: # Critical section of ...数据库游标 db_connection = Da...
  • python with用法

    2016-05-10 21:40:18
    try-except-else的一种特定的配合用法是保证共享的资源的唯一分配,并在任务结束的时候释放它。比如文件(数据、日志、数据库等)、线程资源、简单同步、数据库连接,等等。wth语句的目标就是应用在这种场景。with...

空空如也

空空如也

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

数据库with用法