版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Oracle查询学习查询查询产生一个虚拟表,看到的是表形式显示的结果,但结果并不真正存储,每次执行查询只是现从数据表中提取数据,并按照表的形式显示出来。查询语法SELECT FROM WHERE ORDER BY ASC或DESC示例SELECT StudentId,StudentName,AddressFROM StudentsWHERE SEX = 男ORDER BY StudentId列别名可以使用as来为列指定一个新的名字,as可省略列别名可以用双引号包围起来,也可以不用双引号。“学号”或者学号都行。Select studentid as “学号”FromStudent;NULL查询时
2、候,必须使用is null或者is not nullNULL值与数字进行算术运算的结果为NULL可以使用NVL函数,为NULL值返回一个替代的值。NVL(StudentResult, 0即为,如果studentresult是NULL值,则返回0聚合函数Sum 求和Avg 求平均Max 最大值Min 最小值Count 计数案例一某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题:卡里面的“O和0”(哦和零“i和1”(哎和一,用户反映说看不清楚,公司决定,把存储在数据库中的密码中所有的“哦”都改成“零”,把所有的“i”都改成“1”;请编写SQL语句实现以上要求;数据库表名:Card密码字
3、段名:PassWordUPDATE CardSET PassWord = Replace(Replace(PassWord ,O,0,i,1案例二在数据库表中有以下字符数据,如:13-1、13-2、13-3、13-10、13-100、13-108、13-18、13-11、13-15、14-1、14-2现在希望通过SQL语句进行排序,并且首先要按照前半部分的数字进行排序,然后再按照后半部分的数字进行排需,输出要排成这样: 13-1、13-2、13-3、13-10、13-11、13-15、13-18、13-100、13-108、14-1、14-2数据库表名:SellRecord字段名:ListNu
4、mberSELECT ListNumberFROM SellRecordORDER BYto_number(substr(list_number,1,instr(list_number,-1,to_number(substr(list_number,instr(list_number,-+1模糊查询查询时,字段中的内容并不一定与查询内容完全匹配,只要字段中含有这些内容使用LIKE关键字,配合通配符进行模糊查询。字符匹配操作可以使用通配符 “%” 和 “_”%:表示任意个字符,包括零个_:表示一个任意字符转义符如果要模糊查询出含有%或者_等通配符的的记录时,可以使用转义符,模糊查询出含有%的地址
5、select * from student where address like % escape ;此处第一个%和第三个%为通配符,使用了escape 使第二个%失去了通配符的含义,它代表的就是%模糊查询出含有_的地址select * from student where address like %b_% escape b;单引号的转义,使用两个单引号update student set address = 23 where studentid = 1039;NULL值的处理查询某个字段为空,使用is null查询某个字段不为空,使用is not null对NULL做算术运算结果仍为NUL
6、L,可以使用NVL函数,将NULL值转为0之后,再进行运算。NULL排序比其他所有类型的都大,一个可以为空的字段倒排序,NULL 值排在最前面。下面的语句,gradeid是NULL的行排在前面。select * from student order by gradeid desc;如果要想降序排列,同时使null的行排在最后面,可以使用NVL函数。select * from student order by nvl(gradeid,0 desc;Between AND把某一字段中内容在特定范围内的记录查询出来SELECT StudentID, StudentResult FROM Result
7、 WHERE StudentResult BETWEEN 60 AND 80;上面语句等价于StudentResult = 60 and StudentResult 10WHERE与HAVING对比WHERE子句:用来筛选 FROM 子句中指定的操作所产生的行GROUP BY子句:用来分组 WHERE 子句的输出HAVING子句:用来从分组的结果中筛选行Where group by having order by做题的总结:成绩表查询select * from result order by examdate desc 学生表查询select * from student 课程表查询selec
8、t * from subject 1. 最近一次查询的问题:查询最近一次oracle考试最高分和最低分select max(studentresult 最高分,min(studentresult 最低分 from result where subjectid=(select subjectid from subject where subjectname=Oracleand examdate=(select max(examdatefrom result where subjectid=(select subjectid from subject where subjectname=Oracl
9、e 2. 最近一次没有参加oracle考试的学生,可以用not in解 决 select * from student where studentid not in(select studentid from result where subjectid=(select subjectid from subject where subjectname=Oracle and examdate=(select max(examdate from result where subjectid=(select subjectid from subject where subjectname=Oracl
10、e) 结果: 3. 最近一次考试成绩大于80,用exists做,效率较高,其 中的subjectid=3可以使用子查询替换掉,从subject 表。 select * from student a where exists(select * from result where studentresult80 and subjectid=3 and a.studentid = studentid and examdate=(select max(examdate from result where subjectid=3 4. case在查询时的使用: select studentname, c
11、ase when gradeid= 1 then 一年级 when gradeid= 2 then 二年级 when gradeid=3 then 三年级 end myclass from student 5查询平均成绩排序中第3条到第6条的学生信息。(有是一个新表) select t2.* from (select t1.*,rownum s.studentID,studentName,avg(score from t_result r,t_student s where r.studentID=s.studentID group by s.studentID,studentName ord
12、er by avg(score desc t1 where rownum=3; rn from (select 6. 列出成绩高于平均水平的学生的 编号,姓名,考试科目名称,及成 绩,并按年龄排序 select s.studentID,studentName,subjectName,score from t_student s,t_result r,t_subject u where u.subjectid = r.subjectid and s.studentID=r.studentID and r.score(select avg(score from t_result order by
13、birthday desc; 7. 删除上面除了编号不同,其他都相同的学生冗余信息。表名:t_test delete from t_test where id not in(select MIN(id from t_test group by no,name,subjectID,subjectName,score; 8.school表中有班级(class),性别(sex),姓名(name)三列,求查询 出男生数和女生数相等的班级有哪些。 select t1.class from(select class,SEX,count(* as s from shcool group by class,s
14、ex having sex=男 t1,(select class,SEX,count(* as s from shcool group by class,sex having sex=女 t2 where t1.class = t2.class and t1.s=t2.s 9. 自己做的: -第一问 select eno,ename,esex,eage from emp e join dept d on d.dno = e.dno where d.dname = 研发部 order by e.ename -第二问 select ename,ssal from emp e join sal s on e.eno = s.eno where s.ssal = (select max(ssal from sal -第三问 alter table emp add eremark varchar2(400 -第四问 upd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西省九江市第一中学2026年高一下生物期末综合测试试题含解析
- 江苏省镇江市部分学校2026年生物八下期末检测模拟试题含解析
- 浙江省海曙区五校联考2025-2026学年初三质量检测试题(三模)化学试题试卷含解析
- 陕西省汉中学市南郑县2026年初三4月阶段性测试生物试题含解析
- 安徽省宣城市名校2026年初三下学期大联考卷Ⅱ化学试题试卷含解析
- 山东省青岛市重点中学2026年中考化学试题必刷模拟卷含解析
- 湖南省湘西土家族苗族自治州古丈县2026年初三下学期期中联考考试化学试题含解析
- 甘肃省武威市凉州区洪祥中学2025-2026学年初三1月阶段检测试题生物试题含解析
- 江西省安远县三百山中学2026年初三下期始考化学试题含解析
- 湖北省随州市重点名校2025-2026学年3月初三年级调研考试化学试题含解析
- 关于药店药师管理制度
- 开学第一课:小学生收心教育
- 工程EPC总承包项目成本管控方案
- 《土壤固化技术》课件
- 废塑料催化热解资源化利用的技术进展与前景探讨
- 一般情况皮肤淋巴结及头颈部检查课件
- 十八项核心制度
- 《汽车商品性主观评价方法 客车》
- 【MOOC】知识创新与学术规范-南京大学 中国大学慕课MOOC答案
- 小区修建性详细规划汇报
- 《习近平新时代中国特色社会主义思想学生读本》第2讲《实现社会主义现代化和中华民族伟大复兴》-教案
评论
0/150
提交评论