从数据表中检索信息

本章内容包括:

  • 使用SELECT语句从一个或多个数据库表中检索信息
  • 使用算术表达式进行计算
  • 使用WHERE子句对行进行过滤
  • 对从表中检索到的行进行排序

一、单表查询数据

  1. SELECT语句用于从数据库表中检索信息。

    select * from customers;    //选择一个表中所有的列

    select c.name from cutomers c;   //选择表中的某一列

  2. 使用WHERE子句过滤行

    在查询中可以使用WHERE子句来指定想要检索的行。

    select * from customers where customer_id = 2;

  3. 理解行标识符

    oracle数据库中的每一行都有一个唯一的行标识符ROWID。Oracle数据库内部使用行标识符来存储行的物理位置。rowid通常被称为伪列。不会出现在表结构中

  4. 理解行号

    oracle的另一个伪列是ROWNUM,它返回每一行在结果集中的行号

  5. SQL> select rowid,rownum,f.serial_no,f.code_id from fault_barrier_base_code f where rownum < 20;
    ROWID                                                                                ROWNUM SERIAL_NO CODE_ID
    -------------------------------------------------------------------------------- ---------- --------- ----------------------------------------
    AAGlTlAAOAAJEhUAAA                                                                        1         5 YJ_SOAP
    AAGlTlAAOAAJEhUAAB                                                                        2         6 SC_SOAP
    AAGlTlAAOAAJEhUAAC                                                                        3         9 88
    AAGlTlAAOAAJEhUAAD                                                                        4        22 12
    AAGlTlAAOAAJEhUAAE                                                                        5        23 52
    AAGlTlAAOAAJEhUAAF                                                                        6        24 82
    AAGlTlAAOAAJEhUAAG                                                                        7        25 94
    AAGlTlAAOAAJEhUAAH                                                                        8        29 21
    AAGlTlAAOAAJEhUAAI                                                                        9        30 REPLACE_NOCHECK_SECROSCODE
    AAGlTlAAOAAJEhVAAA                                                                       10        10 89
    AAGlTlAAOAAJEhVAAB                                                                       11        13 RECORD_MONITOR_LOG
    AAGlTlAAOAAJEhVAAC                                                                       12        14 92
    AAGlTlAAOAAJEhVAAD                                                                       13        15 DEFAULT_URL_FALG
    AAGlTlAAOAAJEhVAAE                                                                       14        32 98
    AAGlTlAAOAAJEhVAAF                                                                       15        37 CHECK_DEFAULT_SECRESCODE_DESC
    AAGlTlAAOAAJEhVAAG                                                                       16        38 NOT_FAULT_BARRIER_ENABLE
    AAGlTlAAOAAJEhVAAH                                                                       17        39 NO_FAULT_BARRIER_CRON
    AAGlTlAAOAAJEhVAAI                                                                       18        40 GROUP_SPECIAL_MSISDN
    AAGlTlAAOAAJEhVAAJ                                                                       19        41 GROUP_SPECIAL_BIPCODE_ACTIVECODE
    19 rows selected
  6. 执行算术运算

    Oracle在SQL语句中使用算术表达式来进行算术运算,包括+、-、*、/

    日期运算:在2016年6月6日上加上一天

  7. SQL> select to_date(sysdate) + 7  as "one week later" from dual;
    one week later
    --------------
    2016/6/13
    SQL> select to_date(sysdate) - 7  as "one week ago" from dual;
    one week ago
    ------------
    2016/5/30
  8. 算术运算中也支持表的列操作。
  9. 禁止显示重复行 关键字DISTINCT
  10. 比较值,用 =、<>或!=、<、>、<=,>=,ANY(与任何值比较),ALL
  11. 使用SQL操作符,LIKE(模糊查询),IN(范围查询),BETWEEN(范围查询),IS NULL,IS NAN(非数字),IS INFINITE
  12. 使用逻辑操作符 x AND y(当x和y都为true时,返回true),x OR y(当x和y中有一个为true,就返回true),NOT x(如果x为false,则返回true);
  13. 使用ORDER BY 子句对行进行排序

    使用ORDER BY子句可以对查询检索出来的行进行排序。ORDER BY子句必须位于FROM或WHERE子句(如果提供了WHERE子句)之后。

二、执行两个表的SELECT语句

  1. 连接可以用于连接任意多个表。连接数 = 查询中使用的表的总数 - 1
  2. select * from fault_barrier_code;
    select * from fault_barrier_sec_rspcode sec,fault_barrier_code fc
     where sec.bip_code = fc.bip_code
     and sec.act_code = fc.act_code
     and sec.plat_code = fc.plat_code;

3.  连接条件和连接类型

根据连接中使用的操作符的不同,连接条件(join condition)可以分为两类:

  • 等连接(equijion)在连接中使用操作符。
  • 不等连接(non-equijoin)在连接中使用除等号之外的操作符如,<,>,BETWEEN

    连接有3中类型

  • 内连接(inner join)只有当连接中的列包含满足连接条件的值时才会返回一行。
  • 外连接(outer join)即使连接条件中的一列包含空值也会返回一行
  • 自连接(self join)返回连接到同一张表中的行
时间: 2024-11-08 21:50:55

从数据表中检索信息的相关文章

C#_从DataTable中检索信息

C#_从DataTable中检索信息 存在于内存中的虚拟表DataTable,绑定在数据显示控件后,如果想在再检索其中某些信息,可以利用DataTable.Select方法进行检索,避免了重复的读取数据库.Select方法共有4个重载方法. 先创建一个DataTable: DataTable dt = new DataTable("Student");//DataTable对象,表名时Student //开始增加列头 dt.Columns.Add("编号",type

使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据

Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型 类型       大小(单位:字节) TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G Oracle LOB介绍 LOB,即Large Objects(大对象),是用来存储大量的二

MySQL查询数据表中数据记录(包括多表查询)

MySQL查询数据表中数据记录(包括多表查询) MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: select selection_list // 要查询的内容,选择哪些列 from table_list // 从什么表中查询,从何处选择行 where primary_

默认情况下,不使用of子句表示在select所有的数据表中加锁(转)

Select …forupdate语句是我们经常使用手工加锁语句.通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作.同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍. 借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作.本篇我们就来介绍一下这个子句的用法和功能. 下面是采自Oracle官方文档<SQLLanguage Reference>中关于for update子句的说明:(请双击点开图片查看) 从for

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i

用python库openpyxl操作excel,从源excel表中提取信息复制到目标excel表中

现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法长时间做某种重复性的枯燥操作.想象这样一个场景,我们有个几千行的表要填,需要根据姓名输入其对应的身份证号,但之前我们已经做过一个类似的表,同样的一些人的姓名跟身份证号是完整的,那么我们就需要通过一个个查找姓名,然后把身份证号码复制到我们当前要做的表里去. 当我日复一日重复着这些操作的时候,我都很想有

c#用NPOI将excel文件内容读取到datatable数据表中

将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable 1 /// <summary> 2 /// 将excel文件内容读取到DataTable数据表中 3 /// </summary> 4 /// <param name="fileName">文件完整路径名</param> 5 /// <param name=

code first网站发布后数据表中没有数据问题

code first网站发布后数据表中没有数据问题 (1).将internal sealed class Configuration类访问修饰符改为public  class Configuration : DbMigrationsConfiguration<SimpleNews.EntityModels.SimpleNewsContext> (2).在Global文件的Start()方法中加入下面一段代码 Database.SetInitializer( new MigrateDatabas

Oracle使用游标删除所有用户数据表中的所有记录脚本

应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用 测试结果:经查询已删除所有数据 存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自行删除或者过滤掉该表,见下图 操作办法:直接将下面的脚本内容复制到PQSQL中执行即可 --Oracle使用游标删除所有用户数据表中的所有记录脚本 declare mystring NVARCHAR2(1000):=''; --定义要输出的字符串变量 cursor mycursor is --定义游