zoukankan      html  css  js  c++  java
  • 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;

    不忘初心,方得始终! 坚持!坚持!坚持!!
  • 相关阅读:
    pat 甲级 1065. A+B and C (64bit) (20)
    pat 甲级 1064. Complete Binary Search Tree (30)
    pat 甲级 1010. Radix (25)
    pat 甲级 1009. Product of Polynomials (25)
    pat 甲级 1056. Mice and Rice (25)
    pat 甲级 1078. Hashing (25)
    pat 甲级 1080. Graduate Admission (30)
    pat 甲级 团体天梯 L3-004. 肿瘤诊断
    pat 甲级 1099. Build A Binary Search Tree (30)
    Codeforce 672B. Different is Good
  • 原文地址:https://www.cnblogs.com/sumboy/p/9058622.html
Copyright © 2011-2022 走看看