Oracle數(shù)據(jù)庫的主要特點
支持多用戶复隆,大事務(wù)量的事務(wù)處理囤捻。
在保持?jǐn)?shù)據(jù)安全性和完整性方面性能優(yōu)越臼朗。
支持分布式數(shù)據(jù)處理,組成一個邏輯上統(tǒng)一的數(shù)據(jù)庫蝎土。
具有可移植性视哑,Oracle可以在windows,linux等多個操作系統(tǒng)平臺上使用誊涯,SQL Server只能在windows上運行挡毅。
Oracle基本概念
1 它是磁盤上存儲數(shù)據(jù)的集合,在物理上表現(xiàn)為數(shù)據(jù)文件,日志文件和控制文件,在邏輯上以表空間形式存在。
2 使用時,必須首先創(chuàng)建數(shù)據(jù)庫,然后才能使用Oracle,可以在安裝Oracle軟件的同時創(chuàng)建數(shù)據(jù)庫,也可以在安裝后單獨創(chuàng)建數(shù)據(jù)庫暴构。
3 全局?jǐn)?shù)據(jù)庫名是用于區(qū)分一個數(shù)據(jù)庫的標(biāo)識,在安裝數(shù)據(jù)庫,創(chuàng)建新數(shù)據(jù)庫,創(chuàng)建控制文件,修改數(shù)據(jù)庫結(jié)構(gòu),利用rman備份是都需要使用跪呈。
4 數(shù)據(jù)庫實例就是通過內(nèi)存共享運行狀態(tài)的一組服務(wù)器后臺進程。
5 一個表空間可以由多個數(shù)據(jù)文件組成,但一個數(shù)據(jù)文件只能屬于一個表空間,與數(shù)據(jù)文件這種物理結(jié)構(gòu)相比,表空間屬于數(shù)據(jù)庫的邏輯結(jié)構(gòu)取逾。
6 數(shù)據(jù)文件的擴展名是.dbf耗绿,是用于存儲數(shù)據(jù)庫數(shù)據(jù)的文件。
7 控制文件的擴展名是.ctl,是一個二進制文件,控制文件中存儲的信息很多,包括數(shù)據(jù)文件和日志文件的名稱和位置,控制文件是數(shù)據(jù)庫啟動及運行所必須的文件,當(dāng)Oracle讀寫數(shù)據(jù)時,要根據(jù)控制文件的信息查找數(shù)據(jù)文件砾隅。
8 日志文件的擴展名是.log误阻,它記錄了數(shù)據(jù)的所有更改信息,并提供了一種數(shù)據(jù)恢復(fù)機制,日志文件是成組使用的,每個日志文件組可以有一個或多個日志文件,在工作過程中,多個日志文件組之間循環(huán)使用,當(dāng)一個日志文件組寫滿后,會轉(zhuǎn)向下一個日志文件組。
9 模式是數(shù)據(jù)庫對象的集合,Oracle會為每一個數(shù)據(jù)庫用戶創(chuàng)建一個模式,此模式為當(dāng)前用戶所擁有和用戶具有相同的名稱晴埂。
Oracle常用的三個服務(wù)
OracleServiceSID服務(wù)是Oracle數(shù)據(jù)庫服務(wù),此服務(wù)是對應(yīng)名為SID(系統(tǒng)標(biāo)識符)的數(shù)據(jù)庫實例創(chuàng)建的,其中SID是安裝Oracle 11G時輸入的數(shù)據(jù)庫名稱,該服務(wù)默認(rèn)是自啟動的究反。
OracleOraDb11g_home1TNSListener服務(wù)是監(jiān)聽服務(wù),監(jiān)聽器監(jiān)聽并接收來自客戶端應(yīng)用程序的連接請求,該服務(wù)只有在數(shù)據(jù)庫需要遠程訪問的時候才需要。
OracleDBConsoleSID服務(wù)是數(shù)據(jù)庫控制臺服務(wù),EMC(企業(yè)管理控制臺)的服務(wù)程序(SID隨安裝的數(shù)據(jù)庫而不同)是采用瀏覽器方式打開的,用于使用Oracle企業(yè)管理器的程序儒洛。
課后經(jīng)驗
如果數(shù)據(jù)庫安裝在本地,并且使用自帶的SQLPlus進行訪問,只需要啟動OracleServiceSID服務(wù)即可,并且使用SQLPlus連接時不能使用"@"精耐。
這種連接被視為本地連接,Oracle中存在一個默認(rèn)的數(shù)據(jù)庫服務(wù)名,本地連接會自動連接該默認(rèn)的數(shù)據(jù)庫服務(wù)。
如果進入基于Web形式的企業(yè)管理(EM)控制平臺,則必須要啟動OracleDBConsoleSID服務(wù)琅锻。
更新會話
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
LOB數(shù)據(jù)類型
CLOB 能夠存儲大量字符數(shù)據(jù)卦停。該數(shù)據(jù)類型可以存儲單字節(jié)字符數(shù)據(jù)和多字節(jié)字符數(shù)據(jù),主要用于存儲非結(jié)構(gòu)化的XML文檔。
BLOB 可以存儲較大的二進制對象恼蓬。
BFILE 能夠?qū)⒍M制文件存儲在數(shù)據(jù)庫外部的操作系統(tǒng)文件中,存儲一個定位器,指向位于服務(wù)器文件系統(tǒng)上的二進制文件,支持的文件最大為4GB惊完。
NCLOB 數(shù)據(jù)類型用于存儲大的NCHAR字符數(shù)據(jù),同時支持固定寬度字符和可變寬度字符。大字符對象的大小不大于4GB滚秩。
偽列ROWID用途
能以最快的方式訪問表中的一行
能顯示表的行是如何存儲的
可以作為表中行的唯一標(biāo)識
示例:使用select語句查看ROWID值
select ROWID,ename from scott.emp where ename='smith';
偽列ROWNUM用途
示例:select emp.*,ROWNUM from scott.emp where ROWNUM<11;
SQL語言簡介
DDL(數(shù)據(jù)定義語言):create,alter,truncate(截斷),drop命令
DML(數(shù)據(jù)操縱語言):insert,select,delete,update命令
TCL(事務(wù)控制語言):commit,savepoint(保存點),rollback命令
DCL(數(shù)據(jù)控制語言):grant(授予),revoke(回收)命令
創(chuàng)建表示例
create table 表名稱(
stuNo char(6) not null,
stuName varchar2(20) not null
);
不重復(fù)顯示
select DISTINCT stuname from stuInfo;
邏輯運算符
用于組合多個比較運算符的結(jié)果以生成一個或真或假的結(jié)果,邏輯運算符包括and(與),or(或),not(非)专执。
集合運算符
UNION(并集) 返回兩個查詢選定的所有不重復(fù)的行。
UNION ALL(并集ALL) 合并兩個查詢選定的所有行,包括重復(fù)的行郁油。
INTERSECT(交集) 返回兩個查詢都有的行本股。
MINUS(減集) 返回由第一個查詢選定而未被第二個查詢選定的行攀痊。
轉(zhuǎn)換函數(shù)
TO_CHAR 轉(zhuǎn)換成字符串類型。
TO_DATE 轉(zhuǎn)換成日期格式拄显。
TO_NUMBER 轉(zhuǎn)換成數(shù)值類型苟径。
示例:
1 select TO_CHAR(SYSDATE,'YYYY"年"fmMM"月"fmDD"日" HH24:MI:SS');
2 select TO_DATE('2013-07-13','yyyy-mm-dd') from dual;
3 select sqrt(TO_NUMBER('100')) from dual;
分析函數(shù)
ROW_NUMBER 返回一個唯一的值,當(dāng)遇到相同的數(shù)據(jù)時,排名安裝記錄集中記錄的順序依次遞增。
DENSE_RANK 返回一個唯一的值,遇到相同的數(shù)據(jù)時,所有相同數(shù)據(jù)的排名都是一樣的躬审。
RANK 返回一個唯一的值,所有相同數(shù)據(jù)排名是一樣的,同時會在最后一條相同記錄和下一條不同記錄的排名之間空出排名棘街。
示例
select ename,deptno,sal,
RANK() OVER (PARTITION BY deptno ORDER BY sal DESC),
ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal DESC),
DENSE_RANK () OVER (PARTITION BY deptno ORDER BY sal DESC)
from employee;
表空間分類
永久性表空間 一般保存表,視圖,過程和索引等的數(shù)據(jù),SYSTEM,SYSAUX承边,USERS遭殉,EXAMPLE表空間是默認(rèn)安裝的。
臨時表空間 只用于保存系統(tǒng)中短期活動的數(shù)據(jù)博助。
撤銷表空間 用來幫助回退未提交的事務(wù)數(shù)據(jù),已提交了的數(shù)據(jù)在這里是不可以恢復(fù)的险污。
表空間的目的
對不同用戶分配不同的表空間,對不同的模式對象分配不同的表空間,方便對用戶數(shù)據(jù)的操作,對模式對象的管理。
可以將不同數(shù)據(jù)文件創(chuàng)建到不同的磁盤中,有利于管理磁盤空間,有利于提高I/O性能,有利于備份和恢復(fù)數(shù)據(jù)等富岳。
創(chuàng)建表空間
create tablespace 表名
datafile 'D:\oracle\worktbs.dbf'
size 10M autoextend on;
刪除表空間
drop tablespace 表名;
自定義用戶管理
1 SYS用戶是Oracle中的一個超級用戶,所有數(shù)據(jù)字典和視圖都存儲在SYS模式,主要用來維護系統(tǒng)信息和管理實例,SYS用戶只能以SYSOPER或SYSDBA角色登錄系統(tǒng)蛔糯。
2 System是Oracle中默認(rèn)的系統(tǒng)管理員,他擁有DBA權(quán)限,不建議在System模式中創(chuàng)建用戶表,System用戶不能以SYSOPER和SYSDBA角色登錄系統(tǒng),只能以默認(rèn)方式登錄。
3 scott用戶是一個示范用戶,一般在數(shù)據(jù)庫安裝的時候創(chuàng)建窖式。
創(chuàng)建用戶
create user user
identified by password
default tablespace table 默認(rèn)表空間
temporart tablespace table 臨時表空間
刪除用戶
drop user table caseade; 使用caseade選項刪除用戶和用戶模式對象蚁飒。
系統(tǒng)預(yù)定義角色
1 connect 需要連接上數(shù)據(jù)庫的用戶,特別是那些不需要創(chuàng)建表的用戶,通常授予該角色。
2 resource 更為可靠和正式的數(shù)據(jù)庫用戶可以授權(quán)該角色,可以創(chuàng)建表,觸發(fā)器,過程等萝喘。
3 DBA 數(shù)據(jù)庫管理員角色,擁有管理數(shù)據(jù)庫的最高權(quán)限,一個具有DBA角色的用戶可以撤銷任何其他用戶甚至其他DBA權(quán)限淮逻。
授權(quán)語法
grant connect,resource TO table;
撤銷語法
revoke connect,resource TO table;
允許用戶查看emp表中的記錄
grant select on scott.emp TO table;
創(chuàng)建序列
create sequence 表
start with 10 第一個序列號
increment by 10 每次增長的間隔
maxvalue 2000 生成的最大值
nocycle; 序列在達到最大值,將不能再繼續(xù)生成值
訪問序列
nextval 創(chuàng)建序列后第一次使用NEXTVAL時,將返回該序列的初始值,以后再引用nextval時,將使用increment by 子句來增加序列值,并返回這個新值蜒灰。
currval 返回序列的當(dāng)前值,即最后一次引用nextval時返回的值弦蹂。
插入數(shù)據(jù)
insert into table(toyid)values(seq.nextval,'twenty',25);
刪除序列
drop sequence 序列;
同義詞用途
1 簡化SQL語句
2 隱藏對象的名稱和所有者
3 為分布式數(shù)據(jù)庫的遠程對象提供了位置透明性
4 提供對對象的公共訪問
私有同義詞
當(dāng)前模式下創(chuàng)建私有同義詞,用戶必須擁有create synonym系統(tǒng)權(quán)限肩碟,
要在其他用戶模式下創(chuàng)建私有同義詞,用戶必須擁有create any synonym系統(tǒng)權(quán)限强窖。
語法:
create or replace 替換該同義詞 synonym 名稱 for 創(chuàng)建同義詞對象的名稱;
刪除同義詞
drop synonym 名稱;
索引分類
1 分區(qū)索引 單列或組合索引
2 B樹索引 唯一或非唯一索引
3 正常或反向鍵索引 基于函數(shù)索引
4 位圖索引
語法:
唯一索引:create unique index 名稱 on 表(列);
反向鍵索引:create index 名稱 on 表名(列) reverse;
位圖索引:create bitmap index 名稱 on 表(列);
大寫函數(shù)索引:create index 名稱 on 表(upper(列));
重建索引:alter index 名稱 rebuild noreverse;
注:何時刪除索引
1 應(yīng)用程序不在需要索引削祈。
2 執(zhí)行批量加載前,大量加載數(shù)據(jù)前刪除索引,加載后再重建索引有以下好處:提高加載性能,更有效的使用索引空間翅溺。
3 索引已壞。
何時重建索引
1 用戶表被移動到新的表空間后,表上的索引不是自動轉(zhuǎn)移,此時需將索引移到指定表空間髓抑。
2 索引中包含很多已刪除的項,對表進行頻繁刪除,造成索引空間浪費,可以重建索引咙崎。
3 需將現(xiàn)有的正常索引轉(zhuǎn)換成反向鍵索引。
分區(qū)表
create table table
(
字段 數(shù)據(jù)類型
)
partition by range(日期字段)
(
partition p1 values less than (to_date('2013-04-1','yyyy-mm-dd')),
partition p5 values less than(maxvalue)
);
查看第一季度的數(shù)據(jù)
select * from table partition(p1);
PL/SQL是結(jié)合了Oracle過程語言和結(jié)構(gòu)化查詢語言是一種擴展語言吨拍。
主要功能
1.PL/SQL具有編程語言的特點
2.可以采用過程性語言控制程序的結(jié)構(gòu)
3.對程序中的錯誤進行自動處理
4.具有更好的可移植性
5.減少網(wǎng)絡(luò)的交互褪猛,提高程序的性能
把原表的數(shù)據(jù)類型賦予他
declare
v_empno employee.empno%TYPE:=7788;
v_rec employee%ROWTYPE;
Begin
select *into v_rec from emp where
empno=v_empno;
DBMS_output.put_line(打印輸出);
end;
條件控制
if<布爾表達式>then
SQL語句
end if;
case語句語法
case 條件表達式
when 表達式結(jié)果 then
語句段 1
end case;
Loop循環(huán)
Loop
執(zhí)行語句
Exit when 條件語句
End Loop;
for循環(huán)計數(shù)器 in 下限 上限 Loop
執(zhí)行語句;
End Loop;
while循環(huán)
while 表達式 Loop
執(zhí)行語句
end Loop;
重新定義異常錯誤信息
raise_Application_error(編號羹饰,文本)
編號長度必須是20999到20000之間
消息長度可達2048字節(jié)
游標(biāo)類型:靜態(tài) 動態(tài)
游標(biāo)
cursor 游標(biāo)名稱 return 行類型
is 查詢語句
打開游標(biāo)
open 名稱伊滋;
提前游標(biāo)
fetch 名稱 into 變量名;
關(guān)閉游標(biāo)
close 名稱
使用顯示游標(biāo)刪除更新
cursor 名稱 is select * for update
for update 為更新查詢碳却,鎖定選擇行
Hibernate框架
Gavin King是Hibernate的創(chuàng)始人,EJB3.0專家委員會成員笑旺,JBoss核心成員之一昼浦。
Hibernate 優(yōu)點
1.功能強大
2.支持許多面向?qū)ο蟮奶匦?br> 3.可移植性強
4.Hibernate框架開源免費
瞬時狀態(tài)轉(zhuǎn)為持久狀態(tài)
使用session的saveorupdate()保存對象后,該對象的狀態(tài)為持久筒主。
get()关噪,load()獲取對象,為持久對象
持久狀態(tài)轉(zhuǎn)為瞬時狀態(tài)
執(zhí)行session的delete()方法后乌妙,由原來的持久轉(zhuǎn)為瞬時
游離轉(zhuǎn)為持久狀態(tài)
執(zhí)行session的update()使兔,游離轉(zhuǎn)為持久
游離轉(zhuǎn)為瞬時狀態(tài)
執(zhí)行session的delete()方法,游離轉(zhuǎn)為瞬時
數(shù)組對象返回一個信息
Object[] obj=(Object[])session.createQuery(hql).uniqueResult();//返回一條信息
連接類型
內(nèi)連接 inner join或 join
迫切內(nèi)連接 inner join fetch或join fetch
左外連接 left outer join或left join
迫切左外連接 left outer join fetch或left join fetch
右外連接 right outer join 或right join
示例:from Dept inner join Dept.emps(內(nèi)連接)
Struts2標(biāo)簽庫
<%@taglib prefix="s" uri="/struts-tags"%>