TP 自动化技术、计算机技术 - 西安理工大学

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Oracle10g数据库基础教程第13章SQL语言基础Oracle10g数据库基础教程本章内容SQL语句分类数据查询(SELECT)数据操纵(INSERT、UPDATE、DELETE)事务控制SQL函数Oracle10g数据库基础教程本章要求掌握数据查询的各种应用掌握数据操纵的各种应用掌握事务处理了解SQL函数应用Oracle10g数据库基础教程13.1SQL语言概述SQL语言介绍SQL语言的分类SQL语言的特点Oracle10g数据库基础教程13.1.1SQL语言介绍SQL(StructuredQueryLanguage)语言是1974年由Boyce和Chamberlin提出的。SQL语言是关系数据库操作的基础语言,将数据查询、数据操纵、数据定义、事务控制、系统控制等功能集于一体,从而使得数据库应用开发人员、数据库管理员等都可以通过SQL语言实现对数据库的访问和操作。Oracle10g数据库基础教程13.1.2SQL语言的分类据定义语言(DataDefinitionLanguage,DDL):用于定义、修改、删除数据库对象,包括CREATE,ALTER,DROP,GRANT,REVOKE,AUDIT和NOAUDIT等。数据操纵语言(DataManipulationLanguage,DML):用于改变数据库中的数据,包括数据插入(INSERT)、数据修改(UPDATE)和数据删除(DELETE)。数据查询语言(DataQueryLanguage,DQL):用于数据检索,包括SELECT。事务控制(TransactionControl):用于将一组DML操作组合起来,形成一个事务并进行事务控制。包括事务提交(COMMIT)、事务回滚(ROLLBACK)、设置保存点(SAVEPOINT)和设置事务状态(SETTRANSACTION)。系统控制(SystemControl):用于设置数据库系统参数,包括ALTERSYSTEM。会话控制(SessionControl):用于设置用户会话相关参数,包括ALTERSESSION。Oracle10g数据库基础教程13.1.3SQL语言的特点功能一体化:几乎涵盖了对数据库的所有操作,语言风格统一。高度的非过程化:在使用SQL语言操作数据库时,用户只需要说明“做什么”,而不需要说明“怎样做”。用户任务的实现对用户而言是透明的,由系统自动完成。这大大减轻了用户的负担,同时降低了对用户的技术要求。面向集合的操作方式:SQL语言采用集合操作方式,不仅查询结果可以是多条记录的集合,而且一次插入、删除、修改操作的对象也可以是多条记录的集合。面向集合的操作方式极大地提高了对数据操作效率。多种使用方式:SQL语句既是自含式语言,又是嵌入式语言。SQL语言可以直接以命令方式与数据库进行交互,也可以嵌入到其他的高级语言中使用。简洁、易学:SQL语言命令数量有限,语法简单,接近于自然语言(英语),因此容易学习和掌握。Oracle10g数据库基础教程13.2数据查询数据查询基础基本查询分组查询连接查询子查询合并查询Oracle10g数据库基础教程13.2.1数据查询基础基本语法:SELECT[ALL|DISTINCT]column_name[,expression…]FROMtable1_name[,table2_name,view_name,…][WHEREcondition][GROUPBYcolumn_name1[,column_name2,…][HAVINGgroup_condition]][ORDERBYcolumn_name2[ASC|DESC][,column_name2,…]];Oracle10g数据库基础教程13.2.2基本查询无条件查询有条件查询查询排序查询统计Oracle10g数据库基础教程(1)无条件查询查询所有列SELECT*FROMemp;查询指定列SELECTdeptno,dnameFROMdept;使用算术表达式SELECTempno,sal*0.8FROMemp;使用字符常量SELECTempno,'Nameis:',enameFROMemp;使用函数SELECTempno,UPPER(ename)FROMemp;Oracle10g数据库基础教程改变列标题SELECTenameemployeename,salsalaryFROMemp;使用连接字符串SELECT'员工号:'||empno||'员工名'||enameFROMemp;消除重复行SELECTALLdeptnoFROMemp;SELECTDISTINCTdeptnoFROMemp;Oracle10g数据库基础教程(2)有条件查询查询满足条件的元组可以通过WHERE子句实现。WHERE条件中常用的运算符号运算符号谓词比较大小=,,,=,=,,!=确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重条件AND,OROracle10g数据库基础教程关系运算SELECTempno,ename,salFROMempWHEREdeptno!=10;SELECTempno,ename,salFROMempWHEREsal1500确定范围谓词BETWEENAND与NOTBETWEENAND。SELECT*FROMempWHEREdeptnoBETWEEN10AND20;SELECT*FROMempWHEREsalNOTBETWEEN1000AND2000;Oracle10g数据库基础教程确定集合谓词IN可以用来查找属性值属于指定集合的元组。SELECTempno,ename,salFROMempWHEREdeptnoIN(10,30);字符匹配%(百分号)代表任意长(长度为0)字符串。_(下划线)代表任意单个字符。ESCAPE:转义字符SELECT*FROMempWHEREenameLIKE‘%S%’;SELECT*FROMempWHEREenameLIKE'_A%';SELECT*FROMempWHEREenameLIKE'%x_%'ESCAPE'x';Oracle10g数据库基础教程空值操作涉及空值查询时使用ISNULL或ISNOTNULL,这里的IS不能用=替代。SELECT*FROMempWHEREdeptnoISNULL;SELECT*FROMempWHEREcommISNOTNULL;Oracle10g数据库基础教程逻辑操作用逻辑运算符NOT、AND和OR来联结多个查询条件。优先级:NOT、AND、OR(用户可以用括号改变优先级)。IN谓词实际上是多个OR运算的缩写。SELECT*FROMempWHEREdeptno=10ANDsal1500;SELECT*FROMempWHERE(deptno=10ORdeptno=20)ANDsal1500;Oracle10g数据库基础教程注意:使用BETWEEN…AND,NOTBETWEEN…AND,IN,NOTIN运算符的查询条件都可以转换为NOT,AND,OR的逻辑运算。例如,下面两个语句是等价的:SELECT*FROMempWHEREsal1000ANDsal2000;SELECT*FROMempWHEREsalBETWEEN1000AND2000;Oracle10g数据库基础教程升序、降序排序ASC:升序(缺省);DESC:降序SELECTempno,ename,salFROMempORDERBYsal;SELECTempno,ename,salFROMempORDERBYsalDESC;多列排序首先按照第一个列或表达式进行排序;当第一个列或表达式的数据相同时,以第二个列或表达式进行排序,以此类推。SELECT*FROMempORDERBYdeptno,salDESC;(3)查询排序Oracle10g数据库基础教程按表达式排序可以按特定的表达式进行排序。SELECTempno,ename,salFROMempORDERBYsal*12;使用别名排序可以使用目标列或表达式的别名进行排序。SELECTempno,sal*12salaryFROMempORDERBYsalary;使用列位置编号排序如果列名或表达式名称很长,那么使用位置排序可以缩短排序语句的长度。SELECTempno,sal*12salaryFROMempORDERBY2;Oracle10g数据库基础教程(4)查询统计函数格式功能AVGAVG([DISTINCT|ALL]列名)计算一列值的平均值(要求数值列)COUNTCOUNT([DISTINCT|ALL]*)统计元组个数COUNTCOUNT([DISTINCT|ALL]列名)统计一列中非空值的个数MAXMAX([DISTINCT|ALL]列名)求一列值中的最大值MINMIN([DISTINCT|ALL]列名)求一列值中的最小值SUMSUM([DISTINCT|ALL]列名)计算一列值的总和(要求数值列)STDDEVSTDDEV(列名)..计算一列值的标准差VARIANCEVARIANCE(列名)计算一列值的方差Oracle10g数据库基础教程注意除了COUNT(*)函数外,其他的统计函数都不考虑返回值或表达式为NULL的情况。聚集函数只能出现在目标列表达式、ORDERBY子句、HAVING子句中,不能出现在WHERE子句和GROUPBY子句中。默认对所有的返回行进行统计,包括重复的行;如果要统计不重复的行信息,则可以使用DISTINCT选项。如果对查询结果进行了分组,则聚集函数的作用范围为各个组,否则聚集函数作用于整个查询结果。Oracle10g数据库基础教程SELECTcount(*),avg(sal),max(sal),min(sal)FROMempWHEREdeptno=10;SELECTavg(comm),sum(comm)FROMemp;SELECTcount(DISTINCTdeptno)FROMemp;SELECTvariance(sal),stddev(sal)FROMemp;Oracle10g数据库基础教程13.2.3分组查询基本语法单列分组查询多列分组查询使用HAVING子句限制返回组使用ROLLUP和CUBE合并分组查询Oracle10g数据库基础教程SELECTcolumn,group_function,…FROMtable[WHEREcondition][GROUP[BYROOLUP|CUBE|GROUPINGSETS]group_by_expression][HAVINGgroup_condition][ORDERBYcolumn[ASC|DESC]];(1)基本语法Oracle10g数据库基础教程注意:GROUPBY子句用于指定分组列或分组表达式。集合函数用于对分组进行统计。如果未对查询分组,则集合函数将作用于整个查询结果;如果对查询结果分组,则集合函数将作用于每一个组,即每一个分组都有一个集合函数。HAVING子句用于限制分组的返回结果。WHERE子句对表中的记录进行过滤,而HAVING子句对分组后形成的组进行过滤。在分组查询中,SELECT子句后面的所有目标列或目标表达式要么是分组列,要么是分组表达式,要么是集合函数。Oracle10g数据库基础教程单列分组查询将查询出来的记录按照某一个指定的列进行分组SELECTdeptno,count(*),avg(sal)FROMempGROUPBYdeptno;多列分组查询在GROUPBY子句中指定了两个或多个分组列SELECTdeptno,jo

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功