oracle 单表查询 详细图文

1.简单查询

1.1查询指定列

     (1)指定部分列

               检索所有教师的姓名,名称,工资,参加工作时间等信息

         SELECT  <*/expression1 [AS alias1],....>FROM talbe;

         SELECT 子句<>中的内容用于指定要检索的列,星号*表示检索所有列,expression用于指定要检索的列或表达式,alias用于指定列或表达式的别名,FROM 子句用于指定要检索的表

检索所有教师的姓名,职称,工资,参加工作的世界等


检索所有教师的姓名,职称,工资,参加工作的世界等,日期日期格式按照YYYY-MM-DD输出


        2.指定全部列

           指定全部列有两种方法,其一是在SELECT子句<>中选出*号,其二是在SELECT 子句expression中指定全部列名

            一在显示检索结果时,列的顺序不可以改变(与DESCRIBE命令显示的表结构的顺序一致)

        3重复记录行的处理(DISTINCT关键字)

        当选择主键以外的列执行查询操作时,可能会出现两行或多行完全相同的查询结果,没有实际意义,一般需要取消完全重复的记录行,使用DISTINCT关键字来完成

        未使用DISTINCT

        

使用DISTINCT

          3.改变输出

            使用SELECT语句执行查询操作时,首先会显示列标题,然后显示记录行数据,为了更清晰的显示查询结果,有时需要改变列标题的显示样式,有时需要改变显示的数据。使用列别名。字符串连接和算式表达式可达到目的 

            (1)使用列别名

                SELECT<>子句中,alias用于指定列或表达式的别名。通过使用列别名可以改变表达式的显示样式。如果别名有大小写之分,或者包含特殊字符或空格,那么别名上必须加""(英文双引号)

            

            2.使用字符串连接

            SELECT<>子句中,expression可以使用字符串连接,以显示更有意义的查询结果。使用“||”操作符实现字符串连接。连接的字符串上要使用''(英文单引号)

            

            3.使用算术表达式

              SELECT<>子句中,expression可以使用含有加减乘除运算符的算术表达式,运算次序与数学上的规定一致,若要改变运算次序,也可以使用括号

            

            空值处理

            空值(NULL)用来在数据库中表示未知或未确定的值,任何数据类型的列,只要没有使用非空(NOT NULL)或主键(PRIMARY KEY)完整性限制,都可能出现控制(NULL)

            空值(NULL)没有数据类型,在oracle数据库中表示未知或未确定的值,无论是数字类,文本类,或者日期类,都可以用同一的空值NULL表示

            1.空值null的形成

            通过使用SQL语句INSERT插入数据或UPDATE来修改数据时,可以在表中某列形成空值(NULL)。

            2.空值(null)参与运算

            当空值(NULL)参与运算时,如果空值(null)出现在算术表达式中,其运算结果也为NULL,如果空值NULL出现在字符串连接表达式中,ORALCE将其作为空串即等价于零个字符串处理

            oracle提供了3个函数

            (1)NVL(expression,expr2)其中expr1与expr2为函数表达式,可以是任意oracle内部数据类型,但expr1与epxr2数据类型必须匹配,NVL()功能为,如果参数表达式expr1值为null,则nvl()函数返回expr2的值:如果参数表达式expr1值不为null,则nul()函数返回参数表达式expr1的值

               (2)NVL2(expr1,expr2,expr3)expr1,expr2,expr3

                   expr1的值为null,返回expr3的值  expr1的值不为null,则返回expr2的值(expr1,expr2,expr3数据类型匹配且为oralce内部类型)

                (3)函数COALESCE()

                COALESCE(expr1[ , expr2 ].....)expr1,expr2,expr3数据类型匹配且为oralce内部类型,函数 功能为:返回参数列表中的第一个非空值,如果所有表达式都是空值,最终将返回一个空值。



             4.2条件查询

            使用WHERE子句可以指定约束条件。

            SELECT<*/expression1 [AS alias1],..........> FROM talbe [WHERE condition(s) ]

            WHERE用于指定条件,condition(s)给出具体的条件表达式。当条件表达式取TRUE值时,会检索相应行的数据:当条件表达式为FALSE值时,则不会检索该行数据

                           WHERE子句中常见的比较条件

   =         等于    

    >        大于

    >=       大于等于

    <        小于

    <=        小于等于

    <>.!=        不等于

   

    包含测试    

    IN        在指定集合中

    NOT IN        不在指定集合中

    范围测试

    BETWEEN AND        在指定范围内

    NOT BETWEEN AND        不在指定范围内

    匹配测试

    LIKE        于指定模式匹配

    NOTLIKE        不与指定模式匹配

    NULL测试        

    IS NULL        是NULL值

    IS NOT NULL        不是NULL值

    逻辑运算符

    AND        逻辑与运算符        

    OR            逻辑或运算符

    NOT            逻辑非运算符

                

   2单一条件查询   

        单一条件查询:是指在WHERE子句condition(s)中,同时使用一个比较符构成查询条件

    (1)使用算术运算比较符

        

         

        (2)使用包含测试

            在where语句中使用IN条件,IN条件被用来显示一个组中的成员关系。当有一个满足条件的离散值列表时,会用到IN条件。所有这些有效值将被作为一个逗号分隔的列表放入圆括号中。所有这些值必须有相同的数据类型---数字 字符 日期。混合使用这些类型是不合理的,在测试列的时候 这些值必须有相同的数据类型。

        

        3使用范围测试

        WHERE 子句中使用BETWEEN-AND操作符用于指定一个范围测试条件,在BETWEEN操作符后指定较小的一个值,在AND操作符后指定较大的一个值。BETWEEN-AND条件可以用于数字,字符和日期型数据。

        

        4使用匹配测试LIKE

        WHERE子句中LIKE条件的查询,用于数据的查找模式。这些模式是使用通配符指定的,通配符中用于LIKE条件。可以使用一种模式类匹配测试任意一种主要数据类型(文本数字日期)的一个列

        %百分号       表示0个或多个字符

        _下划线        表示单个字符

        


        5使用空值测试IS NULL

        WHERE子句中使用IS NULL条件,空值(NULL)用来在数据库表示实际值未知或未确定的情况  必须将条件写为IS NULL,任何数据类型的值只要没有使用非空NUT NULL或主键PRIMARY KEY完整性限制,都可能出现空值。


       复合条件查询

       1.分别使用逻辑运算符AND,OR,NOT

        

        

        

        2组合使用逻辑条件

        在逻辑运算符中AND,OR,NOT中,NOT优先级最高,AND其次,OR最低,并且他们优先级低于任何一种操作符,要改变优先级则需要使用括号

        

        3记录排序

        执行SELECT语句时,若没有指定显示查询结果数据行的先后顺序,此时会按照表中数据插入的先后顺序来显示数据行。但在实际应用中,经常需要按特定的顺序排列数据。使用含有OREDR BY子句的SELECT语句可以达到目的

           SELECT <*/expression1 [AS alias1],......> FROM  table [ WHERE condition(s) ]  [ORDER BY expressino1 [ AS1 | DESC] ,.........];

        ORDER BY 子句的expression用于指定排序所依据的列或表达式,ASC关键字指定进行升序排序(默认),DESC关键字指定进行降序排序.

          (1).按单一序列排序

                1升序排序 按照ORDER BY子句的expression指定的列或表达式的值,从小到大排列数据行,在ORACLE数据库中,当按升序排序时,如果指定的排序列包含有NULL值的记录行,那么这些记录行会排列到最后面

                

                升序排序可省略ASC

                

            (2)降序排序

                降序排序是按照ORDER BY子句的expression指定的列或表达式的值,从大到小排列数据行,在ORACLE数据库中,当按降序排序时,如果所指定的排序列包含有NULL值的记录行,那么这些记录行会排列在最前面.

                  如果在SELECT子句中为列或表达式指定了别名,那么当执行排序操作时,既可以使用列或表达式进行排序,也可以使用列或表达式别名进行排序,如果列名或表达式名称较长,那么使用列位置序号排序可以缩短排序语句的长度。

            使用列序号

            

            使用列别名

            

            (2)按多列排序

                

            4.4分组查询

            查询结果中的数据可以是原表整个列中数据分组统计值。比如经常需要统计不同专业的学生人数,教师的平均工资,教师的工资总和等,通过使用列(Agfgregate)函数。GROUP BY子句。以及HAVING子句来共同完成

           SELECT <*/expression1 [AS alias1],....>  FROM table  [WHERE condition(s) ] [GROUP BY expression1,......] [HAVING condition(s) ];

            SELECT 子句中 ,expressio用于指定选择列表中的列或表达式,其中可以包含列函数,用有指定分组函数:GROUP BY子句中,expression用于指定分组表达式,HAVING子句中,condition用于指定限制分组结果的条件

            (1)列函数及其应用

            表中的数据使用列函数进行统计,列函数会检查列中的所有数据,原表中的每个行总是形成一个单行的统计结果

                                                    列函数概述

用于字符。数值。日期型数据的列函数

MAX (column)       列中的最大值

MIN (column)       列中的最小值

COUNT(*)    表中行的总数

COUNT(COLUMN)    列不为null的行

COUNT(distince column)  Column指定列中 相异值的数量

只用于数值型数据的列函数

SUM(column)        列中所有值的总和

AVG(column)        列中所有值的平均数

STDDEV(column)         列的标准偏差

VARIANCE        列的方差


        

        

        

        

        4.2GROUP  BY子句

        通过使用GROUP BY子句,可以在表中达到数据分组的目的

        在GROPOUP BY子句中,expression用于指定分组表达式,可以指定一个或多个表达式作为分组依据,当依据单列或单个表达式进行分组时,会基于列的每个不同值生成一个数据统计结果,当依据多列或多个表达式分组时,会基于多个列的不同值生成数据统计结果

        `

        

        

        

        4.3HAVING子句

        GROUP BY子句用于指定分组的依据,而HAVING子句则指定条件,用于限制分组显示结果。HAVING子句中condition用于限定分组结果的条件,HAVING子句必须与GROUP BY子句一起使用,而GROUP BY子句通常是单独使用的

        



            










     


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值