您好,欢迎访问三七文档
第二章SQL语言基础课程目标熟练掌握SQL语言进行单表查询简单select语句where条件判断In语句AND,OR,NOT使用模糊查询ORDERBY查询分组查询HAVING限制SQL语言介绍SQL语言全称是(STRUCTUREDQUERYLANGUAGE)结构化查询语言,是操作数据库的通用语言,sql语言本身是一种标准语言,它是一个国际标准,它定义了套标准SQL1992,SQL1999,SQL在大多数数据库上通用,有轻微的改变SQL语言分类包含四大语句:查询语句(DQL)查询语句只有一种就是select语句DML语句DML语句包含Insert,Update,Delete等常用语句SQL语言分类事务控制语句包含Commit,Rollback等常用语句还有一大类语句:叫DCL语句(DataControlLanguage),主要用于权限的分配与回收,由于与开发关系不是十分密切,不做重点讲解注意:最重要的就是select语句,任何select语句全部要背过,select语句必考查询语言介绍SQL中访问数据库表是通过用户名.数据表的形式来访问,当访问属于本身的表是可以不用用户名。查询语言介绍1.简单select语句:例子1:取出一张表中所有的数据Select*fromemp;查询语言介绍例子2:取出某些字段的值Selectempno,ename,deptnofromemp;注意以分号结尾,大小写无关查询语言介绍2.包含算术表达式的sql语句例子1:取出emp中所有人的年薪及名字Selectename,sal*12fromemp;例子2:在emp表中取出2*3的结果Select2*3fromemp;查询语言介绍例子3:取出2*3的一条记录Select2*3formdual;--当我们需要显示一个结果的时候就用系统提供的dual虚表例子4:取出当前系统时间Selectsysdatefromdual;--sysdate在Oracle中表示当前系统时间查询语言介绍3.含有别名的sql语句例子1:selectename,sal*12annual_salfromemp;例子2:如果想让别名强制大小写混合可以使用双引号Selectename,sal*12“Annual_sal”fromemp;例子3:如果想让别名中有空格也使用双引号Selectename,sal*12“Annualsal”fromemp;查询语言介绍5.处理含有空值的字符串例子1:算某人一年的年薪含有任何null值的数学表达式最后的结果都为nullSelectename,sal*12+commfromemp可以通过NVL(COMM,0)函数解决查询语言介绍例子2:含有任何null值的字符串表达式中,null被当作空字符串处理selectempno,ename||'andhismanagernumberis'||mgrfromemp;字符串连接符:||Select语句中用单引号表示字符串查询语言介绍6.在select中使用单引号例子1:用两个单引号表示一个单引号selectempno,ename||'smanageris'||mgrfromemp;查询语言介绍7.消除重复值例子1:selectdistinctdeptnofromemp;--用distinct消除结果集中的重复信息例子2:用distinct修饰多个字段的时候,指的是消除后面所有字段的组合重复结果Selectdistinctjob,deptnofromemp;--指job和deptno都相同的删除查询语言介绍使用where对数据库设定条件限制,where过滤条件,过滤相关的数据等值判断例子1:显示部门编号为10的所有员工的详细信息select*fromempwheredeptno=10;查询语言介绍例子2:显示名字为KING的员工的详细信息判断字符串是否相等时,字符串要用单引号引起来,单引号中字符串内容是要区分大小写的Select*fromempwhereename=‘KING’;查询语言介绍非等值判断(==)例子1:取出薪水大于2000的所有员工的名字和薪水Selectename,salfromempwheresal2000;查询语言介绍例子3:取出所有部门号不是10的雇员的名字和薪水Selectename,salfromempwheredeptno10;例子4:取出薪水位于800和1500之间的雇员名字和薪水Selectename,salfromempwheresal=800andsal=1500;Selectename,salfromempwheresalbetween800and1500;注意:使用betweenand的时候,包含了最大值和最小值查询语言介绍空值的处理例子1:取出津贴值为空的所有雇员的名字Selectenamefromempwherecommisnull;例子2:取出津贴不为空的所有雇员的名字Selectenamefromempwherecommisnotnull;查询语言介绍In语句:用于筛选某一个值例子1:把薪水是800,1250,1500,2000的雇员信息取出来Selectename,salfromempwheresalin(800,1250,1500,2000);也可以用于字符串操作例子2:把名字为SMITH,ALLEN,KING的雇员取出来Selectename,salfromempwhereenamein(‘SMITH’,‘ALLEN’,‘KING’);查询语言介绍日期处理Oracle默认的日期格式为:DD-MON-RR例子1:查询在81年2月20号以后入职的员工Selectename,hiredatefromempwherehiredate’20-2月-81’;查询语言介绍AND,OR,NOT例子1:查询部门标号为10并且薪水1000的员工Selectename,deptno,salfromempwheredeptno=10andsal1000;例子2:查询部门编号为10或者工作岗位为CLERK的员工Selectename,deptno,jobfromempwheredeptno=10orjob=‘CLEARK’;查询语言介绍例子3:查询薪水没有位于800,1500,2000之中的员工Selectename,salfromempwheresalnotin(800,1500,2000);模糊查询使用like关键字,和通配符%表示0个或多个字符,_表示1个字符例子1:查询名字中含有ALL的人员Selectenamefromempwhereenamelike‘%ALL%’;例子2:查询第二字母中含有A的雇员Selectenamefromempwhereenamelike‘_A%’;模糊查询例子3:查询名字中含有%等通配符的数据时,使用转义字符\Escape自定义转移字符,系统默认的转义字符是‘\’Selectenamefromempwhereenamelike‘%\%%’escape‘\’排序查询Orderby使用它orderby对数据进行排序例子1:按照名字的升序进行排序Selectename,salfromemporderbyename;Selectename,salfromemporderbyenameasc;用asc关键字指出按升序排列排序查询例子2:按照雇员编号的升序排序Selectename,deptnofromemporderbydeptno;Selectename,deptnofromemporderbydeptnoasc;例子3:按照名字降序排列Selectename,deptnofromemporderbyenamedesc;例子4:按照部门编号降序排列Selectename,deptnofromemporderbydeptnodesc;默认是升序分组查询Groupby对表中的数据进行分组例子1:计算每个部门的平均工资首先将现有数据按照部门进行分组,然后再计算每个组员工的平均薪水。Selectdeptno,avg(sal)fromempgroupbydeptno;例子2:计算每个部门的最大工资Selectdeptno,max(sal)fromempgroupbydeptno;分组查询例子3:按照部门,和职位的最大薪水进行分组Selectdeptno,job,max(sal)fromempgroupbydeptno,job;使用groupby的规律:出现在select列表中的字段,如果没有出现在组函数中,则必须出现在groupby子句中典型错误:selectename,deptno,max(sal)fromempgroupbydeptno;分组查询使用Having对分组进行限制如果我们要从分组数据中把某些特定的剔除去的时候,使用Having关键字例子1:将平均薪水大于1000的组的平均薪水从emp这张表中选出来Selectavg(sal),deptnogroupbydeptnohavingavg(sal)1000;分组查询例子2:求薪水大于1200的雇员,按照部门进行分组,而且这些分分组后组内平均薪水必须大于1500,要查询分组的平均工资Selectavg(sal)fromempwheresal1200groupbydeptnohavingavg(sal)1500Orderbyavg(sal);总结简单select语句where条件判断In语句AND,OR,NOT使用模糊查询ORDERBY查询分组查询HAVING限制作业选出所用部门里工资最高的人的名字作业Selectename,salfromempwheresal=(Selectmax(sal)fromemp);
本文标题:ORACLE第二章
链接地址:https://www.777doc.com/doc-12918 .html