oracle学习笔记.docx

上传人:b****7 文档编号:11195918 上传时间:2023-02-25 格式:DOCX 页数:57 大小:34.10KB
下载 相关 举报
oracle学习笔记.docx_第1页
第1页 / 共57页
oracle学习笔记.docx_第2页
第2页 / 共57页
oracle学习笔记.docx_第3页
第3页 / 共57页
oracle学习笔记.docx_第4页
第4页 / 共57页
oracle学习笔记.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

oracle学习笔记.docx

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

oracle学习笔记.docx

oracle学习笔记

---TESTday01

--查看系统时间

SELECTSYSDATEFROMdual

--DDL语句数据定义语言

CREATETABLEGUOHUA(

NAMEVARCHAR2(21)NOTNULL,

basecNUMBER(3)DEFAULT60,--在赋值过程中体现

oopNUMBER(3),

jvavaSENUMBER(3)

---查看表结构查看表属性,及属性的值得类型

DESCGUOHUA

---删除表

DROPTABLEGUOHUA

INSERTINTOGUOHUA(NAME,OOP,jvavaSE)

VALUES('SDF',34,23)

--查看表中内容

SELECT*FROMGUOHUA

--修改内容

UPDATEGUOHUA

SETBASEC=80

WHERENAME='SDF'

--删除一行

DELETEFROMGUOHUA

WHEREBASEC=60

 

******************DAY02********************

VARCHAR2必须指定长度,char可以不指定字节,默认为1.

4000长度2000长度

long在oracle是字符串,内容长度2GB

CLOB:

存储定长,变长字符串,内容长度4GB

************SELECT语句查询的意思

SELECT(字段,多字段用逗号隔开)表明

WHERE条件

列:

SELECTJOB,ENAME,SALFROMEMP_GH--查看表中的job,ENAME,SAL

WHEREJOB='CLERK'--满足job=clerk,也可以是大于等于号

SELECT*FROMEMP_GH

WHERESAL>2000

****************函数

***CONCAT(CHAR,CHAR)函数,用于连接字符串,变成一个字符串

SELECTCONCAT(ENAME,JOB)FROMEMP_GH

**可以将字符连接

SELECTCONCAT(ENAME,'傻逼')FROMEMP_GH

**CONCAT可以进行嵌套,现将两个字符串连接成为一个字符,在使用concat将下一个进行连接

SELECTCONCAT(ENAME,CONCAT(':

',JOB))FROMemP_GH

***||可以进行字符串连接,与java中的+号一样,更常用!

!

!

SELECTENAME||':

'||jobfromEMP_GH

***字符串长度LENGTH(VARCHAR2)

SELECTENAME,LENGTH(ENAME)FROMEMP_GH

***UPPER,LOWER,INITCAP

全大写,全小写,首字母大写

DUAL是伪表,是用来测试函数的,能查询出一条记录,查询的东西与任何字段无关的使用伪表

SELECT

UPPER('nh'),

LOWER('HELLO'),

INITCAP('helloWORLK'),

INITCAP('HELLOWORLK'),

INITCAP('HELLOWORLK')

FROMDUAL

**实例运用查找emp_gh表中的scott的人的信息所有信息

SELECT*FROMEMP_GH

WHEREENAME=UPPER('scott')

***TRIM/LTRIM/RTRIM

去掉字符去掉左端的字符串去掉右端的字符串

**去掉两段相同的字符,只能是单个字符,不能出现字符串,

SELECTTRIM('l'FROM'llllldfsfdlllllll')FROMDUAL

**去掉左端的字符,只要在右边参数出现过得字符,都去掉,不分顺序

SELECTLTRIM('SDDSSDDSDSDSLITE','SD')FROMDUAL

**去掉右端的字符,只要在右边参数出现过得字符,都去掉,不分顺序

SELECTRTRIM('LITESDDSSSDDDSDSDD','SD')FROMDUAL

**LPAD,RPAD补位函数

SELECTLPAD(SAL,9,'s')FROMemp_gh

SELECTRPAD(SAL,9,'s')fromemp_gh

SELECTLPAD(SAL,5,'')FROMEMP_GH

***SUBSTR截取字符串,下标开始是1,且第二个函数是个数,取都是从左往右取.

若第2个参数超过了界限,则就代表将后面全部取完

**从第十个位置开始取2个,

SELECT

SUBSTR('thinkinginjava',10,2)

FROMDUAL

**从倒数第7个开始取2个,

SELECT

SUBSTR('thinkinginjava',-7,2)

FROMDUAL

SELECT

SUBSTR('thinkinginjava',-7,100)

FROMDUAL

****INSTR查找字符的位置

查找In在thinkinginjava中从第四个位置开始,出现2次后的位置,如果没有则返回0

SELECT

INSTR('THINKINGINJAVA','IN',4,2)

FROMDUAL

**ROUND函数,四舍五人

如果第二个参数是0,可以省略.参数为负表示小数点前

SELECT

ROUND(55.12545,2),

ROUND(55.12545,0),

ROUND(55.12545),

ROUND(55.12545,-1),

ROUND(55.12545,-2)

FROMDUAL

**TRUNC函数,数值得截取,不做四舍五人

SELECT

TRUNC(45.2552,2),

TRUNC(45.2552,0),

TRUNC(45.2552,-1),

TRUNC(45.2552,-2)

FROMDUAL

**MOD(M,N),求余数,m/n的余数

SELECT

ENAME,SAL,MOD(SAL,1000)

FROMEMP_GH

***CEIL(N),FLOOR(N),向上取整,向下取整

SELECTCEIL(45.2)FROMDUAL//46

SELECTFLOOR(45.2)FROMDUAL//45*

***时间戳TIMESTAMP11个字节

**SYSDATE:

返回一个当前时间date类型

**SYSTIMESTAMP:

返回一个当前时间戳

SELECTSYSDATE,SYSTIMESTAMPFROMDUAL

******转换函数

**TO_DATE()时间转换函数,日期格式字符串中除了字母数值和符号之外,其他的字符串都

要使用双引号括起来

SELECT

TO_DATE('2012-12-205:

45:

5','YYYY-MM-DDHH24:

MI:

SS')

FROMDUAL

SELECT

TO_DATE('2012年12月20日5:

45:

5','YYYY"年"MM"月"DD"日"HH24:

MI:

SS')

FROMDUAL

***TO_CHAR()将制定格式的时间变成字符串

SELECT

TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:

MI:

SS')

FROMDUAL

***DATE可以进行计算,

对DATE加减一个数值,等同于加减天数,

两个DATE之间相减,相当于相差的天数

DATE也可以比较大小,越晚越大

查看明天日期

SELECT

SYSDATE+1

FROMDUAL

查看日值时间

SELECT

ENAME,TRUNC(SYSDATE-HIREDATE,0)

FROMEMP_GH

**输入自己生日看活了多少天

SELECT

TRUNC(SYSDATE-TO_DATE('1930-02-21','YYYY-MM-DD'))

FROMDUAL

****LAST_DAY(DATE)查看给定日期的月底是哪天

SELECT

LAST_DAY(SYSDATE)

FROMDUAL

***ADD_MONTHS(DATE,I)给定date加i个月,如果i为负就是减去月

查看员工转正日期,在入职日期上面加上一个3月.

SELECT

ENAME,HIREDATE,ADD_MONTHS(HIREDATE,3)

FROMEMP_GH

查看员工20周年的纪念日

SELECT

ename,ADD_MONTHS(HIREDATE,12*20)

FROMEMP_GH

***MONTHS_BETWEEN(DATE1,DATE2)

返回date1余date2之间相差多少个月

***查看入职多少个月了

SELECT

MONTHS_BETWEEN(SYSDATE,HIREDATE)

FROMEMP_GH

**NEXT_DAY(DATE,i)

查看指定日期之后一天开始的周(i-1),列,5代表周4

今天周六

SELECT

NEXT_DAY(SYSDATE,1)//明天

FROMDUAL

SELECT

NEXT_DAY(SYSDATE,7)//下周六

FROMDUAL

*****LEAST/GREATEST函数

最小值/最大值

SELECT

LEAST(SYSDATE,SYSDATE+5)--最小值

FROMDUAL

SELECT

GREATEST(SYSDATE,SYSDATE+5)--最大值

FROMDUAL

****EXTRACT()获取指定时间分量的值

查看满足1981年入职的员工

SELECT

ENAME,HIREDATE

FROMEMP_GH

WHEREEXTRACT(YEARFROMHIREDATE)=1981

*******************null的含义

**创建表student

CREATETABLESTUDENT_GH(

IDNUMBER(4),

NAMEVARCHAR2(20),

GENDERCHAR

(1)

**查看

DESCSTUDENT_GH

**插入

INSERTINTOSTUDENT_GH

VALUES(1000,'李莫愁','F');

INSERTINTOSTUDENT_GH

VALUES(1001,'林平之',NULL);--显示插入

INSERTINTOSTUDENT_GH(ID,NAME)--隐身插入

VALUES(1002,'张无忌');

**查看内容

SELECT*FROMSTUDENT_GH

**修改性别

UPDATESTUDENT_GH

SETGENDER=NULL

COMMIT

**删gender为null的

判定是否为null是使用isnull或isnotnull

DELETESTUDENT_GH

WHEREGENDERISNULL

***null的计算

null与字符串a拼接,结果是字符串a

null与数字运算,结果是null

**查看emp表中的工资加奖金

SELECT

ENAME,SAL,COMM,SAL+COMM

FROMEMP_GH

**空值函数

NVL(A1,A2)

若A1为null,则返回A2值,该函数作用就是将null值转变成非null值A2

**查看工资

SELECTENAME,SAL,COMM,SAL+NVL(COMM,0)FROMEMP_GH

**查看每个人的奖金情况,

有奖金就显示有奖金,没有奖金就显示没有奖金

NVL2(A1,A2,A3),如果A1不为null返回A2,为null返回A3

SELECT

ENAME,COMM,

NVL2(COMM,'有奖金','没有奖金')

FROMEMP_GH

***TEST*********************

1:

查询emp表中数据,列出一列,内容为名字与职位

显示格式:

ename:

JOB

SELECT

ename||':

'||JOB

FROMEMP_GH

SELECT

CONCAT(ENAME,CONCAT(':

',JOB))

FROMEMP_GH

2:

查看每个员工职位的字符个数

SELECT

JOB,LENGTH(JOB)

FROMEMP_GH

3:

将所有员工的名字以小写形式,与首字母大写形式

查询出来,第一列为小写形式,第二列为首字母大写

SELECT

ename

FROMEMP_GH

WHERELOWER(eNAME)='ward'

SELECT

ename

FROMEMP_GH

whereINITCAP(ENAME)='Scott'

4:

将字符串'aaaaaabaaaaa'中左右两边的a去除

SELECT

trim('a'FROM'aaaaaaabbaaaaaa')

FROMDUAL

5:

显示每个员工的名字,要求显示10位,第一列左对齐效果,第二列右对齐效果

SELECT

RPAD(ENAME,10,'')

FROMEMP_GH

SELECT

LPAD(ENAME,10,'')

FROMEMP_GH

6:

截取字符串'DOCTORWHO'中的'WHO'

SELECT

SUBSTR('DOCTORWHO',8,3)

FROMDUAL

7:

查看'DOCTORWHO'中'WHO'的位置

SELECT

INSTR('DOCTORWHO','WHO',4)

FROMDUAL

8:

分别查看55.789四舍五入保留小数点后2位,整数位,十位后的

数字,显示成三列。

SELECT

ROUND(55.78,2),

ROUND(55.78),

ROUND(55.78,-1)

FROMDUAL

9:

分别查看55.789截取后保留小数点后2位,整数位,十位后的

数字,显示成三列。

SELECT

TRUNC(55.789,2),

TRUNC(55.789),

TRUNC(55.789,-1)

FROMDUAL

10:

查看每名员工工资百位以下的数字?

SELECT

ENAME,SAL,MOD(SAL,100)

FROMEMP_GH

11:

查看每名员工从入职到今天一共多少天,若有小数则向上取整。

SELECT

ENAME,HIREDATE,

CEIL(SYSDATE-HIREDATE)

FROMEMP_GH

12:

查看从2008-08-08号到今天为止一共经历了多少天?

SELECT

TRUNC(SYSDATE-TO_DATE('2008-08-08','YYYY-MM-DD'))

FROMDUAL

13:

将每名员工入职时间以例如:

1981年12月3日

的形式显示

SELECT

ENAME,JOB,

TO_CHAR(HIREDATE,'YYYY-MM-DD')

FROMEMP_GH

14:

查看每个员工入职所在月的月底是哪天?

SELECT

LAST_DAY(HIREDATE)

FROMEMP_GH

15:

查看每名员工转正日期(入职后3个月)

SELECT

ADD_MONTHS(HIREDATE,3)

FROMEMP_GH

16:

查看每名员工入职至今共多少个月?

SELECT

MONTHS_BETWEEN(SYSDATE,HIREDATE)

FROMEMP_GH

17:

查看从明天开始一周内的周日是哪天?

SELECT

NEXT_DAY(SYSDATE,1)

FROMDUAL

18:

查看82年以后入职的员工的入职日期,82年以前的按照

1982年01月01号显示。

格式都是DD-MON-RR(默认格式)

SELECT

ENAME,HIREDATE,

GREATEST(HIREDATE,TO_DATE('1982-01-01','YYYY-MM-DD'))

FROMEMP_GH

19:

查看每名员工的入职年份?

SELECT

ENAME,HIREDATE,

EXTRACT(YEARFROMHIREDATE)

FROMEMP_GH

20:

显示每个员工的总收入(工资加奖金),奖金为NULL的只看工资

SELECT

ENAME,SAL,COMM,

SAL+NVL(COMM,0)

FROMEMP_GH

21:

使用NVL2实现20题的需求

SELECT

ENAME,SAL,COMM,

NVL2(COMM,SAL+COMM,SAL)

FROMEMP_GH

 

*************************day03***********查询语句********************************

字句就是关键字+xx列SELECTenama

SELECT字段,表达式,函数

****别名

在使用表达式或函数时,字段变长,可以使用除关键字以外的作为别名

添加方式,1.AS别名SELECTTO_CHAR(HIREDATE,'YYYY-MM-DD')ASHIERDATE

2.在表达式后空格加别名,别名不能有空格SELECTTO_CHAR(HIREDATE,'YYYY-MM-DD')HIERDATE

3.要求区分大小写,使用双引号,且别名中间可以用空格SELECTTO_CHAR(HIREDATE,'YYYY-MM-DD')"HIERDATE"

SELECTENAME,SAL*12ASSAL,TO_CHAR(HIREDATE,'YYYY-MM-DD')ASHIREDATE

FROMEMP_GH

SELECTENAME,SAL*12SAL,TO_CHAR(HIREDATE,'YYYY-MM-DD')HIREDATE

FROMEMP_GH

SELECTENAME,SAL*12"sal",TO_CHAR(HIREDATE,'YYYY-MM-DD')"HIREDATE"

FROMEMP_GH

***WHERE条件语句>,<,>=,<=,<>(不等于),=

查找10号员工的信息,

SELECT*FROMEMP_GH

WHEREDEPTNO=10;

查找销售人员的信息

SELECTENAME,SAL,JOBFROMEMP_GH

WHEREJOB='SALESMAN'

查工资高于2000

SELECTENAME,SAL,JOBFROMEMP_GH

WHERESAL>2000

查部门不是10的信息

SELECTENAME,SAL,JOB,DEPTNOFROMEMP_GH

WHEREDEPTNO<>10

查找入职时间在1982-1-1之后的人员信息

SELECTENAME,SAL,JOBFROMEMP_GH

WHEREHIREDATE

****ANDOR关键字,and的优先级高于or,及先计算and在计算or

满足条件SAL>1000或DEPTNO<>10

SELECTENAME,SAL,DEPTNOFROMEMP_GH

WHERESAL>1000ORDEPTNO<>10

满足条件SAL>1000且DEPTNO<>10

SELECTENAME,SAL,DEPTNOFROMEMP_GH

WHERESAL>1000ANDDEPTNO<>10

工资大于1000,job是salesman和

SELECTENAME,SAL,JOBFROMEMP_GH

WHERESAL>1000AND(JOB='SALESMAN'ORJOB='CLERK')

****LIKE条件

可以进行模糊匹配字符串,支持两个通用符

%:

0-多个字符串;_:

单一的字符

查看第二个字符为A的

SELECTENAME,SAL,JOBFROMEMP_GH

WHEREENAMELIKE'_A%'

***IN和NOTIN

IN(LIST),NOTIN(LIST)

JOB中包含'MANAGER'和'CLERK'的所有员工信息

SELECTENAME,JOB,SALFROMEMP_GH

WHEREJOBIN('MANAGER','CLERK')

JOB中不包含'MANAGER'和'CLERK'的所有员工信息

SELECTENAME,JOB,SALFROMEMP_GH

WHEREJOBNOTIN('MANAGER','CLERK')

***BETWEENAND在两者之间,小的在前,大的在后(包含上下线的一个范围[1500,3000],如果

大的在前,就会出现无结果)

SELECTENAME,SAL,JOBFROMEMP_GH

WHEREsalBETWEEN1500AND3000--[1500,3000]

***ISNULLISNOTNULL

***ANY和ALL条件

ANY(LIST):

大于列表其中之一即可

ALL(LIST):

大于列表所有

不能单独使用,要配合>,<,=等使用,一般在子查询中使用

SELECTENAME,SALFROMEMP_GH

WHERESAL>ANY(800,900,1500)--后期再列表中是,表达式,不是直接写结果.

***函数,表达式条件

SELECTENAME,JOB,SALFROMEMP_GH

WHERESAL*12>50000

SELECTENAME,SAL,JOBFROMEMP_GH

WHEREUPPER(ENAME)=UPPER('SCOTT')

***DISTINCT去除重复

查看公司中有哪些职位,单字段去重

SELECTDISTINCTJOBFROMEMP_GH

多字段去重,保证,多字段的组合没有重复的

SELECTDISTINCTJOB,DEPTNOFROMEMP_GH

*******排序ORDERBY语句

排序,ASC为升序,

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

当前位置:首页 > 幼儿教育 > 家庭教育

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

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