网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 Oracle学习查询操作的笔记以及语句
内容
    最近仔细学习了下Oracle,为大家准备了一份学习笔记,希望对大家的学习有所帮助
    一、Oracle学习查询语句的笔记
    在Oracle 中是对大小写 敏感的 也就是区分大小写
    || 连接or 或者
    and 和、 并且
    where 条件
    between ..最小值 and 最大值(这个关键字包含等于)
    in 字段 in(值1,值2,值3...值n)
    or 关键字 例子----select * from emp where (deptno=10 and job ='MANAGER') or (deptno=20 and job='CLERK');
    distinct去掉重复的
    like |模糊查询(注意使用通配符的问题 ) 可以在任何地方应用
    |主要的通配符有
    |···|“%”:可以匹配任意长度的内容
    |···|“_”:可以匹配一个长度的内同
    例如
    select * from emp where ename like '%M%';
    <> 不等号
    #######基本查询语句结束#######接下来是排序#######
    Ordre by 排序:asc升序(默认的) desc:降序 *放在sql语句的最后
    #######排序结束#######接下来是函数#######
    一、字符函数
    upper() 小写字母变大写 ·select upper('smith') from dual; 必须 加上from ·select * from emp where ename =upper('smith');
    lower() 大写字母变小写 ·select lower('HELLO WORLD') from dual;
    initcap() 开头字母大写 ·select initcap('HELLO WORLD') from dual;·select initcap(ename) from emp;
    *字符串除了可以使用||来连接。 还可以使用concat();函数来进行连接·select concat('hellow','world') from dual;
    可以进行字符串截取,求字符串长度。进行指定内容替换
    ·字符串截取:substr(); substr 的截取点是从0或者是1效果都是一样的(Oracle)Oracle 中 可以输入负值 来倒着截取。·select ename ,substr(ename,-3,3) from emp;
    ·字符串长度:length();
    ·内容替换: replace();
    _________________范例_______________
    select substr('hello',1,3) 截取字符串,length('hello') 字符串长度,replace('hello','l','x') 字符串替换from dual;
    ________________________________________
    二、数值函数
    ·四舍五入 :round(); 可以指定四舍五入位数select round(789.546,-2) from dual;负值对整数进行操作。 正值是小数
    ·截断小数位 :trunc();
    ·取余(取模):mod
    三、日期函数
    ·日期-数字=日期
    ·日期+数字=日期
    ·日期-日期=数字(天数)
    ·months_between();求出指定日期范围的月数
    ·add_months();在制定日期加上制定的月数,求出之后的日期
    ·next_day();下一个的今天是哪一个日期
    ·last_day();求出给定日期的月最后一天的日期
    当前日期 sysdate关键字 范例: select sysdate from dual;
    四、转换函数
    ·to_char(): 转换成字符串
    ·通配符:·年:yyyy·月:mm·日:dd
    ·to_number(): 转换成数字
    ·to_date(): 转换成日期
    五、通用函数
    ·nvl(字段,0) 如果字段里面的值是空 就按照0显示
    __________________________范例__________________________
    select empno,ename,(nvl(sal,0)+nvl(comm,0))*12 from emp;
    ________________________________________________________
    ·decode 类似if(){}else{}
    __________________________范例_________________________________
    1·select decode(1,1,'内容是1',2,'内容是2',3,'内容是3') from dual;
    2·select empno 编号, ename 姓名 , HIREDATE 日期,decode
    (
    job,'CLERK','业务员','SALESMAN','销售经理',
    'MANAGER','经理','ANALYST','分析员',
    'PRESIDENT','总裁'
    ) 职业
    from emp;
    _______________________________________________________________
    #######函数结束#######接下来是多表查询#######
    1·基础语句
    *在使用多表查询的时候会出现笛卡尔积,如果表的数据越多,那么笛卡尔积也就会越大。
    比如一张表有1W条记录,就有1W的五次方条记录。(出现的原因是有关联字段)
    *在多表查询的时候加入where语句,就能消除笛卡尔积。
    一般会为表取别名 别名范例: select * from emp e ,dept d where e.deptno=d.deptno;
    ***范例(难题)**
    问题:求出雇员姓名,工资,部门名称,工资等级,上级领导名字,领导的工资,领导的工资等级。
    __________________________________________________________________________________________
    select e.ename 雇员姓名,e.sal 工资,d.dname 部门名称,decode(s.grade,'1','第五等工资','2','第四等工资','3','第三等工资','4','第二等工资' ,'5','第五等工资') 工资等级,m.ename 上级领导名字,m.sal 领导的工资,decode(ms.grade,'1','第五等工资','2','第四等工资','3','第三等工资','4','第二等工资' ,'5','第五等工资')领导的工资等级
    from emp e, dept d ,salgrade s ,emp m,salgrade ms
    where e.deptno =d.deptno and
    e.sal between s.losal and s.hisal
    and e.mgr=m.empno
    and m.sal between ms.losal and ms.hisal;
    __________________________________________________________________________________________
    *注意*
    有一个人没有上级领导,查不出,因为什么呢?因为所有人的最上层x领导是他!
    2·左右连接
    去除笛卡尔积的时候会让某些字段不被查出。需要使用左右连接((+)用这个符号)
    例如select e.empno,e.ename,d.deptno,d.dname,d.loc from emp e,dept d where e.deptno(+)=d.deptno;
    表示右连接,以右边的表为准,证明:(+)在左边表示右连接,反之左连接。默认左连接
    3·sql1999语法支持(了解即可)
    ·cross join : 交叉连接==>产生笛卡尔积
    ·natural join: 自然连接==>消除笛卡尔积
    ·using 字句: 直接关联操作列
    _________________________范例_________________________________
    ·select * from emp e join dept d using(deptno) where deptno=30;
    on是自己定义条件·select * from emp e join dept d on(e.deptno=d.deptno) where e.deptno=30;
    __________________其结果都是一样的____________________________
    ·左右连接(左右外连接)
    ·left join
    ·right join
    #######多表查询结束#######接下来是组函数及分组统计#######*!重点!*
    1·组函数
    ·count(): 记录数
    ·max(): 最大值\ >不能用在字符串
    ·min(): 最小值/
    ·avg(): 平均值
    ·sum(): 总和
    2·分组统计
    group by 分组条件
    __________________________范例_________________________
    ·select deptno,count(empno) from emp group by deptno;
    ·select deptno,avg(sal) from emp group by deptno;
    _______________________________________________________
    错误:_______________________________________________________
    1、使用了分组函数,有两种情况·使用了group by 并指定了分组条件 会将分组条件一起查询出来·没使用分组,就只能单独使用分组函数。
    2、在使用分组函数的时候,不能出现分组函数和分组条之外的字段
    select d.dname ,count(e.empno) from dept d ,emp e
    where d.deptno=e.deptno
    group by d.dname;
    _______________________________________________________
    select max(avg(sal))
    from emp
    group by deptno;
    _______________________________________________________
    *!注意!*:分组函数值能在分组中使用不能在where中使用,要使用 having 关键字
    _____________________范例______________________________select deptno,avg(sal)from emp group by deptno having avg(sal)>2000;
    _______________________________________________________
    #######接下来是多表查询######接下来是子查询########
    子查询是指,在以个查询的内部还包括另外一个查询。
    *!注意!*:所有子查询都要在()中编写
    子查询分为以下三类:
    ·单列子查询:返回结果是一个列的一个内容
    ·单行子查询,返回多个列,有可能是一条完整的记录
    ·多行子查询,返回多条记录
    ________________________范例__________________________________________
    --select * from emp where sal>(select sal from emp where empno=7654)and job=(select job fromemp where empno=7788);
    ----------------------------------------------------select d.dname,ed.c,ed.a,e.enamefrom dept d , (select deptno,count(empno) c, avg(sal)a,min(sal)minfrom empgroup by deptno) ed ,emp e<
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/17 19:15:02