oracle基础学习.ppt
《oracle基础学习.ppt》由会员分享,可在线阅读,更多相关《oracle基础学习.ppt(65页珍藏版)》请在三一办公上搜索。
1、第三章 SQL语言基础,SQL概述,SQL(Structured Query Language)结构化查询语言,是一种在关系数据库中定义和操纵数据库的标准语言,是用户与数据库之间进行交流的接口。SQL语言已经被大多数关系数据库管理系统采用。Oracle数据库提供的许多有用而强大的功能都需要通过SQL语言来体现。因此要使用Oracle数据库,一定要掌握SQL语言。,SQL 特点,综合统一高度非过程化面向集合的操作方式同一种语法结构提供两种使用方式语言简洁、易学易用,分类,Select 查询语句数据定义语言(Data Definition Language,DDL):create,alter,dr
2、op,truncate数据操纵语言(Data Manipulation Language,DML):insert,update,delete,merge数据控制语言(Data Control Language,DCL):grant,revoke事务控制(Transaction Control):commit,rollback,savepoint,SELECT语句,数据检索是数据库中最频繁执行的活动,所以SELECT是使用频率最高的语句,它具有强大的查询功能,有的用户甚至只需要熟练掌握SELECT语句的一部分,就可以轻松地利用数据库来完成自己的工作。可以说SELECT是SQL语言的灵魂。SELE
3、CT语句的作用是让数据库服务器根据客户端的要求搜寻出用户所需要的信息资料,并按用户规定的格式进行整理后返回给客户端。,查询数据,SELECT语句的语法格式如下:SELECT DISTINCT select_list FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC|DESC 其中:DISTINCT:用于删除结果集中重复的行。select_list 指明要查询的选择列表。列表可以包括若干个列名或表达式
4、,列名或表达式之间用逗号隔开,用来指示应该返回哪些数据。表达式可以是列名、函数或常数的列表。,FROM table_source 指定所查询的表或视图的名称。WHERE search_condition 指明查询所要满足的条件。GROUP BY group_by_expression 根据指定列中的值对结果集进行分组。HAVING search_condition 对用FROM、WHERE或GROUP BY子句创建的中间结果集进行的筛选。它通常与GROUP BY子句一起使用。ORDER BY order_expression ASC|DESC 对查询结果集中的行重新排序。ASC 和DESC关键
5、字分别用于指定按升序或降序排序。如果省略ASC或DESC,则系统默认为升序。,使用字段别名重命名查询结果中的字段,以增强可读性,可以使用AS为字段定义别名。用法举例:Select deptno as 部门编号,dname as 部门名称 from dept;,select ename 姓名,sal 工资 from emp where deptno=10;,取消重复行使用distinct关键字可以取消查询结果中出现的重复行。用法举例:Select deptno,job from emp;,Select distinct deptno,job from emp;,使用算术表达式 在Select语句
6、中,对NUMBER型数据可以使用算术运算符来创建表达式。算术运算符+-*/用法举例:select empno,ename,sal,sal*12 from emp;,连接运算符 连接运算符|可以把列与字符、或其它表达式连接在一起,得到一个新的字符串,实现合成列的功能。用法举例:select ename|is a|job from emp where deptno=20;,select empno,ename|s annual salary is|sal*12 from emp where deptno=20;,使用WHERE子句,WHERE子句指定数据检索的条件,以限制返回的数据行.WHERE子
7、句中的查询条件比较运算符:=(等于)、(大于)、=(大于等于)、(不等于)范围说明:between A and B,not between A and B可选值列表:IN,NOT IN模式匹配:LIKE,NOT LIKE是否空值:IS NULL,IS NOT NULL上述条件的逻辑组合:NOT(非)、AND(与)、OR(或),1 使用比较运算符 select*from emp where deptno20 and job=CLERK;,2 使用BETWEEN关键字BETWEEN关键字总是与AND一起使用,用来检索在一个指定范围内的信息,NOT BETWEEN检索不在某一范围内的信息。,sele
8、ct*from emp where sal between 2500 and 3500 and hiredate between 01-1月-81 and 31-12月-81;,3 使用IN关键字IN关键字允许用户选择与列表中的值相匹配的行,指定项必须用括号括起来,并用逗号隔开,表示“或”的关系。NOT IN表示含义正好相反。用法举例:查询部门编号为20或30的员工信息。select*from emp where deptno in(20,30);等价于select*from emp where deptno=20 or deptno=30;,4 使用LIKE关键字LIKE关键字用于查询与指定
9、的某些字符串表达式模糊匹配的数据行。LIKE后的表达式被定义为字符串,必须用单引号()括起来.通配符%:可匹配任意类型和长度的字符串。_(下划线):可匹配任何单个字符。例如:LIKE 刘%匹配以“刘”开始的字符串;LIKE%技术%匹配的是前后字符为任意,中间含有“技术”两个字的字符串;LIKE _秀%匹配的是第2个字为“秀”的任意字符串。,用法举例:查询姓名的首字符为A或第二个字符为Ade员工信息。select*from emp where ename like A%or ename like _A%;查询姓名中出现字符A的员工信息。select*from emp where ename li
10、ke%A%;,5 使用IS NULL关键字 IS NULL 关键字可以检索数据列中没有赋值的行。用法举例:显示津贴为空值的员工信息。select*from emp where comm is null;,6 使用GROUP BY子句,本子句写在WHERE子句之后,用于对查询的结果集进行分组。用法举例:显示每个部门的平均工资和最高工资。select deptno,avg(sal),max(sal)from emp group by deptno;显示每个部门、每种岗位的平均工资和最高工资。select deptno,job,avg(sal),max(sal)from emp group by d
11、eptno,job;,7 使用HAVING子句,HAVING用于限定组或聚合函数的查询条件,通常用在GROUP BY子句之后。通常,其作用与WHERE子句很相似。区别在于其作用的对象不同。WHERE子句作用于表和视图,HAVING子句作用于组。用法举例:select deptno,avg(sal),max(sal)from emp group by deptno;显示平均工资高于2000元的部门编号、平均工资和最高工资。select deptno,avg(sal),max(sal)from emp group by deptno having avg(sal)2000;,8 使用ORDER B
12、Y子句,ORDER BY子句对查询结果集中的行进行重新排序。ASC 和DESC关键字分别用于指定按升序或降序排序。如果省略ASC或DESC,则系统默认为升序。可以在ORDER BY子句中指定多个排序列,即嵌套排序,检索结果首先按第1列进行排序,对第1列值相同的那些数据行,再按照第2列排序依此类推。用法举例:以部门编号降序及姓名升序来查询工资在2000-3000元的员工信息。select*from emp where sal between 2000 and 3000 order by deptno desc,ename;,组处理函数,把查询出的数据组的值进行汇总运算,返回单值的函数。常用的组处
13、理函数:平均值:AVG 总和:SUM 最小值:MIN 最大值:MAX 计数:COUNTCOUNT(*)、COUNT(DISTINCT),用法举例:,select*from emp where deptno=20;,select avg(sal)as arg1,avg(distinct sal)as arg2,max(sal)as max,min(sal)as min,sum(sal)as sum,count(*)as cnt1,count(sal)as cnt2,count(distinct sal)as cint3,count(comm)as cnt4 from emp where dept
14、no=20;,子查询,子查询是在查询中包含另一个查询的查询。它本身是一个SELECT查询,可以代替表达式出现在WHERE子句中。它返回单个值且嵌套在 SELECT、INSERT、UPDATE、DELETE 语句或其它子查询中。任何允许使用表达式的地方都可以使用子查询。子查询的 SELECT 查询总是使用圆括号括起来。子查询中一般不使用order by 子句,order by 子句只能对最终查询结果进行排序。,单行子查询单行子查询只返回一行数据。在where子句中使用单行子查询时,可以使用单行运算符(=,=,)。用法举例:显示工资最高的员工信息。select*from emp where sal
15、=(select max(sal)from emp);,多行子查询 多行子查询可以返回多行数据。在where子句中使用多行子查询时,必须使用多行运算符(IN,NOT IN,EXISTS,NOT EXISTS,ALL,ANY).如果不能确认子查询会返回多少行,则在子查询中使用多行运算符比使用单行运算符更安全,否则容易失败。用法举例:显示与部门编号为20的岗位相同的员工信息。select*from emp where job in(select distinct job from emp where deptno=20);,显示高于部门编号为20的所有员工工资的员工信息。,select*from
16、emp where salall(select sal from emp where deptno=20);,显示高于部门编号为20的任意员工的工资的员工信息。select*from emp where salany(select sal from emp where deptno=20);,在DDL中使用子查询,1 在CREATE TABLE语句中使用子查询通过在CREATE TABLE语句中使用子查询,可以在创建新表的同时插入表中的数据。create table dept1(deptno,dname,loc)as select deptno,dname,loc from dept;,cre
17、ate table emp1 as select*from emp;,2 在create view中使用子查询create or replace view dept_20 as select*from emp1 where deptno=20 order by empno;,在DML中使用子查询,1 在UPDATE语句中使用子查询将与WARD岗位相同的员工的工资、补贴更新为与WARD完全相同。然后确认更新的结果。update emp1 set(sal,comm)=(select sal,comm from emp1 where ename=WARD)where job=(select job
18、from emp1 where ename=WARD);select ename,job,sal,comm from emp1 where job=(select job from emp1 where ename=WARD);,2 在DELETE子句中使用子查询删除ACCOUNTIBG部门的员工信息。然后确认删除的结果。delete from emp1 where deptno=(select deptno from dept1 where dname=ACCOUNTING);select ename,job,deptno from emp1 where deptno=(select dep
19、tno from dept1 where dname=ACCOUNTING);,3在INSERT子句中使用子查询。将emp表中ACCOUNTING部门的雇员信息插入到emp表中,然后确认插入的结果。insert into emp1 select*from emp where deptno=(select deptno from dept where dname=ACCOUNTING);select*from emp1 where deptno=(select deptno from dept1 where dname=ACCOUNTING);,连接查询,用户在前面所作的查询大多是对单个表进行的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 基础 学习
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6513459.html