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

    ***********************************************声明*********************************************************************** 

    原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。

    深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/39907707

    ****************************************************************************************************************************

    过于简单的sql,此处就不再列举了,下面列举的已经为比較简单的基础查询操作:
    在查询语句中选择指定的列就是关系数据库中所称的投影(project)。

    因为字符集的不同使日期型显示往往出现故障,能够通过以下来设置:
    SQL> alter session set NLS_DATE_LANGUAGE='AMERICAN';

    【补充】字符集查询:

    [oracle@master1 db_home]$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  

    --环境变量设置,格式:语言_地域(文化)_字符集
    SQL> col name for a30
    SQL> col value$ for a30
    SQL> set linesize 200
    SQL> set pagesize 200
    SQL> select name,value$ from props$ where name like '%NLS%';
    win下查看是这个:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    NAME                           VALUE$
    ------------------------------ ------------------------------
    NLS_LANGUAGE                   AMERICAN       --语言
    NLS_TERRITORY                  AMERICA        --地域
    NLS_CURRENCY                   $
    NLS_ISO_CURRENCY               AMERICA
    NLS_NUMERIC_CHARACTERS         .,
    NLS_CHARACTERSET               ZHS16GBK
    NLS_CALENDAR                   GREGORIAN
    NLS_DATE_FORMAT                DD-MON-RR
    NLS_DATE_LANGUAGE              AMERICAN
    NLS_SORT                       BINARY
    NLS_TIME_FORMAT                HH.MI.SSXFF AM
    NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
    NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
    NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
    NLS_DUAL_CURRENCY              $
    NLS_COMP                       BINARY
    NLS_LENGTH_SEMANTICS           BYTE
    NLS_NCHAR_CONV_EXCP            FALSE
    NLS_NCHAR_CHARACTERSET         AL16UTF16
    NLS_RDBMS_VERSION              10.2.0.1.0

    注意:解决这个问题的原则,client的字符集和oracle 数据库的字符集保持一致

    补充完成。

    在sql查询中遵循下面规律:

    字符和日期型数据位左对齐;
    数字型数据为右对齐;

    SQL查询中的算术表达式:超级简单!

    例1:算术表达式
    SQL> select empno,ename,sal,500+sal from emp;
    EMPNO ENAME            SAL    500+SAL
    ----- ---------- --------- ----------
     7369 SMITH         800.00       1300
     7499 ALLEN        1600.00       2100
     7521 WARD         1250.00       1750
     7566 JONES        2975.00       3475
     7654 MARTIN       1250.00       1750
     7698 BLAKE        2850.00       3350
     7782 CLARK        2450.00       2950
     7788 SCOTT        3000.00       3500
     7839 KING         5000.00       5500
     7844 TURNER       1500.00       2000
     7876 ADAMS        1100.00       1600
     7900 JAMES         950.00       1450
     7902 FORD         3000.00       3500
     7934 MILLER       1300.00       1800
    14 rows selected

    例2:算术表达式:优先级推断
    SQL> select empno,ename,500+sal*12 from emp;
    EMPNO ENAME      500+SAL*12
    ----- ---------- ----------
     7369 SMITH           10100
     7499 ALLEN           19700
     7521 WARD            15500
     7566 JONES           36200
     7654 MARTIN          15500
     7698 BLAKE           34700
     7782 CLARK           29900
     7788 SCOTT           36500
     7839 KING            60500
     7844 TURNER          18500
     7876 ADAMS           13700
     7900 JAMES           11900
     7902 FORD            36500
     7934 MILLER          16100
    14 rows selected

    由例1、例2简单总结出优先级的规律为:
    1、先乘除、后加减
    2、优先级次序为自左向右
    3、括号里优先
    4、多重括号,内层括号运算最为优先

    别名的设置

    例3:
    SQL> select empno as "employee number", ename name,(500+sal)*12 "annual salary" from emp;
    employee number NAME       annual salary
    --------------- ---------- -------------
               7369 SMITH              15600
               7499 ALLEN              25200
               7521 WARD               21000
               7566 JONES              41700
               7654 MARTIN             21000
               7698 BLAKE              40200
               7782 CLARK              35400
               7788 SCOTT              42000
               7839 KING               66000
               7844 TURNER             24000
               7876 ADAMS              19200
               7900 JAMES              17400
               7902 FORD               42000
               7934 MILLER             21600
    14 rows selected
    别名:
    对于列名须要加入keyword“as”
    对于表达式,直接在其后加入就可以,很easy

    连接运算符让显示更易读

    例4:使用分隔符
    SQL> select ename || ' annual salary ' || (500+sal)*12 "employee's salary" from emp;
    employee's salary
    SMITH annual salary 15600
    ALLEN annual salary 25200
    WARD annual salary 21000
    JONES annual salary 41700
    MARTIN annual salary 21000
    BLAKE annual salary 40200
    CLARK annual salary 35400
    SCOTT annual salary 42000
    KING annual salary 66000
    TURNER annual salary 24000
    ADAMS annual salary 19200
    JAMES annual salary 17400
    FORD annual salary 42000
    MILLER annual salary 21600

    例5:假设认为还不够直观的话,让我们变成中文,看看效果例如以下:
    SQL> select ename || ' 年薪金额为: ' || (500+sal)*12 "员工2014年年薪" from emp;
    员工2014年年薪
    SMITH 年薪金额为: 15600
    ALLEN 年薪金额为: 25200
    WARD 年薪金额为: 21000
    JONES 年薪金额为: 41700
    MARTIN 年薪金额为: 21000
    BLAKE 年薪金额为: 40200
    CLARK 年薪金额为: 35400
    SCOTT 年薪金额为: 42000
    KING 年薪金额为: 66000
    TURNER 年薪金额为: 24000
    ADAMS 年薪金额为: 19200
    JAMES 年薪金额为: 17400
    FORD 年薪金额为: 42000
    MILLER 年薪金额为: 21600

    小结:
        在让显示结果更易读时,常用连接运算符“||”以达到预期的效果。字符串与连接运算符的搭配使用在工作中非经常见,这会使数据更易读。

    去重的考虑:DISTINCT运算符

    格式:select *|{[distinct] 列表,...} from 表名;
    列表的格式为:列名|表达式[别名]

    select * from 表名:从表名所指定的表中选择全部的列
    select distinct 列表 ... from 表名:为从表名所指定的表中选择列表所规定的列,但不显示反复的数据行(或记录)。


    例6:在emp表内查询部门号时,会出现所有的信息,数据量小还能够,假设数据量变得巨大以后,那将变得非常难筛选出实用的信息来。
    SQL> select deptno from emp;
    DEPTNO
    ------
        20
        30
        30
        20
        30
        30
        10
        20
        10
        30
        20
        30
        20
        10
    14 rows selected
    下面使用distinct命令,例如以下所看到的:
    SQL> select distinct deptno from emp;
    DEPTNO
    ------
        30
        20
        10
    但这种方法,我们并不建议使用,由于这个distinct完毕的是两个步骤,会先排序,然后从中筛选反复值。能够预见,假设在一张大表里的话,效率将会是很低的。假设想要去重的话,我们能够使用group分组,来完毕去重的目的。

    为了实现去重的目的,我们能够这样运行语句,例如以下所看到的:
    SQL> select deptno from emp group by deptno;
    DEPTNO
    ------
        30
        20
        10

    ***********************************************声明*********************************************************************** 

    原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。

    深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/39907707

    **************************************************************************************************************************** 

  • 相关阅读:
    scrapy框架持久化存储 以及响应参数
    scrapy框架
    12306 模拟登陆
    Python第三库---requests库详解
    批处理-----4.for循环中的变量
    批处理-----3. for循环详解
    批处理-----2.常用特殊符号
    批处理-----1.内部命令简介
    Python第三方库---requests库
    Python 自带标准库
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4170126.html
Copyright © 2011-2022 走看看