Oracle学习笔记Word下载.docx

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

Oracle学习笔记Word下载.docx

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

Oracle学习笔记Word下载.docx

约束的分类8

约束类型的命名9

删除约束9

查看约束9

rownum9

视图9

创建视图9

删除视图9

替换视图9

不能更新视图的创建条件9

创建只读视图10

序列10

创建序列10

使用序列10

删除序列10

修改序列的增长幅度10

从哪开始(指定开始位置)10

同义词10

创建同义词:

10

删除同义词10

创建用户10

Oracle

在OracleSQLPlus中首先要进行环境变量设置:

1)setlinesize长度

2)setpagesize长度(修改每页显示记录的行数)

因为没法修改输入的内容,使用本机的记事本程序进行编辑,直接在命令窗口中输入"

ed文件名称"

,会提示新建文件,编辑完成之后就通过@文件名的方式进行执行,若执行其他文件则@路径,若后缀名为‘sql’的话,不用输入后缀也可以找到,默认的后缀名就是“*.sql”

显示现在正在连接的用户是哪个:

showuserselect;

得到数据库中全部表名称:

select*fromtab;

得到一个表的完整结构:

desc表名;

可以使用其他的用户连接,例如sys或system用户:

conn用户名/密码[ASSYSDBA|SYSOPER]

如果现在连接的是超级管理员(sys):

则在连接的最后必须写上ASSYSDBA,以系统管理员的身份登陆

如果访问别的用户下的表,则必须加上用户名,即:

表的完整名称:

“scott.emp”

UPPER()(将小写变成大写)

例:

SELECTUPPER('

smith'

)FROMDUAL;

----DUAL(虚拟表)

LOWER()(将小写变成大写)

SELECTLOWER('

HELLOWORLD'

)FROMDAUL;

initcap()(将单词的第一个字母变成大写)

concat()(字符串连接)

substr()(字符串截取):

截取点从0或1开始,效果是相同的,如果输入的数十负数,即表示倒着截取

length()(字符串长度)

replace()(字符串替换)

trim(’h’from‘helloworld’)(左右去)

instr():

找到指定字符的指定数值位置

ROUND()(四舍五入),也可指定小数的位数,负数时对整数的四舍五入

TRUNC()(截断小数):

不保留任何小数,也不进行四舍五入,也可指定小数点的保留位数

不写小数,从整位截

MOD()(取余)

日期-数字=日期

日期+数字=日期

日期-日期=数字(天数)

当前日期:

sysdate

MONTHS_BETWEEN():

求出给定日期范围的月数

ADD_MONTHS():

在指定日期上加上指定的月数,求出之后的日期

NEXT_DAY():

下个星期是几号(假设日期是星期三,要查星期五的日期,不是下个星期的星期五)

LAST_DAY():

求出给定日期的最后一天日期

转换函数:

TO_CHAR():

转换成字符串

1)TO_CHAR(hiredate,'

yyyy-mm-dd'

)时,例如5月会显示05,此时这个0为前导0.,若想去除前导0,则TO_CAHR(hiredate,'

fmyyyy-mm-dd'

)、

例如:

to_char(hiredate,’yyyy-mm-ddHH24:

mi:

ss’)

2)在数字钟加入符号,例如加逗号:

TO_CAHR(sal,'

999,99'

)------9表示一位数字;

加美元符号TO_CAHR(sal,'

$999,99'

);

根据本地加TO_CAHR(sal,'

L999,99'

)------L代表Local

TO_NUMBER():

转换成数字

TO_DATE():

转换成日期

NVL()转换一个空值为实际值

NVL2(1,2,3)如果1为空返回3,如果1不为空返回2

DECODE()相当于IF...ELSEIF...ELSE例DECODE(job,'

CLERK'

'

业务员'

MANAGER'

经理'

分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组条件的查询语句

selectdeptno,max(avg(sal))fromempgroupbydeptno;

是错误的,不能再查询deptno。

(条件不能直接获得时考虑子查询)

子查询:

可以出现在where子句,having子句,from子句;

可用在建表,插入,更新语句中;

也必须在()中编写代码,可以相当于是临时表放在from后,主查询,子查询可以在不同的表中得到数据

分三类:

1)单列子查询:

返回的结果是一列的内容,出现的几率最高

2)单行子查询:

返回多个个列,有可能是一条完整的记录

3)多行子查询:

返回多条记录

在子查询中,存在以下三种查询的操作字符(多行比较符):

1)IN-----指定一个查询的范围

2)ANY-----=ANY:

与IN的操作符功能完全一样

----->

ANY:

比里面最小的值要大

-----<

比最大的值要小

3)ALL----->

ALL:

比最大的值要大,NIT

ALL:

比最小的值要小

IN<

>

子查询可以进行多列子查询(一般不建议使用)

表的复制:

(此语法只在Oracle中起作用)

createtable表名称as子查询

createtablemyempasselect*fromemp;

上句复制的是表结构和表内容

如果后跟一个永远不可能成立的条件(例如where1==2),则值复制表结构,不复制表内容

事务处理:

就是保证数据操作的完整性,所有的操作要么同时成功要么同时失败

每一个连接到数据库的用户都表示创建了了一个session,一个session所作的修改不会立刻反应到数据库的真实内容之上,而是等待用户提交!

在数据库的操作中提供了以下的两个主要命令完成事务的处理:

提交事务:

commit

回滚事务:

rollback

如果事务已经被提交了,则肯定无法回滚

死锁:

一个session如果更新了数据库中的记录,其他session是无法立即更新的,要等待对方提交后才允许更新!

常用数据类型:

CLOB:

大对象,表示大文本数据,一般可以存放4G文本

BLOB:

大对象,表示二进制数据,最大可以存放4G例如:

电影,音乐,图片

表的建立:

CREATETABLE表名称(

字段名称1字段类型[默认值],

字段名称2字段类型[DEFAULT默认值],

........,

字段名称n字段类型[DEFAULT默认值],

表命名和列命名:

以字母开始

1-30个字符长度

只能包含A-Z,a-z,0-9,_,$和#

同一个用户下不能重名

不能用Oracle服务器中的保留字

大小写不敏感

增加列:

altertable表名称add(列的名称列的类型default默认值,列的名称列的类型default默认值.....)

注意:

不能指定新添加列的位置,新列将成为最后一列

修改表结构:

altertable表名称modify(列的名称列的类型default默认值)

如果表中存在很长的数据,则无法将表的长度缩小

modify改的是列的长度,类型,不能改列名

改列名(Oracle10之后):

altertable表名renamecolumn旧的列名称to新的列名称

修改表的名称(Oracle):

rename旧表名to新表名

查看本用户所拥有的表、视图、同义词和序列

select*fromuser_catalog

删除列:

altertable表名称dropcolumn(列名)

一次只能有一列被删除;

一旦一列被删除,它不能再恢复,最后一列不允许删除

表的重命名(只能在Oracle中使用):

rename旧的表名称to新的表名称

表的删除:

droptable表名称

一旦被执行,就不能撤回。

不仅删除记录也删除了表的结构

delete只删除记录,可以回滚

截断表(只删除记录,性能更好):

如果现在假设想要清空一张表的数据,但是同时又不需要回滚,可以立即释放资源就需要使用截断表,不触发表的删除触发器

truncatetable表名称

日期类型:

timestamp:

带小数秒的日期,是date类型的一种扩展

 

(读一致性)

脏读:

同一时间对同一数据的动作,数据的一致性不完整,一个用户所做的改变和另一个用户所做的改变冲突

脏数据:

锁(lock)(Oracle)

(自动上锁):

独占锁(排它锁):

不允许其他用户访问

共享锁:

允许其他用户访问

约束的分类

1)主键约束(primarykey):

表示是一个唯一的标识,并且不能为空

可以通过constraint指定一个约束的名字,例:

constraint名字primarykey(pid)

2)唯一约束(unique):

在表中只允许建立一个主键约束,而其他列不希望出现重复的话,则使用唯一约束

可以通过例如constraint名字unique(name)自己定义

3)检查约束(check):

检查一个列中插入的内容是否合法

例如年龄的取值范围:

check(agebetween0and150)

性别的取值范围:

check(sexin('

男'

女'

中'

))

手工命名:

constraint名字check(sexin('

4)非空约束(notnull):

姓名这样的字段里面的内容就不能为空,插入数据的时候必须插入内容

5)外键约束:

在两张表中进行约束操作

主-外键约束(foreignkey):

父表person

子表book

constraintperson_book_pid_fkforeignkey(pid)referencesperson(pid)

在子表中设置的外键在父表中必须是主键或者唯一键

删除时应该先删除子表在删除父表

强制删除:

droptablebookcasecadeconstraint(一般不使用)

希望一个表中的数据在删除时,可以自动删除其对应的子表的记录,这是可以使用级联删除:

constraintperson_book_pid_fkforeignkey(pid)referencesperson(pid)ondeletecasecade

添加约束语法:

用altertable语句:

添加或删除语句,但不修改它的结构

启用或禁用约束

用modify添加一个notnull约束

altertable表名addconstraint约束的名字约束的类型(约束字段)

用ALTERTABLEMODIFY语法为Employees表中Salary字段添加一个NOTNULL约束

altertableemployeesmodify(salaryconstraintemp_sal_nnnotnull)

约束类型的命名一定要统一:

1)primarykey:

主键字段_PK

2)unique:

字段_UK

3)check:

字段_CK

4)foreignkey:

父字段_子字段_FK

删除约束:

alerttable表名称dropconstraint约束名称

查看约束:

查询user_constraint表

rownum:

表示行号,实际上是一个列,但是这个列是一个伪列,此列可以再每张表中出现,本身采用自动编号

如果现在想要进行中间的截取操作,则只能采取子查询

视图:

一个视图就是封装了一条复杂的查询语句(是不应该包含真实数据的),视图的创建条件不应该更改(withcheckoption),视图是用来查询的,所以不应该允许更改(withreadonly)

创建视图:

createview视图名称as子查询

删除视图:

dropview视图名称

替换视图:

createorreplaceview视图名称as子查询

不能更新视图的创建条件:

createview视图名称as子查询withcheckoption

创建只读视图:

createorreplaceview视图名称as子查询withreadonly

序列:

自动增长

创建序列:

createsequence序列名称

CREATESEQUENCEsequence

[INCREMENTBYn]-----序列的增长幅度

[STARTWITHn]-----从指定开始位置开始

[{MAXVALUEn|NOMAXVALUE}]-----最大值

[{MINVALUEn|NOMINVALUE}]-----最小值

[{CYCLE|NOCYCLE}]-----是否循环

[{CACHEn|NOCACHE}]-----有无缓存

序列创建完成以后,所有的自动增长应该由用户自己处理,所以在序列中提供了一下的两种操作:

nextVal:

取的序列的下一个内容

currVal:

取的序列的当前内容

使用序列;

insertintotestseq(nest,curr)values(myseq.nextVal,myseq.currVal)---testseq为表名,myseq为序列名

删除序列:

dropsequence序列名称

修改序列的增长幅度(默认情况下序列从1开始):

incrementby长度

从哪开始(指定开始位置):

startwithn

同义词(只适用于Oracle):

可以让其他用户通过一个名称方便的访问‘用户名.表名称’

createsynonym同义词名称for用户名.表名称

删除同义词:

dropsynonym同义词名称

创建用户:

createuseridentifiedby密码

如果想创建用户,应该使用管理员登陆

创建后要为用户授session的权(grantcreatesessionto用户)

为用户授权:

grant权限1,权限2.....to用户

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

当前位置:首页 > 外语学习 > 其它语言学习

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

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