Oracle超详细学习笔记.docx

上传人:b****8 文档编号:23827055 上传时间:2023-05-21 格式:DOCX 页数:63 大小:30.83KB
下载 相关 举报
Oracle超详细学习笔记.docx_第1页
第1页 / 共63页
Oracle超详细学习笔记.docx_第2页
第2页 / 共63页
Oracle超详细学习笔记.docx_第3页
第3页 / 共63页
Oracle超详细学习笔记.docx_第4页
第4页 / 共63页
Oracle超详细学习笔记.docx_第5页
第5页 / 共63页
点击查看更多>>
下载资源
资源描述

Oracle超详细学习笔记.docx

《Oracle超详细学习笔记.docx》由会员分享,可在线阅读,更多相关《Oracle超详细学习笔记.docx(63页珍藏版)》请在冰豆网上搜索。

Oracle超详细学习笔记.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1