`
mncc
  • 浏览: 54250 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【TOM旧博客内容转移】一些简单的Oracle语句 from 20080617

阅读更多

 

原来TOM上的blog挂掉了,现在准备看能找到多少。。。准备把技术相关的全部转到JAVAEYE上边来。。。恨死TOM了。。

 

 

原发表日期:2008-06-17

 

 

 

 

 


一些简单的Oracle语句
   
   

在南昌闲得无聊,幸亏还有个Oracle,就算是复习拉!

 

SELECT TABLE_NAME FROM USER_TABLES;

查看用户表名。

 

层次化查询,我原来写的的博客Oracle层次化查询有地方不太正确:这个才是能用的

SELECT * FROM table_name
 START WITH start_column=?
  CONNECT BY PRIOR column_father_name=column_name;

如果要以其中的一个表为start,
那么在后边的connect by子句中在另一个表上要加上PRIOR,
PRIOR的意思是引用父行。

 

分组查询
SELECT COUNT(x), x FROMtable_name
 GROUP BY ROLLUP(x);

在最后会生成统计列。
SELECT COUNT(x), x FROMtable_name
 GROUP BY CUBE(x);

在最前会生成统计列。

 

ORACLE文字函数:

 

CONCAT合并文字
SQL> select concat('Date:',sysdate) from dual;
CONCAT('DATE:',SYSDATE)
-----------------------
Date:15-6月 -08

 

INITCAP字符串中所有单词首字母大写
SQL> select INITCAP('my heart will go on!') from dual;
INITCAP('MYHEARTWILLGOON!')
---------------------------
My Heart Will Go On!

 

INSTR查询字符在字符串的位置,从1开始,如果查找不到则返回0
SQL> SELECT INSTR('my heart will go on!','m') FROM DUAL;
INSTR('MYHEARTWILLGOON!','M')
-----------------------------
                            1
SQL> SELECT INSTR('my heart will go on!','l') FROM DUAL;
INSTR('MYHEARTWILLGOON!','L')
-----------------------------
                           12
SQL> SELECT INSTR('my heart will go on!','Z') FROM DUAL;
INSTR('MYHEARTWILLGOON!','Z')
-----------------------------
                            0

LENGTH得到字符串长度
SQL> SELECT LENGTH('my heart will go on!') FROM DUAL;
LENGTH('MYHEARTWILLGOON!')
--------------------------
                        20

LPAD如果字符串不够一定的长度则从左边填充,
长度大于指定长度的话右边的要截去。
默认最后一个参数不写的话用空格代替
SQL> SELECT LPAD('NANXIAOQIANG', 20, '*') FROM DUAL;
LPAD('NANXIAOQIANG',20,'*')
---------------------------
********NANXIAOQIANG
SQL> SELECT LPAD('NANXIAOQIANG', 5, '*') FROM DUAL;
LPAD('NANXIAOQIANG',5,'*')
--------------------------
NANXI
SQL> SELECT LPAD('NANXIAOQIANG', 20) FROM DUAL;
LPAD('NANXIAOQIANG',20)
-----------------------
        NANXIAOQIANG
RPAD同上一个函数,不过是从右至左填充
SQL> SELECT RPAD('NANXIAOQIANG', 20) FROM DUAL;
RPAD('NANXIAOQIANG',20)
-----------------------
NANXIAOQIANG
SQL> SELECT RPAD('NANXIAOQIANG', 20, '*') FROM DUAL;
RPAD('NANXIAOQIANG',20,'*')
---------------------------
NANXIAOQIANG********
SQL> SELECT RPAD('NANXIAOQIANG', 5, '*') FROM DUAL;
RPAD('NANXIAOQIANG',5,'*')
--------------------------
NANXI
SQL> SELECT RPAD('NANXIAOQIANG', 20, '<!>') FROM DUAL;
RPAD('NANXIAOQIANG',20,'<!>')
-----------------------------
NANXIAOQIANG<!><!><!

 

最简单的:
转换大小写和去除空格
其中TRIM会把Tab和空格全部去掉
SQL> SELECT LOWER('NANXIAOQIANG') FROM DUAL;
LOWER('NANXIAOQIANG')
---------------------
nanxiaoqiang
SQL> SELECT UPPER('nanxiaoqiang') FROM DUAL;
UPPER('NANXIAOQIANG')
---------------------
NANXIAOQIANG
SQL> SELECT TRIM('  nanxiaoqiang            ') FROM DUAL;
TRIM('NANXIAOQIANG')
--------------------
nanxiaoqiang


这个是TRIM的另外一种用法
SQL> SELECT TRIM('A' FROM 'ASDZXCCXZDSA') FROM DUAL;
TRIM('A'FROM'ASDZXCCXZDSA')
---------------------------
SDZXCCXZDS


以下两个其实是去除最左边和最右边的定义字符串
SQL> SELECT RTRIM('ASDZXCZXCASD','ASD') FROM DUAL;
RTRIM('ASDZXCZXCASD','ASD')
---------------------------
ASDZXCZXC
SQL> SELECT LTRIM('ASDZXCZXCASD','ASD') FROM DUAL;
LTRIM('ASDZXCZXCASD','ASD')
---------------------------
ZXCZXCASD

 

很诡异的一个方法,能分辨发音,
不过仅仅限于英文。。。中文还是没有办法的
SQL> SELECT SOUNDEX('SHEEP'), SOUNDEX('SHIP') FROM DUAL;
SOUNDEX('SHEEP') SOUNDEX('SHIP')
---------------- ---------------
S100             S100
SQL> SELECT SOUNDEX('朱'), SOUNDEX('猪') FROM DUAL;
SOUNDEX('朱') SOUNDEX('猪')
------------- -------------

什么都查不出来

 


查询时间的函数


总共有三个:CURRENT_DATE、CURRENT_TIMESTAMP、SYSDATE
CURRENT_DATE默认不会显示完整很奇怪
SQL> SELECT CURRENT_DATE FROM DUAL;
CURRENT_DATE
------------
2008-6-16 8:
用左补全也不行
SQL> SELECT LPAD(CURRENT_DATE, 20) FROM DUAL;
LPAD(CURRENT_DATE,20)
----------------------------------------
          16-6月 -08
只能用AS一个字段名称的方法,注意如果有空格的话要用双引号
SQL> SELECT CURRENT_DATE AS "THIS IS CURRENT DATE FEOM DUAL" FROM DUAL;
THIS IS CURRENT DATE FEOM DUAL
------------------------------
2008-6-16 8:48:32
CURRENT_TIMESTAMP:这个比较全,最后的+08:00应该是指的是时区
SQL> SELECT CURRENT_TIMESTAMP FROM DUAL;
CURRENT_TIMESTAMP
--------------------------------------------------------------------------------
16-6月 -08 08.48.47.937000 上午 +08:00
这个是最常用的,一般在学的时候老师都是讲这个的:
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-----------
2008-6-16 8
查找时区,不知道为什么,我查出来的总是+00:00,可是CURRENT_TIMESTAMP上边显示的是+08:00:
SQL> SELECT DBTIMEZONE FROM DUAL;
DBTIMEZONE
----------
+00:00


得到本地的时间:
SQL> SELECT LOCALTIMESTAMP FROM DUAL;
LOCALTIMESTAMP
--------------------------------------------------------------------------------
16-6月 -08 09.09.08.843000 上午

 

数字函数:


ROUND和TRUNC的区别:
SQL> SELECT ROUND(11.345,2), ROUND(123456,-2), TRUNC(12.345,2), TRUNC(123456,-2) FROM DUAL;
ROUND(11.345,2) ROUND(123456,-2) TRUNC(12.345,2) TRUNC(123456,-2)
--------------- ---------------- --------------- ----------------
          11.35           123500           12.34           123400

 

系统环境
SQL> SELECT UID, USER FROM DUAL;
       UID USER
---------- ------------------------------
        57 SCOTT

分享到:
评论

相关推荐

    oracle初学者必会的sql语句总结

    根据提供的标题、描述、标签及部分内容,我们可以整理出Oracle初学者必须掌握的一些SQL语句及相关知识点,主要包括数据查询、表的创建与管理、数据插入、更新与删除等基础操作。 ### 1. 基本的数据查询语句 - **...

    Oracle大师Tom_Kyte的好书,鼎力推荐

    Oracle大师Tom_Kyte的好书,鼎力推荐

    tom kyte oracle pdf

    ### Tom Kyte 的《Oracle 对于专业人士》书籍概览 **书名:** Oracle 对于专业人士 (Expert One-on-One Oracle) **作者:** Tom Kyte **出版社:** DiaSoft **出版年份:** 2003 年 **页数:** 672 页 **国际...

    TomKyte[1].Effect.Oracle.Design.zip_oracle_oracle高效设计_tom ch01bb

    《Tom Kyte的Oracle高效设计》是一本深受数据库管理员和开发者推崇的经典著作,它深入探讨了如何优化Oracle数据库以实现卓越的性能。Tom Kyte,被誉为Oracle界的权威,以其深厚的专业知识和实践经验,为读者提供了...

    TOM大师脚本

    "Tom大师脚本"是一个专为Oracle数据库设计的高级脚本集合,由Oracle社区中的知名专家Tom Kyte,也就是我们通常所说的"TOM"所编写。Tom Kyte以其深入的数据库知识和实践经验闻名,他的工作对许多数据库管理员和开发...

    ask tom Oracle学习

    大名鼎鼎的tom先生的问题总结,2011年总结的内容,很好很强大

    ORACLE 多表查询与数据修改

    为了更好地理解和实践本次实验的内容,我们将首先创建三个表:学生表(stu)、课程表(course)和选课表(sel),并为这些表填充一些测试数据。 1. **学生表(stu)** - 字段:stuNo (主键)、stuName 2. **课程表...

    Oracle expert one-on-one

    《Oracle专家一对一》是Oracle领域的权威著作,作者Oracle Tom以其深厚的专业素养,全面解析了Oracle数据库的核心知识。这本书深入浅出地介绍了Oracle的物理结构、逻辑结构以及调优技术,对于想要深入理解Oracle...

    Oracle各种select查询语法

    1、简单select查询语句 select * from emp; 该查询语句将查询emp表中的所有字段。 2、where子句 select * from emp where deptno=30; 该查询语句将查询emp表中deptno字段等于30的所有记录。 3、逻辑运算符 ...

    oracle考试题目.docx

    根据提供的文档内容,我们可以归纳出一系列关于Oracle数据库的基础知识点及相关操作。下面将详细解析文档中的问题及答案: ### 一、理论部分 1. **为什么要给表指定主键?** - 主键确保了表中每一行记录的唯一性...

    全面解析HQL语句 非常详细直接的HQL语句的功能介绍

    - `from Person where name like "tom%"`:筛选出名字以“tom”开头的所有`Person`实例。 - `from Cat cat, Cat rival where cat.mate = rival.mate`:联接两个`Cat`实体,并通过`mate`属性进行匹配。 ### 6. ...

    ORACLE学习文档

    * 插入记录:使用 `INSERT INTO` 语句插入新记录,例如 `INSERT INTO student VALUES ('Tom', 18)` * 查询记录:使用 `SELECT` 语句查询所有记录,例如 `SELECT * FROM student` * 查看表结构:使用 `DESC` 语句查看...

    hql语句语法详解hql语句

    ### HQL语句语法详解 HQL(Hibernate Query Language)是一种面向对象的查询语言,它提供了灵活而强大的机制来查询数据库中的数据,并将其映射到Java对象上。本篇文章将根据给定的信息深入探讨HQL的基本语法结构...

    常用的SQL语句.pdf

    【SQL语句基础】 SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言,它包含了数据查询、数据更新、数据插入和数据删除等操作。SQL并非一种完整的编程语言,而是一种特殊的、高度结构化的查询...

    oracle concepts

    虽然文档中的一些内容可能已经随着技术的发展而有所变化,但文档所包含的核心概念和基础知识依然是数据库管理员和开发者入门Oracle数据库的基础。 最后,文档也强调了遵守版权和知识产权法律法规的重要性,未经授权...

    如何切割tomtom地图

    在使用TomTom GPS导航设备时,有时可能会遇到购买的地图数据包过大,无法一次性完整安装到设备上的情况。本文将详细讲解如何使用TomTom HOME软件来分割和安装大容量的国外地图,以便适应设备的存储限制。 首先,...

    oracle学习有用网址

    Julian Dyke是一位知名的Oracle专家,他的博客涵盖了Oracle数据库的多个方面,包括性能优化、故障排除、SQL技巧等高级主题。通过阅读Julian Dyke的文章,你可以深入了解Oracle数据库内部机制,学习如何更高效地管理...

    网页版Tom猫

    网页版Tom猫是一款基于Web技术实现的互动游戏,它允许用户在浏览器上体验与经典卡通角色Tom猫互动的乐趣。这个游戏的实现主要依赖于HTML、CSS和JavaScript等前端技术,以及可能的一些后端支持来处理用户交互和数据...

    HQL语句大全HQL语句大全

    ### HQL语句详解 #### 一、HQL简介 HQL(Hibernate Query Language)是Hibernate框架中的查询语言,它提供了面向对象的方式来进行数据库查询。HQL语法接近于SQL但又有所不同,它允许开发者以面向对象的方式来表达...

Global site tag (gtag.js) - Google Analytics