`
xiaojunhu
  • 浏览: 31791 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

oracle SQL集锦

 
阅读更多

下面的语句都是本人整理出的,并且都在oracle XE上测试通过。下边的函数都没有做说明,相信大家都知道怎么用了,呵呵。

1普通的查询语句,例如:
SELECTlast_name,department_idFROMemployees;
2查询视图
SELECTemployee_id,last_name,job_title,department_name,country_name,
region_name
FROMemp_details_view;
3更换列名查询
SELECTemployee_id"EmployeeIDnumber",last_name"Employeelastname",
first_name"Employeefirstname"
FROMemployees;
4联接查询
自然联接:要求两个表中的公共列必须有相同的名称和结构类型,否则报错。
SELECTemployee_id,last_name,first_name,department_id,
department_name,manager_id
FROMemployeesNATURALJOINdepartments;
查询三张或以上表时用USING,前提是用来连接两张表的列必须名称相同。
SELECTe.employee_id,e.last_name,e.first_name,e.manager_id,department_id,
d.department_name,d.manager_id
FROMemployeese
JOINdepartmentsdUSING(department_id);
联接时加上WHERE子句。
SELECTe.employee_id,e.last_name,e.first_name,e.department_id,
d.department_name,d.manager_id,d.location_id,l.country_id
FROMemployeese
JOINdepartmentsdONe.department_id=d.department_id
JOINlocationslONd.location_id=l.location_id
WHEREl.location_id=1700;
自我联接:
SELECTe.employee_idemp_id,e.last_nameemp_lastname,m.employee_idmgr_id,
m.last_namemgr_lastname
FROMemployeese
JOINemployeesmONe.manager_id=m.employee_id;
LEFTOUTERJOIN:左表中所有的记录即使在右表中没有联接的都会被查询出来。
SELECTe.employee_id,e.last_name,e.department_id,d.department_name
FROMemployeeseLEFTOUTERJOINdepartmentsd
ON(e.department_id=d.department_id);
RIGHTOUTERJOIN:右表中所有的记录即使在左表中没有联接的都会被查询出来。
SELECTe.employee_id,e.last_name,e.department_id,d.department_name
FROMemployeeseRIGHTOUTERJOINdepartmentsd
ON(e.department_id=d.department_id);
FULLOUTERJOIN:左右表中的记录全部被查询出来。
SELECTe.employee_id,e.last_name,e.department_id,d.department_name
FROMemployeeseFULLOUTERJOINdepartmentsd
ON(e.department_id=d.department_id);

5绑定变量查询:Oracle将已解析、已编译的SQL连同其他内容存储在共享池中,这是SGA中一个非常重要的存储结构(内存结构主要分为SGA和PGA)。而绑定变量查询在Oracle里执行时只编译一次,随后就会把这个查询计划存储在一个共享池中以便重用,即所谓的软解析。具体的使用方法如下:
SELECT*FROMemployeesWHEREemployee_id=:employee_id
6查询虚拟列:所谓的虚拟列在Oracle里类似表格的列,但并非存储在表中。查询虚拟列时将返回一个值,因此它又类似与函数。Oracle里的虚拟列有:ROWNUM,SYSDATE,andUSER。eg:
SELECTSYSDATE"NOW"FROMDUAL;
SELECTUSERFROMDUAL;
SELECTemployee_id,hire_date,SYSDATEFROMemployeesWHEREROWNUM<10;
7带函数查询:
UsingNumericFunctions:
SELECTemployee_id,ROUND(salary/30,2)"Salaryperday"FROMemployees;
SELECTemployee_id,TRUNC(salary/30,0)"Salaryperday"FROMemployees;
SELECTemployee_id,MOD(employee_id,2)FROMemployees;
Using
CharacterFunctions:
SELECTemployee_id,UPPER(last_name),LOWER(first_name)FROMemployees;
SELECTemployee_id,INITCAP(first_name),INITCAP(last_name)FROMemployees;
SELECTemployee_id,RTRIM(first_name)||''||LTRIM(last_name)FROMemployees;
SELECTemployee_id,TRIM(last_name)||','||TRIM(first_name)FROMemployees;
SELECTemployee_id,RPAD(last_name,30,''),first_nameFROMemployees;
SELECTemployee_id,SUBSTR(last_name,1,10)FROMemployees;
SELECTLENGTH(last_name)FROMemployees;
SELECTemployee_id,REPLACE(job_id,'SH','SHIPPING')FROMemployees
WHERESUBSTR(job_id,1,2)='SH';
UsingDateFunctions:
SELECTemployee_id,TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE))"MonthsEmployed"
FROMemployees;
SELECTemployee_id,EXTRACT(YEARFROMhire_date)"YearHired"FROMemployees;
SELECTEXTRACT(YEARFROMSYSDATE)||EXTRACT(MONTHFROMSYSDATE)||
EXTRACT(
DAYFROMSYSDATE)"CurrentDate"FROMDUAL;
SELECTemployee_id,hire_date,ADD_MONTHS(hire_date,3)FROMemployees;
SELECTemployee_id,hire_date,LAST_DAY(hire_date)"Lastdayofmonth"
FROMemployees;
SELECTSYSTIMESTAMPFROMDUAL;
UsingConversionFunctions:
SELECTTO_CHAR(SYSDATE,'DD-MON-YYYYAD')"Today"FROMDUAL;
SELECTTO_CHAR(SYSDATE,'FMMonthDDYYYY')"Today"FROMDUAL;
SELECTTO_CHAR(SYSDATE,'MM-DD-YYYYHH24:MI:SS')"Now"FROMDUAL;
SELECThire_date,TO_CHAR(hire_date,'DS')"ShortDate"FROMemployees;
SELECThire_date,TO_CHAR(hire_date,'DL')"LongDate"FROMemployees;
SELECTTO_CHAR(EXTRACT(YEARFROMSYSDATE))||
TO_CHAR(EXTRACT(
MONTHFROMSYSDATE),'FM09')||
TO_CHAR(EXTRACT(
DAYFROMSYSDATE),'FM09')"CurrentDate"FROMDUAL;
SELECTTO_CHAR(CURRENT_DATE,'DD-MON-YYYYHH24:MI:SS')"CurrentDate"FROMDUAL;
SELECTTO_CHAR(salary,'$99,999.99')salaryFROMemployees;
SELECTTO_NUMBER('1234.99')+500FROMDUAL;
SELECTTO_NUMBER('11,200.34','99G999D99')+1000FROMDUAL;
SELECTTO_DATE('27-OCT-98','DD-MON-RR')FROMDUAL;
SELECTTO_DATE('28-Nov-0514:10:10','DD-Mon-YYHH24:MI:SS')FROMDUAL;
SELECTTO_DATE('January15,2006,12:00A.M.','Monthdd,YYYY,HH:MIA.M.')
FROMDUAL;
SELECTTO_TIMESTAMP('10-Sep-0514:10:10.123000','DD-Mon-RRHH24:MI:SS.FF')
FROMDUAL;
UsingAggregateFunctions:
SELECTCOUNT(*)"EmployeeCount"FROMemployeesWHEREmanager_id=122;
SELECTCOUNT(*)"EmployeeCount",manager_idFROMemployees
GROUPBYmanager_idORDERBYmanager_id
SELECTCOUNT(commission_pct)FROMemployees;
SELECTCOUNT(DISTINCTdepartment_id)FROMemployees;
SELECTMIN(salary),MAX(salary),AVG(salary),job_idFROMemployees
GROUPBYjob_idORDERBYjob_id;
SELECTRANK(2600)WITHINGROUP
(
ORDERBYsalaryDESC)"Rankof$2,600amongclerks"
FROMemployeesWHEREjob_idLIKE'%CLERK';
SELECTjob_id,employee_id,last_name,salary,DENSE_RANK()OVER
(PARTITION
BYjob_idORDERBYsalaryDESC)"SalaryRank(Dense)"
FROMemployeesWHEREjob_id='SH_CLERK';
SELECTemployee_id,salary,hire_date,STDDEV(salary)
OVER(ORDERBYhire_date)"StdDeviationofSalary"
FROMemployeesWHEREjob_id='ST_CLERK';
Using
NULLValueFunctions:
SELECTcommission_pct,NVL(commission_pct,0)FROMemployees;
SELECTphone_number,NVL(phone_number,'MISSING')FROMemployees;
SELECTemployee_id,last_name,commission_pct,salary,
NVL2(commission_pct,salary
+(salary*commission_pct),salary)income
FROMemployees;
UsingConditionalFunctions:
SELECTemployee_id,hire_date,salary,
CASEWHENhire_date<TO_DATE('01-JAN-90')THENsalary*1.20
WHENhire_date<TO_DATE('01-JAN-92')THENsalary*1.15
WHENhire_date<TO_DATE('01-JAN-94')THENsalary*1.10
ELSEsalary*1.05END"RevisedSalary"
FROMemployees;
SELECTemployee_id,job_id,salary,
DECODE(job_id,
'PU_CLERK',salary*1.05,
'SH_CLERK',salary*1.10,
'ST_CLERK',salary*1.15,
salary)"RevisedSalary"
FROMemployees;
分享到:
评论

相关推荐

    oracle SQL查询工具

    oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...

    Oracle Sql语句转换成Mysql Sql语句

    在数据库管理领域,Oracle SQL和MySQL SQL是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...

    Oracle SQL高级编程

    由于标题和描述是重复的且没有提供实质性的内容,我们无法从中得知具体的Oracle SQL高级编程知识点。但是,从标题我们可以推测该文档可能是关于如何使用Oracle数据库中的SQL语言进行高级编程。Oracle数据库是一个...

    Oracle Sql基础(beginning oracle sql中文版)

    Oracle SQL是数据库管理员和开发人员用来与Oracle数据库交互的语言,它是SQL标准的扩展,提供了许多特有的功能和优化。本资源“Oracle Sql基础(beginning oracle sql中文版)”旨在为初学者提供一个全面的Oracle ...

    Oracle SQL 官方文档

    Oracle SQL 是一种强大的数据库查询和编程语言,广泛用于管理和操作Oracle数据库系统。11g第二版(11G2)是Oracle的一个重要版本,提供了许多增强功能和优化。本官方文档集包括四份重要的参考资料,涵盖了Oracle SQL...

    Oracle-SQL.rar_oracle_oracle sql_sql

    在“Oracle-SQL.rar”这个压缩包中,包含了一份名为“Oracle SQL.ppt”的文件,这可能是一个PowerPoint演示文稿,用于详细讲解Oracle数据库的基础知识和SQL语言的使用。下面,我们将深入探讨一些Oracle SQL的基础...

    OracleSQLDeveloper

    Oracle SQL Developer 是一款由Oracle公司推出的免费数据库管理工具,它为数据库管理员(DBA)和开发人员提供了一个全面的集成环境,以便于管理和操作Oracle数据库。这个工具的强大之处在于其直观的用户界面和广泛的...

    Oracle SQL Developer 使用说明

    Oracle SQL Developer 是一款由Oracle公司推出的强大的数据库管理工具,它为数据库管理员(DBA)、开发者以及数据分析师提供了全面的功能,以高效地管理和操作Oracle数据库。本文档将深入讲解Oracle SQL Developer的...

    精通 ORACLE SQL高级编程 学习笔记

    精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记

    记使用Oracle SQL Developer 迁移MySql 数据至 Oracle.docx

    本文将详细讲解如何使用Oracle SQL Developer工具进行这样的迁移过程,以及如何解决在迁移过程中遇到的问题。 首先,确保你拥有正确的工具。在这个案例中,你需要MySQL 5.6.37、Oracle 11g以及Oracle SQL Developer...

    ORACLE_SQLDeveloper使用教程

    ### Oracle SQL Developer 使用教程 #### 一、Oracle Database Home Page 的使用 在开始介绍 Oracle SQL Developer 的使用之前,我们先来看看如何使用 Oracle Database Home Page。这部分内容非常重要,因为它是...

    精通OracleSQL第2版.zip

    《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库查询语言的专业书籍,由Oracle ACE和OakTable团队的专家共同撰写,集成了他们的丰富经验和专业知识。这本书旨在帮助读者掌握Oracle SQL的高级技巧,提升在...

    Oracle四大宝典之一:Oracle Sql基础 中文版

    第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...

    Oracle SQL 内置函数大全

    Oracle SQL 内置函数大全 SQL中的单记录函数 给出整数,返回对应的字符 连接两个字符串 增加或减去月份 用于对查询到的结果进行排序输出

    Oracle的SQL监视工具SQLTracker

    Oracle的SQL监视工具SQLTracker是一款强大的性能分析工具,专为数据库管理员和开发人员设计,用于诊断和优化SQL查询性能。这款工具在Oracle数据库环境中扮演着重要角色,它可以帮助用户实时监控SQL语句的执行情况,...

    Oracle SQL(SQL for Oracle)

    Oracle SQL,全称为结构化查询语言在Oracle数据库环境中的应用,是数据库管理员和开发人员用于检索、更新和管理Oracle数据库的核心工具。Oracle SQL是SQL标准的扩展,它提供了许多特有的功能,以满足企业级数据库...

    OracleSQL的优化.pdf

    Oracle SQL 优化 Oracle SQL 优化是数据库性能优化的关键部分。为了提高数据库的性能,我们需要从五个方面进行调整:去掉不必要的大型表的全表扫描、缓存小型表的全表扫描、检验优化索引的使用、检验优化的连接技术...

    精通Oracle_SQL(第2版)含源码

    《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库管理系统中SQL语言的专业书籍,旨在帮助读者全面理解和掌握在Oracle环境下高效、精准地运用SQL进行数据查询、操作和管理的技能。书中不仅包含了基础的SQL语法...

Global site tag (gtag.js) - Google Analytics