Oracle技术基础复习册--第一,二章

第一章 语法基础
1.合并双列 ||
select ename ||‘的部门编号’|| deptno from emp(不能使用别名)
2.条件表达式 不等于为!= 或 <>
select * from emp where sal<=1600
附:select ename 员工姓名, deptno 部门编号 from emp where deptno=20 or deptno=30 order by sal asc
//不能用is,is只和null一起使用
3.列别名:全部拿单引号括起来就不会出问题
select ename 姓名,sal 月薪 from emp
select ename as 姓名, sal as 月薪 from emp
特殊情况(必须加引号): 列别名中包含有空格
列别名中要求区分大小写
列别名中包含有特殊字符
4.消除重复行 distinct
select distinct ename from emp
5.必考题:带奖金的员工总收入 nvl函数的使用(第二章介绍)
select ename 员工姓名//取别名
nvl(6sal+6sal(1+0.2),0) 工资收入//对空值的处理
nvl(comm,0) 奖金收入//对空值处理并加上别名
(nvl(6sal+6sal(1+0.2),0)+ nvl(comm,0))//总收入 注:记住最后一个不需要加逗号
完整代码:
select ename 姓名, nvl(6sal+6sal(1+0.2),0), nvl(comm,0), (nvl(6sal+6sal(1+0.2),0)+ nvl(comm,0)) from emp
6.查看表结构
select * from emp where 1=0
7.使用where子句
•在比较字符时,要区分大小写
select * from emp where job=‘CLERK’//字符要用单引号括起来
•在比较日期时,日期要用单引号引起来,形式为‘01-1月-1987‘
select * from emp where hiredate > ’01-1月-1924’//指的是1924年之后入职的员工
8.特殊比较运算符 like-模糊查询 %与_的使用
ename like ‘SALES%’ or ename like ‘MAN%’
•查询ename中 倒数第二个字母是E的成员
select * from emp where ename like ‘%E_’
•当ename包含%或_的人员信息时
select * from emp where ename like ‘%!%%’ escape ‘!’
select * from emp where ename like ‘%!_%’ escape ‘!’
9.特殊比较运算符 between and
select * from emp where sal between 3000 and 6000//是闭区间
10.特殊比较运算符 in
select * from emp where sal in(2000,3000,9000,2800,800,1250)
11.逻辑运算符 and or not
•查询奖金不为空的在员工信息
select * from emp where comm is not null
•查询ename中不包含A的员工信息
select * from emp where ename not like ‘%A%’
•年月日的两种表达方法
select * from emp where hiredate <’11-11月-1987’
select * from emp where hiredate •查询sal>2000并且部门在26号部门或者入职在1981-11-11之后的员工信息
select * from emp where sal>2000 and (deptno =26 or hiredate>’11-11月-1981’)
12.排序 order by
•查询所有人员的信息,按照薪资排升序,按照入职日期排降序
select * from emp order by sal asc ,hiredate desc
select ename 姓名, sal 薪资, deptno 部门编号 from emp order by 薪资 asc, 部门编号 desc
//注意只有一个by 而where却不能使用列别名来进行比较挑选,涉及到执行顺序与书写顺序
对于where执行顺序 where在select之前 根据条件对数据库进行挑选
执行顺序 from where select order by
对于order 执行顺序与书写顺序一致 书写顺序:select from where order by
总结回顾
1.distinct使用 2.between and, in, not 3.年月日表示 4.语句执行顺序

第二章 函数
1.字符函数 大小写转换函数
select upper(‘abc’) from dual select lower(‘ABC’) from dual
select initcap(‘smoth’) from dual //upper lower initcap
//initcap是指首字母大写 其余小写
select upper(ename) from emp//无需用引号引起来 引起来会造成如图
select ename from emp where ename =‘smith’//查询不到
select ename from emp where ename = upper(‘smith’)//得到值
2.字符函数 字符拼接函数 concat
select concat(‘ab’,’cd’) from dua//注:函数里面的参数只能有2个
select concat(concat(upper(‘ab’),’cd’),’ef’) from dual //函数的嵌套
3.字符函数 字符个数(长度)函数length
select length(‘abcdrf’) from dual
select eanme, length(ename) from dual
4.字符函数 字符填充函数 lpad/rpad
//lpad(被填充的字符,长度,填充的字符)
select lpad(35,6,0) from dual select lpad(‘zhang’,6,’’) from dual
select ename 姓名, lpad(sal,6,0) 薪资 from emp order by sal asc
lpad是由左向右填充(0035) rpad是由右向左填充(3500)
5.字符函数 去除字符串头部或尾部的字符 trim
(只能去除头部和尾部的空格,不能清除字符内部的空格)
select trim(’12 ’) from dual Select length(trim(’12 ’)) from dual//默认清除空格
select trim(‘1’ from ‘1 2 3 4’) from dual //2 3 4
select trim(‘s’ from ‘sssaadas’) from dual //aada
6.字符函数 字符串截取函数 substr
//select(原始字符串,截取的位置,截取的长度)
select substr(123456,2,2) from dual select substr(‘abcdef’,2,2) from dual
7.字符函数 字符定位函数 instr
//instr(原字符串,子字符串,起始位置(从那个位置开始查找),第几次出现)
select instr(123456,1) from dual //1 Select instr(123456,4) from dual //4
•从第三个r开始截取,截取三个字符
Select substr(‘hhgrgghrjhrruy’,instr(‘hhgrgghrjhrruy’,r,1,3),3) from dual
8.字符函数 字符替换函数 replace
//repalce(s1,s2,s3) 把s1中的s2用s3替换
select replace(‘abcdefg’,’a’,’1’) from dual
9.技巧练习
•1.查询员工姓名中包含大写或小写字母的员工姓名//注意函数的使用
select ename 员工姓名 from emp where instr(ename,‘a’) !=0 or instr(ename, ‘A’) !=0
• 2.查询部门编号为10或20,入职日在81年8月1日之后,并且姓名中包含大写字母A的员工姓名,员工姓名长度//注意or的优先级,要用括号括起来
select ename 员工姓名, length(ename) 员工姓名长度 ,hiredate 入职日期 from emp
where (deptno=10 or deptno=20) and (hiredate>‘01-5月-1981’) and (instr(ename, ‘A’) != 0)
•3. 查询每个职工的编号,姓名,工资
•a要求将查询到的数据按照一定 的格式合并成-一个字符串.
•b前10位:编号,不足部分用
填充,左对齐
•c中间10位:姓名,不足部分用填充,左对齐
•d后10位:工资,不足部分用
填充,右对齐
(分析暂无,答案暂时待证明)
select concat(concat(rpad(nvl(empno,0),10,’’), rpad(nvl(ename,’’),10,’’)),lpad(nvl(sal,0),10,’’)) 职工的编号姓名和工资from emp
//concat函数的嵌套 对员工编号的判空并且左对齐(向右填充)对姓名的判空并左对齐……
10.空值处理 nvl
nvl(6sal+6sal(1+0.2),0) 工资收入//对空值的处理
nvl(comm,0) 奖金收入//对空值处理并加上别名
问题一 后面那个0为什么不能用*来顶替
答:nvl(表达式1,表达式2)这个函数的目的是把一个空值转换为一个实际的值。
表达式1与表达式2必须是同一类型。
nvl2(表达式1,表达式2,表达式3)
若表达式1为空,返回值为表达式3的值,如果表达式1不为空,返回值为表达式2的值
11.数值函数

  1. initcap 2.concat 拼接函数 3.length 4.lpad/rpad 5.trim
    6.substr 7.instr 8.replace 9.nvl 10
    著作单位:缙绅文化 著作人:大阉
    第二章尚未完成,请关注下期内容,可以去我的主页下载word文档进行系统复习

Oracle技术基础复习册--第一,二章_第1张图片

你可能感兴趣的:(笔记,数据库,oracle)