`
luzl
  • 浏览: 572280 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

DB2常用SQL示例,DB2 with的使用,DB2十六进制数据的使用

    博客分类:
  • DB2
阅读更多
下面是一些SQL的示例:
inner join/like
select count(*)  from tab1.s_employee a 
inner join inst1.s_emp_postn b on a.row_id = b.emp_id 
where not login like 'NO-LOGIN%'


大于,小于
select count(*)  from inst1.s_employee a
inner join inst1.s_emp_postn b on a.row_id = b.emp_id 
inner join inst1.s_postn c on b.position_id = c.row_id
where 
c.created > '2002-03-12-00.00.01.000000' 
and c.created < '2002-03-17-23.59.59.999999'
and not a.login like 'NO-LOGIN%' 


value的示例,如果c.yes为空则显示'NO'
select distinct a.login KERBEROS,
e.name POSITION ,
value(c.yes,'NO') WITH_COVERAGE 
from inst1.s_employee a
inner join inst1.s_emp_postn b on a.row_id = b.emp_id
inner join inst1.s_postn e on b.position_id = e.row_id 
left outer join (select 'YES' yes, position_id from inst1.s_accnt_postn) c on e.row_id = c.position_id 
where not a.login like 'NO-LOGIN%'


Left join,左全关联,左边的都显示出来,如果关联不到右边的显示为null
  
 select
       value(z.KERBEROS,Y.KERBEROS) MY_KERBEROS,
       value(Z.FIRST_NAME,Y.FIRST_NAME) MY_FIRST_NAME, 
       value(Z.LAST_NAME,Y.LAST_NAME) MY_LAST_NAME, 
       value(Z.REP_ID,Y.REP_ID) MY_REP_ID, 
       value(Z.DESK_NAME,Y.DESK_NAME) MY_DESK_NAME
     from
      ( 
        select
          a.login KERBEROS, 
          a.FST_NAME FIRST_NAME, 
          a.Last_Name LAST_NAME, 
          a.PAGER_PIN REP_ID, 
          c.X_POSITION_NAME DESK_NAME 
        from
          inst1.s_employee a, inst1.s_postn b, inst1.s_emp_postn d, inst1.s_postn c 
        where
          a.row_id = d.emp_id  and d.position_id = b.row_id and b.PAR_POSTN_ID = c.row_id  and  a.pager_pin is not null 
      ) y
      left outer join

      ( 
        select
          a.login KERBEROS, 
          a.FST_NAME FIRST_NAME, 
         a.Last_Name LAST_NAME,
          a.PAGER_PIN REP_ID, 
          c.X_POSITION_NAME DESK_NAME
        from
          inst1.s_employee a, inst1.s_postn b, inst1.s_postn c 
        where
          a.PR_POSTN_ID = b.row_id and b.PAR_POSTN_ID = c.row_id and a.pager_pin is not null 
      ) z
     on y.KERBEROS = z.KERBEROS
  where value(z.KERBEROS,Y.KERBEROS) not in ('something1','something2') 
  ORDER BY MY_REP_ID


这几个很简单就不解释了
select col1 from tab1 group by col1 having count(*) > 1

select * from tab1 where lcase(col1) = 'o''brien'

Some (non)-trivial examples:
In Sybase we frequently use temp. tables and stored procedure when we need to get a result from many tables.
For example,


DB2 中的临时表可以一个SQL表示(当然这只是一种,你可以创建session的临时表):
with query1 ( col1, col2, col3, ..., colN) as ( select ... ),
       query2 (col, ....) as (select .. from query1 left outer join ... on ... ),
       query3 (col, ....) as (select .. from query2 left outer join ... on ... ),
       query4 (col, ....) as (select .. from query3 left outer join ... on ... )
select  ..... from query4 where ...

---------------------------- one more query using the 'with' construct

with
  myKid (kid) as (
    select user_id from ... where ...
    union
    select kid from ... where ...
  ),
  myAccountIDs (AccountId) as (
    select distinct AccountId from myKid t, ... where ...
  ),
  mySomething (col1, col2, ...) as (
    select ... from ... where ...
  )
select ... from ... where ...
 

---------------------------- return 1 if something exists, otherwise return 0

with t1 (is_mgr) as (
  select 1 is_mgr from table (values 1) as t2
  where exists (select 1 from ... where ...)
  union
  select 0 is_mgr from table (values 0) as t2
)
select * from t1 order by is_mgr desc fetch first 1 rows only

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

select distinct ... , cast(NULL as char) as first_name, cast(NULL as char) as last_name
from tab1, table (select ... from ... where ... ) as T
where ... = cast(substr(T.user_id,1,locate('_', T.user_id) -1_ as int)

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

select col1 from tab1 group by col1 having count(*) > 1

select * from tab1 where lcase(col1) = 'o''brien'


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

获取排名前十行:

select name, salary from employee a
where 10 > (select count(*) from employee b where a.salary < b.salary)
order by salary desc

select name, salary from employee a order by salary desc fetch first 10 rows only


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

一个表自己跟自己关联,抽取满足一定条件的数据,下面是抽取童年同月同日生的员工,并且第一列的员工比第三列的员工员工号大:

select a.name, a.birthday, b.name
from employee a, employee b
where a.birthday = b.birthday
and a.emp_no > b.emp_no




用16进制工作,db2中16进制数据的使用和操作:

values( hex(1024) )
values ( X'3233' )
values ( cast(X'3233' as integer) + 2 )
values ( cast(X'3233' as char(2)) || ' - twenty three' )
values ( X'4672616E6B' )
-- Frank
values ( X'30' )
-- 0
values ( X'30313233' )
-- 0123

-- now let's get names with a digit 8 in them:
select name from siebel.s_org_ext 
where name like '%' || X'38' || '%'
fetch first 10 rows only
分享到:
评论

相关推荐

    DB2常用的命令

    - 使用命令`db2 –tf temp.sql &gt; runstats.sql`生成批处理文件`runstats.sql`,该文件包含了针对所有表的`runstats`命令。 - **自动生成建表语句**: - 在服务器上的`C:\sqllib\misc`目录中执行: ```sql db2 ...

    db2查看sql执行计划

    本文详细介绍了如何在DB2数据库中使用`DB2EXPLN`工具查看SQL执行计划的方法。通过对命令格式及参数的深入解析,读者可以更好地理解和掌握如何通过执行计划来优化SQL查询性能。希望本文能对DB2数据库使用者在日常工作...

    DB2常用SQL写法

    而`my_type`则是一个自定义结构数据类型,包含`username`、`department`和`salary`三个属性,类型模式为`db2sql`。如果需要修改这种类型,可以通过`ALTER TYPE`命令添加新的属性,但要注意,删除属性的方法在文档中...

    DB2数据库SQL注入语句

    本文将深入探讨DB2数据库中的SQL注入语句,以及如何通过这些语句来猜解数据库结构和数据。 首先,SQL注入的基础原理是通过在合法的SQL查询语句中嵌入恶意代码,以改变原本的查询逻辑。在给定的示例中,攻击者试图猜...

    DB2 SQL性能调优秘笈

    1. **使用EXPLAIN功能**:DB2提供了强大的EXPLAIN工具,用于展示SQL语句的执行计划。这有助于理解查询如何执行,并识别可能存在的问题。 2. **SQL Trace记录**:通过对关键SQL语句进行跟踪记录,可以收集到详尽的...

    DB2数据库和SQL Server数据库jdbc连接示例

    总的来说,这个示例提供了使用Java通过JDBC接口连接和操作DB2和SQL Server数据库的基础知识。开发者可以通过这个示例学习如何在实际应用中建立数据库连接、执行SQL查询,并处理返回的结果集。这有助于提高Java开发...

    DB2常用函数(初学者必备)

    本文将深入探讨DB2中的常用函数,这些函数覆盖了类型转换、日期时间操作、字符串处理以及数学计算等多个方面,对于初学者来说,掌握这些函数能够极大地提升在DB2环境下的数据操作效率。 ### 类型转换函数 DB2提供...

    DB2常用命令,DB2 v8数据库基础

    而"02_DB2 常用命令.doc"则详细解释了上述提到的一些常用命令的用法和示例,帮助初学者快速上手。 学习DB2 v8数据库基础不仅包括命令行操作,还包括理解SQL语言、事务处理、存储过程、触发器、视图以及索引等概念。...

    DB2数据库SQL复制过程参考

    ### DB2数据库SQL复制过程详解 #### 一、概述 本文档主要介绍DB2数据库的SQL复制过程,包括从创建数据库到配置复制环境的具体步骤。本文档基于DB2 v9.1版本,并在Windows XP环境下进行测试。通过本文档的学习,读者...

    AS400_DB2_SQL.rar_AS400 db2 sql mod_as400 db2 da_as400 sql_db2

    压缩包中的"AS400 DB2 SQL参考"很可能是一份详细的指南,包含了AS400 DB2 SQL语法、最佳实践以及示例代码,对于学习和使用AS400系统的DB2 SQL来说是非常宝贵的资源。 总的来说,AS400 DB2 SQL涉及的内容广泛且深入...

    db2sql速查手册

    它提供了丰富的示例和实用技巧,帮助用户更好地掌握DB2 SQL语言,从而提高工作效率和数据处理能力。无论是初学者还是经验丰富的专业人士,都能从中受益匪浅。随着DB2的不断发展,这本手册也会持续更新,确保内容始终...

    DB2游标及动态SQL

    通过以上的详细介绍,我们可以看出,DB2中的游标、动态SQL以及异常处理等功能为开发者提供了丰富的工具来处理复杂的数据操作场景。合理利用这些功能可以帮助我们更好地管理和控制数据库操作,提高程序的稳定性和性能...

    DB2 SQL Reference.pdf

    本书按照不同的主题进行了组织,主要包括系统命令、数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)等部分,每个部分下面又细分为多个子章节,详细介绍各个命令的用法、参数、示例等。 ### 四、核心内容...

    DB2 SQL复制详细手册

    DB2 SQL复制是一种高效的数据同步技术,用于在不同的DB2实例之间实现实时或近实时的数据复制。这个详细手册旨在帮助新手和经验丰富的DBA理解并配置DB2的SQL复制功能,即使没有深入的DB2知识也能按照指南操作。本文将...

    DB2 日期数据库的sql语句

    本文将详细介绍如何在DB2数据库中使用SQL语句来获取当前日期、当前时间和当前时间戳,并展示如何计算前一天的日期。 #### 获取当前日期(Current Date) 在DB2中,`CURRENTDATE`函数可以用来获取当前系统的日期。...

    DB2 SQL语句性能分析方法

    为了更好地进行性能分析,可以将这些文本数据导入到DB2表中,并使用SQL查询来获取更有价值的信息,例如执行时间最长的语句、不同语句的执行频度等。 #### 五、转换工具源代码示例 下面提供了一个简单的C语言程序...

    DB2_SQL入门

    ### DB2_SQL入门知识点概述 #### 一、DB2简介 - **DB2**是由IBM公司开发的一款关系型数据库管理系统(RDBMS),广泛应用于企业级数据处理领域。 - **DB2**支持多种操作系统,如Windows、Linux、Unix等,并且能够高效...

    DB2SQL0000-32999

    ### DB2SQL0000-32999:IBM DB2SQL信息解析 #### 概述 在IBM DB2数据库系统中,错误代码和警告信息被广泛应用于诊断问题和进行故障排查。DB2SQL0000至32999这一系列的SQL错误代码,覆盖了从DB2 10.5版本起,在...

Global site tag (gtag.js) - Google Analytics