• 1. 范围查询。从...到... 2. 模糊查询.以什么开头,以什么结尾,包含什么 3. 单行行数:字符函数、数字函数、转换函数 4. 多表查询(简写版)


    1.查工资从1000~2500的员工信息
    select ename,sal from emp where sal>=1000 and sal<=2500; --and 逻辑与,两边都成立返回true
    --or 逻辑或,有一遍成立返回true

    针对范围查询关键字:between ...小... and ...大...
    select eName,sal from emp where sal between 1000 and 2500;

    2.模糊查询
    模糊查询即像什么一样,语法:列名 like '%X%' %任意多个字符 _任意一个字符
    select * from dept where dName like '%O%'; --部门名称包含“O”的部门信息
    select * from Dept where dName like 'A%'; --部门名称以“A”开头的部门信息
    select * from Dept where dName like '_A%'; --部门名称中“A”是第2个字符的部门信息



    3.单行函数
    专用来做测试查询的表:dual 此表1行1列的值
    字符函数:
    转大写 upper('字符') select upper('abcDEF') from dual; 'ABCDEF'
    转小写 lower('字符') select lower('abcDEF') from dual; 'abcdef'
    首字符大写 initcap('字符') select initcap('miss.wu') from dual; 'Miss.Wu'

    练习:查部门所在地区NEW YORK要求不区分大小写
    select * from dept where lower(loc) = lower('New York');

    链接 concat('字符1','字符2') select concat('abc','def') from dual; 'abcdef'
    获得长度 length('字符') select length('abcde') from dual; 5
    截取 substr('字符',启点,几个); select substr('abcde',2,3) from dual; 'bcd'
    select substr('abcde',-2,1) from dual; 'd'
    注意启点是正数时从前向后的第N个字符开始,向后截取几个
    启点是负数时从后向前的第N个字符开始,向后截取几个

    练习:显示部门信息,部门名称、所在区域最多承载5个字符显示位
    select deptNo,subStr(dName,1,5)||'...' deptName,substr(loc,1,5)||'...' deptLoc from dept;
    数学函数:
    四舍五入 round(数值,有效位数) select round(1255.55) from dual; 1256
    select round(1255.55,1) from dual; 1255.6
    select round(1255.55,-1) from dual; 1260
    全舍去 trunc(数值,有效为主) select trunc(1255.55) from dual; 1255
    select trunc(1255.55,1) from dual; 1255.5
    select trunc(1255.55,-1) from dual; 1250

    练习:SMITH此员工在干1/3的时离职,因此工资只拿1/3
    select eName,sal,trunc(sal/3,1) from emp where upper(eName)=upper('smith');

    转换函数:
    字符转数值* to_number('字符') select to_number('123') from dual;
    字符转日期* to_date('字符','yyyy-mm-dd hh:mi:ss')

    select to_date('2018-01-04','yyyy-mm-dd') from dual;
    显示 '04-01-2018'

    数值转字符/日期转字符 to_char(日期,'格式')
    select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
    返回系统日期 2018-04-04 12:00:23
    select to_char(800,'$9999.99') from dual;
    返回字符:'$800.00'

    格式说明:
    9 -- 任意1个字符,小数点前不强制补0,小数点后强制补0
    0 -- 任意1个字符,小数点前后强制补0
    $ -- 货币符号:美金
    L -- 货币符号:本地
    yyyy -- 年 mm -- 月 dd--日
    hh -- 小时(12进制) hh24 -- 小时(24进制)
    mi -- 分钟 ss -- 秒

    获取明天的日期:select to_char( sysdate+1 ,'yyyy-mm-dd hh24:mi:ss' ) from dual;
    练习:查询时当月当天入职的员工信息(请调整系统时间2月22日)
    SQL> select empNo,eName,to_char(HIREDATE,'yyyy-mm-dd') from emp
    2 where to_char(HIREDATE,'mm') = to_char(sysdate,'mm')
    3 and to_char(HIREDATE,'dd') = to_char(sysdate,'dd');

    4、多表查询(简版)
    内链查询:显示是多表的共有数据(你有、我有、他也有,大家都有的数据)
    思考题:一句查询语句显示员工姓名和部门名称,怎么办?怎么办?怎么办?
    员工姓名eName 在员工表emp中
    部门名称dName 在部门表dept中
    分析emp员工表与dept部门表的结构中都有一个deptNo部门编号

    答:select e.eName,e.deptNo, d.deptNo,d.dName from emp e,dept d
    where e.deptNo = d.deptNo;
    解:员工“KING ”的部门是10,10号部门是 《ACCOUNTING》

    外链查询:显示(+)对面表的所有数据
    思考题:显示所有员工信息(共13行),没有部门的员工部门信息补null
    答:select e.eName,e.deptNo,d.deptNo,d.dName from emp e,dept d
    where e.deptNo = d.deptNo(+);

    思考题:显示没有员工的部门信息
    答:select d.deptNo,d.dName,d.loc from dept d,emp e
    where e.deptNo(+) = d.deptNo
    and e.eName is null;

    不忘初心,方得始终! 坚持!坚持!坚持!!
  • 相关阅读:
    CompletableFuture组合式异步编程
    java日志:slf4j
    Protobuffer生成java类
    变量快速变camel写法
    上海有线通下载exe会302转发请求
    ClickOnce添加自定义prerequisite
    International Conference for Smart Health 2015 Call for Papers
    IEEE/ACM ASONAM 2014 Industry Track Call for Papers
    Call for Papers IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM)
    Call for Papers International Conference for Smart Health (ICSH) 2014
  • 原文地址:https://www.cnblogs.com/sumboy/p/9058622.html
Copyright © 2020-2023  润新知