---------Oracle 的基本操作 读《Oracle + 11g + 从入门到精通》
1.启动Oracle数据库:启动例程、装载数据库和打开数据库
1)一般启动:参数文件-------------->控制文件----------->数据文件、日志文件
2)Windows服务窗口启动
3)SQLPLUS启动(STARTUP命令)
启动模式说明 SQL*PLUS中提示信息
NOMOUNT 启动例程、不装载数据库 Oracle例程已经启动
MOUNT 启动例程、装载数据库、不打开 Oracle例程已经启动 数据库装载完毕
OPEN 启动例程,装载并打开数据库 Oracle例程已经启动 数据库装载完毕 数据库已经打开
STARTUP[NOMOUNT|MOUNT|OPEN|FORCE][RESTRICT][PFILE='pfile_name']; /*初始化参数文件*/
2.关闭Oracle数据库:关闭数据库,卸载数据库,终止例程
SHUTDOWN[NORMAL|TRANSACTIONAL|IMMEDIATE|ABORT]
1)NORMAL选项
Step1:阻止任何用户建立新的连接
Step2:等待所有正在连接的用户主动断开连接。正在连接的用户能够继续他们当前的工作,甚至能够提交新的事务。
Step3:一旦所有的用户都断开连接,才进行关闭、卸载数据库,并终止例程。
2)TRANSACTIONAL(事务处理)选项
Step1:阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
Step2:等待所有当前未提交的活动事务提交完毕,然后立即断开用户的连接
Step3:一旦所有的用户都断开连接,才进行关闭、卸载数据库,并终止例程。
3)IMMEDIATE(立即)选项
Step1:阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
Step2:任何当前未提交的事务均被回退。
Step3:Oracle不再等待用户主动断开连接,而是直接关闭、卸载数据库,并终止例程。
4)ABORT选项
使用场景:数据库本身或某个数据库应用程序发生异常,并且使用其他选项均无效时。出现紧急情况,需要立刻关闭数据库(比如
得到通知将在一分钟内发生停电);在启动数据库例程的过程中产生错误。
Step1:阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务
Step2:立即结束当前正在执行的SQL语句。
Step3:任何未提交的事务均不被回退。
Step4:立即断开所有用户的连接,关闭、卸载数据库,并终止例程。
3.表的创建与改进
3.1列的类型
1)字符数据类型: CHAR[(<SIZE>)[BYTE|CHAR]],NCHAR[(<size>)],VARCHAR2(<size>[BYTE|CHAR]),NVARCHAR2(<size>)
2)大对象数据类型:CLOB,NCLOB,BLOB,BFILE
3)数字数据类型: NUMBER[(<precision>[.<scale>])]
4)日期和时间数据类型: DATE, TIMESTAMP[(<precision>)],TIMESTAMP[(<precision>)] WITH TIME ZONE,TIMESTAMP[(<precision>)] WITH LOCAL TIME ZONE
INTERVAL DAY[(<precision>)] TO SECOND.
5)二进制数据类型:ROW(<size>), LONG RAW
6)行数据类型:ROWID,UROWID
3.2列的约束
1)NOT NULL约束
2)UNIQUE约束
3)CHECK约束
4)PRIMARY KEY约束
5)FOREIGN KEY约束:参照一个PRIMARY KEY 约束或者UNIQUE约束
3.3表的创建
CREATE [[GLOBAL]TEMPORORY|TABLE|schema.]table_name
(
column1 datatype1 [DEFAULT exp1][column1 constraint],
column2 datatype2 [DEFAULT exp2][column2 constraint]
[table constraint] )
[ON COMMIT{DELETE|PRESERVE}ROWS]
[ORGANIZITION{HEAP|INDEX|EXTERNAL...}] --表的类型,如关系型(标准,按堆组织)、临时型、索引型、外部型或者对象型。
[PARTITION BY...(...)] --为分区及子分区信息
[TABLESPACE tablespace_name] --指示用于存储表或索引的表空间
[LOGGING|NOLOGGING] --指示是否保留重做日志
[COMPRESS|NOCOMPRESS] --指示是否压缩
3.4修改表结构
1)增加列
ALTER TABLE[schema.]table_name ADD(column definition1, column definition2)
2)更改列
ALTER TABLE[schema.]table_name MODIFY(column_name1 new_attributes1, column_name2 new_attributes2...)
3)直接删除列
ALTER TABLE[schema.]table_name DROP(column_name1, column_name2...)[CASCADE CONSTRAINTS]
如果删除的列是一个多列约束的组成部分,就必须指定CASCADE CONSTRAINTS,这样才会删除相关的约束
4)将列标记为UNUSED状态
为了避免在数据库使用高峰期间由于执行删除列的操作而占用过多系统资源。被表级为UNUSED状态的列与被删除的列之间是没有区别的,都无法通过数据字典或在查询中看到。在数据字典视图USER_UNUSED_COL_TABS,ALL_UNUSED_COLTABS和DBA_UNUSED_COL_TABS中可以查看到哪些表哪几列被标记为UNUSED状态
ALTER TABLE [schema.]table_name SET UNUSED( column_name1, column_name2...) [CASCADE CONSTRAINTS];
4.索引
4.1创建索引
CREATE[UNIQUE]|[BITMAP]INDEX[schema.]index_name --如果不指定BITMAP选项,默认创建的是B树索引
ON[schema.]table_name([column1[ASC|DESC],column2[ASC|DESC],...]|[express])
[TABLESPACE tablespace_name] --用于指定索引段所在的表空间
[PCTFREE n1] --指定为将来的INSERT操作所预留的空间百分比
[STORAGE(INITIAL n2)]
[COMPRESS n3]|[NOCOMPRESS]
[LOGGING]|[NOLOGGING]
[ONLINE]
[COMPUTE STATISTICS]
[REVERSE]|[NOSORT];
4.2删除索引
DROP INDEX index_name;
5.视图
5.1创建视图
CREATE[OR REPLACE][FORCE]VIEW[schema.]view_name
[(column1,column2,)]
AS SELECT ... FROM ... WHERE ...
[WITH CHECK OPTION][CONSTRAINT constraint_name]
[WITH READ ONLY]
OR REPLACE: 如果存在同名的视图,则使用新视图替代已有的视图。
FORCE: 强制创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限。
Schema:指出在哪个方案中创建视图
view_name:视图的名称
WITH CHECK OPTION: 使用视图时,检查涉及的数据是否能通过SELECT子查询的WHERE条件,否则不允许操作并返回错误提示
CONSTRAINT constraint_name:当使用WITH CHECK OPTION选项时,用于指定该视图的该约束的名称。如果没有提供一个约束名称,Oracle就会生成一个以
SYS C开头的约束名称,后面是一个唯一的字符串
WITH READ ONLY:创建的视图只能用于查询数据,而不能用于更改数据。该子句不能与ORDER BY子句同时存在。
5.2视图更改:OR REPLACE
5.3删除视图: DROP VIEW
6.数据操纵与数据查询
6.1 复制原表插入记录
create table High_Salary AS Select * from employees where salary>5000.00
6.2 使用视图
1)用视图进行插入:插入的数据需要满足对应基表的相关约束。创建view,再使用insert
2)用视图进行修改: update...set
3)用视图进行删除: delete from view_name where ...
6.3 数据查询
1)一般条件查询
2)组合条件查询
3)用Group进行分组查询