zoukankan      html  css  js  c++  java
  • 简单查询____oracle

    1 -----------------------------简单查询------------------------------------------
    2 /*
    3 基本查询:
    4 select *|{[distinct] column|expression [alias],...}
    5 from table;
    6  */
    7
    8  -------1,查询所有列
    9  select * from emp;
    10
    11  -------2,查询特定列
    12  select empno,ename,sal,job from emp;
    13
    14  /*
    15 查询日期列:
    16 日期类型是指数据类型为data 或者 timestamp的列。 日期列的默认显示格式为dd-mon-rr
    17  */
    18
    19  alter session set nls_data_language='simplified chainese';
    20  select ename,hierdate from emp;
    21
    22
    23  create table emp
    24 (
    25 empno int primary key,
    26 deptno int not null,
    27 ename varchar2(20),
    28 sal number,
    29 comm number,
    30 hierdate date,
    31 job varchar2(20)
    32 )
    33
    34  select sysdate from dual;
    35
    36  insert into emp
    37 values(7719,1122,'aamith',800,200,to_date('1970-01-01','yyyy-mm-dd') ,'clerk');
    38
    39 alter table emp add check(sal between 800 and 5000);
    40
    41 insert into emp
    42 values(7711,1111,'smith',800,500,to_date('1970-01-01','yyyy-mm-dd') ,'clerk');
    43
    44 insert into emp
    45 values(7712,2222,'allen',1600,null,to_date('1973-02-02','yyyy-mm-dd'),'salensman');
    46
    47 insert into emp
    48 values(7713,1111,'ward',1250,300,to_date('1984-08-23','yy-mm-dd'),'salensman');
    49
    50 insert into emp
    51 values(7714,1111,'smith',800,null ,to_date('1970-01-01','yyyy-mm-dd') ,'clerk');
    52
    53 insert into emp
    54 values(7715,2222,'alil',1600,300,to_date('1973-02-02','yyyy-mm-dd'),'salensman');
    55
    56 insert into emp
    57 values(7715,2222,'alil',1600,300,to_date('1973-02-02','yyyy-mm-dd'),'salensman');
    58
    59 -------------如果把date类型改为char类型可以直接插入数据----
    60
    61 /*
    62
    63 -------------没有实现--------------------------------------------------
    64
    65
    66 --以简体中文显示日期结果 alter session set nls_date_language='chinese';
    67 --以美国英语显示日期结果 alter session set nls_date_language='american';
    68 --以特定格式显示日期结果 alter session set nls_date_language='yyyy"年"mm"月"dd"日"';
    69 --使用to_char函数定制日期显示格式 select ename,to_char(hiredate,'yyyy-mm-dd') from emp;
    70 */

    1 --1,包含重复行
    2 select deptno,job from emp;

    1 --2,排除重复行 __使用distinct 只对其后的一个字段有用。
    2 select distinct deptno,job from emp;

    1 --3,使用算术运算符(+,-,*,/)
    2 select ename ,sal,sal*12 from emp;

    3
    4 --4,不处理null
    5 select ename,sal,comm,sal+comm from emp;

    6
    7 --5,(1)使用nvl处理null____________vnl(string1,string2)如果string1为null,则nvl函数返回string2的值,否则返回string1的值,
    8 ------------------------如果丙个参数都为null,则返回null;
    9 select ename,sal,comm,sal+nvl(comm,0) from emp;


    10
    11 --(2)使用nvl2处理null____________NVL2(expr1,expr2,expr3)如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;
    12 ---------------------------------如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。
    13 select ename,sal,comm,nvl2(comm,sal+comm,sal) from emp;
    14 

    15 --6,(1)使用"||"操作符连接字符串
    16 select ename ||''''||'s job is '||job from emp;
    17 


    18 --(2)使用函数concat连接字符串
    19 select concat(concat(ename,'''s salary is '),sal) from emp;
    20 



    21 ------------------------------------------------------------------------------------------
    22 --7,(1)不使用列别名
    23 select ename,sal*12 from emp;
    24 

    25 ---(2)使用别名
    26 select ename "name",sal*12 "annual salary" from emp;

    27 /*
    28 1.表名 别名
    29 2.表名 as 别名
    30 3.表名 "别名" __允许中间有空格
    31 */

    1 ------------------------------------------限制查询------------------------------------------
    2
    3 select <*,column [alias],...> from table [where condition];
    4 /*
    5 常规比较操作符包括=(等于)、<>(不等于)、!=(不等于)、 >=(大于等于)、 <=(小于等于)、 >(大于) <(小于)
    6 <>和!=一样可以使用。
    7
    8 */
    9
    10 --1)在where子句中使用数字值
    11 select ename,job,sal from emp where sal>900
    12
    13 select * from emp;
    14
    15 --2) 在where子句中使用字符值
    16
    17 select ename,job,sal from emp where job='clerk';
    18
    19 --3) 在where 子句中使用日期值
    20 select ename,sal,hierdate from emp where hierdate>'01-1月-82';
    21
    22 /*
    23 between ...and ,in ,is null
    24 */
    25
    26 --1)在where子句中使用between...and操作符
    27 select ename,sal,job,deptno from emp
    28 where sal between 800 and 2500;
    29
    30 --2) 在where 子句中使用in操作符
    31
    32 select ename,sal,job from emp where job in('clerk','salensman');
    33 

    34 --3) 在where子句中使用is null操作符
    35
    36 select ename from emp where comm is null;
    37
    38 --4) 在where子句中使用like操作符
    39
    40 ----(1)使用通配符%
    41 select ename,sal from emp where ename like 's%';
    42
    43 ----(2)使用通配符_和%
    44 select ename,sal from emp where ename like '_a%';
    45
    46 -----(3)处理字符值包含_或者%的模糊查询
    47
    48 select ename,sal from emp where ename like '%a_%' escape 'l';
    49
    50 ----------------------------------------------------------------------------
    51 /*
    52 逻辑操作符:and ,or ,not
    53 and操作符用于指定同时满足两个条件
    54 or 操作用于指定满足多个条件的任一条件即可
    55 not 用于指定相反条件
    56 从高到底的优先级顺序:not , and , or
    57 */
    58
    59 ---1)在where子句中使用and 操作符
    60 select ename,sal,job,deptno from emp
    61 where deptno=1111 and job='clerk';
    62
    63 ---2)在where 子句中使用or 操作符
    64 select ename,sal,job,deptno from emp
    65 where sal>800 or job = 'salensman';
    66
    67 ---3)在where子句中使用not 操作符
    68 select ename,sal,comm,deptno from emp
    69 where comm is not null;
    70
    71 ---4)在where子句中混合使用逻辑操作符
    72
    73 select ename,sal,job from emp where (job='clerk' or job='salensman')
    74 and sal between 1000 and 3000;
    75
    76 ------------------------排序数据--------------------------------------------------
    77 /*
    78 格式:
    79 select <*,column,...> from table[where condition(s)]
    80 [order by column [asc|desc]];
    81 order by 子句用于指定排序列,
    82 asc用于指定升序排列(默认升序),
    83 desc用于指定降序排列
    84 */
    85
    86 --1)单列升序排序
    87 select ename,sal from emp order by sal asc;
    88
    89 --2) 单列降序
    90 select ename,sal from emp order by sal desc;
    91
    92 --3) 使用列表名排序
    93 select ename,sal*12 年收入 from emp order by 年收入 desc;
    94
    95 --4)使用非选择列表列排序
    96 select ename from emp order by sal desc;
    97
    98 --5)多列排序
    99 select ename,deptno,sal from emp
    100 order by deptno asc,sal desc;

  • 相关阅读:
    响应式布局
    Margin是什么?
    分布式系统设计(1)
    Hadoop处理大量小文件的问题和解决方法
    Facebook揭密:如何让MySQL数据库集群自主运行
    大数据营销的优势
    LevelDB系列之SSTable(Sorted Strings Table)文件
    LevelDB系列之Log文件
    LevelDB系列之整体架构
    LevelDb系列之简介
  • 原文地址:https://www.cnblogs.com/zerocc/p/2029368.html
Copyright © 2011-2022 走看看