• sql语句EXISTS的用法和oracle中substr的用法


    转需:EXISTS 指定一个子查询,检测 行 的存在。

    语法: EXISTS subquery
    参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。
    结果类型: Boolean 如果子查询包含行,则返回 TRUE ,否则返回 FLASE 。

    NOT EXISTS 的作用与 EXISTS 正好相反

    EXISTS(包括 NOT EXISTS )子句的返回值是一个BOOL值。 EXISTS内部有一个子查询语句(SELECT ... FROM...), 我将其称为EXIST的内查询语句。其内查询语句返回一个结果集。 EXISTS子句根据其内查询语句的结果集空或者非空,返回一个布尔值。

    在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,可以通过使用 EXISTS 条件句防止插入重复记录。
    INSERT INTO TableIn (ANAME,ASEX) 
    SELECT top 1 '张三', '男' FROM TableIn
    WHERE not exists (select * from TableIn where TableIn.AID = 7)

    EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引,但要看实际情况具体使用:
    IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

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

    substr(字符串,截取开始位置,截取长度) //返回截取的字

    substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串

    substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符

    substr('Hello World',2,4) //返回结果为 'ello'

    substr('Hello World',-3,3)//返回结果为 'rld' *负数(-i)表示截取的开始位置为字符串右端向左数第i个字符

    测试:

    select substr('Hello World',-3,3) value from dual;

    附:java中substring(index1,index2)的简单用法

    作用:从字符串索引(下标)为index1的字符开始截取长度为index2-index1 的字符串。

    String str="Hello World";

    System.out.println(str.substring(0,5));

    打印结果为:Hello

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

    oracle中any和all的区别

    比如集合(1,2,3,4)
    >any表示只要大于其中任意一个就行
    >all表示要比其中的任何一个都大

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

    SQL92/99标准的四大类
    (1)DML(数据操纵语言):select,insert,update,delete
    (2)DDL(数据定义语言):create table,alter table,drop table,truncate table
    (3)DCL(数据控制语言):grant select any table to scott/revoke select any table from scott
    (4)TCL(事务控制语言):commit,rollback,savepoint to 回滚点

    sql判断字段是否为空时用is null   而不是=null

    注意:&是sqlplus工具提供的占位符,如果是字符串或日期型要加''符,数值型无需加''符

    删除无佣金的员工
    delete from emp where comm is null;

    将emp表丢入回收站,drop table 表名
    drop table emp;

    从回收站将emp表闪回,flashback table 表名 to before drop
    flashback table emp to before drop;

    查询回收站,show recyclebin
    show recyclebin;

    清空回收站,purge recyclebin
    purge recyclebin;

    使用关键字purge,彻底删除emp表,即不会将emp表丢入回收站,永久删除emp表,drop table 表名 purge
    drop table emp purge;

    drop table 和 truncate table 和 delete from 区别:
    drop table
    1)属于DDL
    2)不可回滚
    3)不可带where
    4)表内容和结构删除
    5)删除速度快

    truncate table           //清空表数据
    1)属于DDL  
    2)不可回滚
    3)不可带where
    4)表内容删除
    5)删除速度快

    delete from
    1)属于DML
    2)可回滚
    3)可带where
    4)表结构在,表内容要看where执行的情况
    5)删除速度慢,需要逐行删除
    软件工程师

    当能力支撑不了野心时,就该静下心来学习!
  • 相关阅读:
    多态的详解
    Java继承详解
    static关键字特点
    数组(相关知识的整理)
    杨辉三角(用for循环)
    Jmeter接口测试案例实践(一)
    组合测试方法:配对测试实践
    用例设计方法:判定表驱动法实践
    sso系统登录以及jsonp原理
    单点登录--sso系统
  • 原文地址:https://www.cnblogs.com/1234cjq/p/sql.html
Copyright © 2020-2023  润新知