Oracle超详细学习笔记.docx
- 文档编号:23827055
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:63
- 大小:30.83KB
Oracle超详细学习笔记.docx
《Oracle超详细学习笔记.docx》由会员分享,可在线阅读,更多相关《Oracle超详细学习笔记.docx(63页珍藏版)》请在冰豆网上搜索。
Oracle超详细学习笔记
-----员工培训----
--1.最简单的查询
--例
SELECT*
FROMemployees;
DESCemployees;
SETlinesize600;
SETPAGESIZE50;
--例2
SELECTtable_nameFROMuser_tables;--查询数据库中所有表名
--2.查询特定的列
--例
SELECTemployee_id,fisrt_name,last_name.salary
FROMemployees;
--3.在SELECT子句中使用直接量
--例
SELECT5
FROMemployees;
-----------------------
SELECT5
FROMdual;--这是Oracle提供的伪表
--例2:
SELECT'HelloOracleSQL'--在Oracle中如何表示字符串常量
FROMemployees;
SELECT'HelloOracleSQL'--在Oracle中如何表示字符串常量
FROMdual;
--例3:
SELECT'HelloOracle''sSQL'--用两个连续单引号进行单引号转义
FROMemployees;
--4在SELECT子句中使用算术表达式
--例1:
查询员工的编号、姓名和年薪
SELECTemployee_id,fist_name,last_name,salry,salary*12
FROMemployees;
--例2:
SELECT5/2
FROMdual;
--5.给例定义别名
--例1:
SELECTemployee_idASid
FROMemployees;
--例2:
SELECTemployee_idAS"Id"--双引号中的字符原样显示
FROMemployees;
--例3:
SELECTemployee_id,fist_name,last_name,salry,salary*12ASannual_salary
FROMemployees;
--例4:
SELECTemployee_id,fist_name,last_name,salry,salary*12AS"annualsalary"
FROMemployees;
--如果别名有特殊字符必须使用双引号
--6.字符串的链接运算符
--例:
SELECTemployee_id||''||fist_name,last_name,salry,salary*12ASannual_salary
FROMemployees;
--7.过滤重复记录
--例1:
SELECTDISTINCTdepartment_id
FROMemployees;
--例2:
SELECTDISTINCTdepartment_id,job_id
FROMemployees;
--第二章过滤查询和结果集排序
--1.使用WHERE子句过滤记录
--例1:
SELECT*
FROMemployees
WHEREsalary>8000;
--例2:
SELECTemployee_id,first_name,last_name,salary
FROMemployees
WHEREsalary=17000;
--例3:
SELECTemployee_id,first_name,last_name,salary
FROMemployees
WHEREsalary<>17000;--!
=
--比较运算符号:
>,>=,<,<=,=,!
=或<>
--例4
SELECTemployee_id,first_name,last_name,salary
FROMemployees
WHEREsalary>=2500ANDsalary<=17000;
--逻辑运算符:
AND,OR,NOT
--2.在WHERE子句中使用字符串和日期
--例1:
查询职位ID为st_clerk的员工信息
SELECTemployee_id,job_id,first_name,
FROMemployees
WHEREjob_id='ST_CLERK';
--表中字段的值是区分大小写的
--例2:
查询1998年7月9日入职的员工信息
SELECTemployee_id,job_id,first_name
FROMemployees
WHEREhire_date='09-7月-1998';
--日期直接量必须以字符串的形式来体现
--Oracle的日期是格式敏感的
--标准日期表示DD-MM-RR
--3.其他比较运算符
--1)BETWEENAND
--例1:
查询工资在【2500,7000】上的员工信息
SELECTemployee_id,job_id,first_name,salary
FROMemployees
WHEREsalaryBETWEEN2500AND7000;
--包含边界值
--第一个值要小于第二个值
--练习:
查询1998年入职的员工信息
SELECTemployee_id,job_id,first_name,salary,hire_date
FROMemployees
WHEREhire_dateBETWEEN'01-1月-1998'AND'31-12月-1998';
--2)IN
--例1:
查询职位ID是ST_CLERK或者ST_MAN的员工
SELECTemployee_id,job_id,first_name,salary,hire_date
FROMemployees
WHEREjob_idIN('ST_CLERK','ST_MAN');
--例2
SELECTemployee_id,job_id,first_name,salary,hire_date
FROMemployees
WHERENOTjob_idIN('ST_CLERK','ST_MAN');
----------------------------------------------------------------------------
SELECTemployee_id,job_id,first_name,salary,hire_date
FROMemployees
WHEREjob_idNOTIN('ST_CLERK','ST_MAN');
--3)LIKE
--例1:
模糊查询
SELECTemployee_id,job_id,first_name,salary,hire_date
FROMemployees
WHEREjob_idLIKE'ST%';
--通配符:
%任意多个字符,_一个字符。
--只能用于日期或者字符串
--练习:
--查询first_name首字母是大写S,第三个字母是e的员工
SELECTemployee_id,job_id,first_name,salary,hire_date
FROMemployees
WHEREfirst_nameLIKE'S_e%';
--查询first_name含有字母a和e的员工
SELECTemployee_id,job_id,first_name,salary,hire_date
FROMemployees
WHEREfirst_nameLIKE'%a%e%'ORfirst_nameLIKE'%e%a%';
--查询1988年入职的员工
SELECTemployee_id,job_id,first_name,salary,hire_date
FROMemployees
WHEREhire_dateLIKE'%98';
--例2:
查询职位ID含有_P的员工信息
SELECTemployee_id,job_id,first_name,salary,hire_date
FROMemployees
WHEREjob_idLIKE'%\_P%'ESCAPE'\';
--转义字符是开发者自己定义的
--4.SELECT,FROM和WHERE子句的执行顺序```
--例:
SELECTemployee_id,last_nameASename,salary
FROMemployees
WHERElast_name='King';--Error,在WHERE子句中不能使用列的别名
--执行顺序:
FROM--------------->WHERE------------->SELECT
--5).结果集排序
--例:
SELECTemployee_id,first_name,last_name,salaty
FROMemployees
ORDERBYsalaryDESC;
--默认为升序排列(ASC),降序需要在字段后使用DESC
--例2:
SELECTemployee_id,first_name,last_name
FROMemployees
ORDERBYsalary
--例3:
SELECTemployee_id,first_name,last_name,salaty
FROMemployees
ORDERBY4;--是字段在SELECT子句中的索引
--例4:
SELECTemployee_id,first_name,last_name,salaty
FROMemployees
WHEREsalary>6000
ORDERBYsalary;
--例5:
查询员工的编号、姓名和年薪、并按年薪排序
SELECTemployee_id,first_name,last_name,salaty*12
FROMemployees
ORDERBYsalary*12;
----------------------------------------------
SELECTemployee_id,first_name,last_name,salaty*12ASannual
FROMemployees
ORDERBYannual;
--语句的执行顺序FROM------>WHERE--------->SELECT---------->ORDERBY
--例6
SELECTemployee_id,first_name,last_name,salaty*12AS"annualSalary"
FROMemployees
ORDERBY"annualSalary";
--别名在双引号中,是大小写敏感的
--例7
SELECTemployee_id,first_name,last_name,salaty
FROMemployees
ORDERBYjob_id,salary;
----------------------------
SELECTemployee_id,first_name,last_name,salaty
FROMemployees
ORDERBYjob_id,salaryDESC;--只约束salary
--第三章单行函数
--LOWER/UPPER/INITCAP
--例1:
将查到的列的字符串全部转换成小写输出
SELECTLOWER(last_name)
FROMemployees;
--例2:
将将查到的列的字符串全部转换成大写输出
SELECTUPPER(last_name)
FROMemployees;
--例3:
将每个字符串的首字母变为大写
SELECTINITCAP('last_nameHELLOdog')
FROMdual;
--CONCAT/LPAD/RPAD
--例1:
链接字符串
SELECTfirst_name||''||last_nameASfullname
FROMemployees;
-------------------------------------------
SELECTCONCAT(first_name,CONCAT('',last_name))ASfullname
FROMemployees;
--例2:
在检索到的结果前循环加上第三个参数所表示字符串
--第二个参数为输出字符串长度,若参数1得长度大于限制从右边舍去
SELECTLPAD(employee_id,8,'123')
FROMemployees;
-------------------------------
--在检索到的结果后循环加上第三个参数所表示字符串
--第二个参数为输出字符串长度,若参数1得长度大于限制从右边舍去
SELECTRPAD(employee_id,2,'123')
FROMemployees;
--SUBSTR
--1:
(使用2个参数)从第二个参数所表示的值开始截取字符串
SELECTSUBSTR('ABCD1234234NARSna',4)
FROMdual;
SELECTSUBSTR(last_name,4),last_name
FROMemployees;
--INSTR
--例1:
查找第二参数的首字母在第一个参数中的位置
--若不匹配,则返回0
SELECTINSTR('SQLallowsfordynamicDBchanges','all')
FROMdual;
--指定起始位置(只返回按要求第一次出现位置)
SELECTINSTR('SQLallowsfordynamicDBchanges','a',6)
FROMdual;
--指定起始位置并指明第几次出现
SELECTINSTR('SQLallowsfordynamicDBchanges','a',6,2)
FROMdual;
--5)TRIM
--例1:
去掉字符串两端空格
SELECTTRIM('VFBAPSTAK')
FROMdual;
--例2:
去掉字符串前端指定的字符
SELECTTRIM(LEADING'A'FROM'AAABAVFBAPSTAK')
FROMdual;
--例3:
去掉字符串末端指定的字符
SELECTTRIM(TRAILING'A'FROM'AAABAVFBAPSTAKABAA')
FROMdual;
--例4:
去掉字符串两端指定的字符
SELECTTRIM('A'FROM'AAABAVFBAPSTAKABAA')
FROMdual;
--6)REPLACE
--例1:
用第三个参数替换第二个参数
SELECTREPLACE('SQL*PLUSsupportsloopsorifstatements.',
'supports',
'doesnotsupport')
FROMdual;
--7)LENGTH
--例1:
统计参数字符串长度
SELECTLENGTH('SQLletsyousupportsloopsorifstatements.'
)
FROMdual;
--2。
数值函数
--1)ROUND/TRUNC
--例1:
保留参数2所表示的有效位小数,TRUNC不四舍五入
SELECTROUND(168.888,2),TRUNC(168.888,2)
FROMdual;
------------------------
SELECTROUND(168.888,0),TRUNC(168.888,0)
FROMdual;
-----------------
--无参数取整
SELECTROUND(168.888),TRUNC(168.888)
FROMdual;
---------
--从个位开始取0运算
SELECTROUND(168.888,-2),TRUNC(168.888,-2)
FROMdual;
--2)MOD
--例:
求余运算
SELECTMOD(9,4)
FROMdual;
--3)CEIL/FLOOR
--例:
向上向下取整
SELECTCEIL(34.5),FLOOR(34.5)
FROMdual;
--3)日期函数
--1)SYSDATE
--例:
查询当前系统时间
SELECTSYSDATE
FROMdual;
--Oracle默认日期格式:
DD-MON-YY
--例2:
7天后的日期
SELECTSYSDATE+7
FROMdual;
--例3:
100小时之后的时间
SELECTSYSDATE+100/24
FROMdual;
--2)MONTHS_BETWEEN
--例1:
计算两个日期之间相隔几个月
SELECTMONTHS_BETWEEN('01-12月-2010','31-1月-2010')
FROMdual;
--3)ADD_MONTHS
--例:
在指定日期后加上参数二指定的月份
SELECTADD_MONTHS(SYSDATE,3)
FROMdual;
--4)NEXT_DAY
--例:
当前日期之后的星期一
SELECTNEXT_DAY(SYSDATE,'星期一')
FROMdual;
--系统时间为中文
SELECTNEXT_DAY(SYSDATE,'MONDAY')
FROMdual;
-------------------------
SELECTNEXT_DAY(SYSDATE,'MON')
FROMdual;
--系统时间为英文
SELECTNEXT_DAY(SYSDATE,'1')
FROMdual;
--使用数字,1代表周日
--5)LAST_DAY
--例:
返回当前月份的最后一天
SELECTLAST_DAY(SYSDATE)
FROMdual;
--4.字符串。
数字和日期之间的转换函数
--准备:
--Oracle日期类型DATE数据的内部存储格式:
世纪、年。
月。
日。
时。
分。
秒
--日期的缺省输入和输出的格式:
DD-MON-RR
--1)TO_CHAR
--例1:
以默认日期格式输出:
DD-MON-RR
SELECTfirst_name,last_name,TO_CHAR(hire_date)
FROMemployees;
--例2:
SELECTfirst_name,last_name,
TO_CHAR(hire_date,'YYYY-MM-DDDYHH24:
MI:
SS')
FROMemployees;
--第一个参数必须是日期类型,不能是以字符串形式表示的日期直接量
--格式描述:
--年:
YYYY、YY、RR
--月:
MM、MON、MONTH
--日:
DD
--星期:
DY、DAY
--小时:
HH24、HH
--分:
MI
--秒:
SS
--例3:
借助TO_CHAR函数获取日期中存储的特殊值
SELECTTO_CHAR(SYSDATE,'DY')
FROMdual;
--例4:
(数值格式化)
SELECTfirst_name,last_name,TO_CHAR(salary*1.6,'$999,999.99')
FROMemployees;
--格式描述
/*
9:
一位数字
0:
一位数字,但会保留前导0
$:
显示美元符号
L:
显示本地货币符号
.:
显示小数点
:
显示千分位
*/
--2)TO_DATE
--例1:
使用缺省格式化描述
SELEC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 详细 学习 笔记