第一篇:ORACLE服務器個人總結
ORACLE服務器安裝
以下如沒有特殊聲明 均使用默認設置。
安裝時的2個重要文件 1:Oracle Net Services9.2.0.1.0->Oracle Net Listener9.2.0.1.0 監聽端口 2:Oracle Management Server9.2.0.1.0->Enterprise Manager Client9.2.0.1.0 一個重要地管理程序
安裝結束后 根據安裝時選擇的不同 可能會自動彈出Oracle Enterprise Manager Console配置界面,要求用戶 “將數據庫添加到樹”。主機名:tld_gyf 端口號:1521 SID:tld_gyf 網絡服務名:_tld_gyf
創建數據庫 開始->程序->Oracle – Oraome92->Configuration and Migration Tools->Database Configuration Assistant 就OK。進入程序后 數據庫名:gyf(自定義)其它的按默認就可以 共8步 其中第7步要特別注意,修改內存->自定義->共享池 設為200M JAVA池設為200M 其它默認即可 修改字符集->從字符集列表中選擇->US7ASCll 其它默認即可。開始創建數據庫(系統自動)然后為數據庫建立管理帳戶 通常使用SYS用戶來維護系統 所以SYS和SYSTEM都使用相同用戶名和密碼 用戶、密碼:sys 運行Enterprise Manager Console登陸數據庫 用戶名、密碼 SYS 連接身份 SYSDBA。進入數據庫后
先建立表空間:存儲->表空間->右鍵 創建->在名稱處寫入表空間名稱 在下邊的窗口中雙擊文件大小 在彈出的窗口中修改文件大小和是否限制增長(在存儲選單中)。創建完表空間后 就可以創建用戶了.再建立用戶:安全性->用戶->右鍵 創建->輸入名稱 通常用戶名與表空間名稱相同(便于識別)口令和用戶名稱是連接數據庫時必須提供的 所以要記住 表空間處選擇剛建立的表空間名。然后在角色選單中 為新建的用戶分配權限 統稱為DBA(管理者)注:刪除用戶 操作順序:首先刪除要刪除的用戶的表空間,再刪除用戶。某些用戶名建立后 不能刪除 原因未知 第一次建立一個USER用戶 刪除不掉,后來重新裝ORACLE后 有建立了一個BBB用戶 順利刪除。也許ORACLE對USER有限制吧。
現在就可以用前臺軟件 連接ORACLE了。ORACLE9i與PB9.0連接:
在PB的Database中 選擇090 Oracle 9.0.1中右鍵 New profile->進行配置 步驟如下:
在Connection選單中
Profile Name:隨便取個名字 顯示在PB的datebase列表中。
Server:數據庫名 Login ID:登陸數據庫的用戶名 Password:密碼 在System選單中:
PowerBuilder Catalog Table Owner: 登陸數據庫的用戶名
Table Owner:表的所有者(就是登陸數據庫的用戶名)做完這些就可以測試連接了。在Preview中 Test Connection測試就可以了。
ORACLE升級:
進行ORACLE升級前 要關閉所有ORACLE服務。ORACLE9.2.0.8升級包的安裝
1正確安裝ORACLE9.2.0.1的服務器和客戶端,并成功創建一個數據庫
2關閉數據庫,停掉所有與ORACLE有關的服務,備份系統(已安裝的ORACLE)(推薦)。
3運行升級包中的SETUP.EXE,啟動UNIVERSAL INSTALLER,按步驟一步步的完成升級包的安裝(在指定文件位置處 注意修改目標名稱)
4安裝后的工作:
a)檢查system表空間,確保該表空間有不少于10MB 的剩余空間。(推薦100M剩余空間)b)檢查XDB表空間,確保該表空間有不少于50MB的剩余空間。(推薦100M剩余空間)//數據庫中打開表空間
c)設置共享池和JAVA池的大小,每個不少于150MB(推薦200MB)。//在數據庫上點右鍵 查詢修改信息
設置方法如下:
在命令提示符模式下(***開啟ORACLE監聽服務和數據庫服務***)
1)c:sqlplus /nolog
2)sql>conn sys/sys_password as sysdba //sys:系統用戶名 sys_password:系統用戶名密碼
===== 3)sql>startup //啟動服務(如果是服務關閉的話)
4)sql>alter system set shared_pool_size=’200M’ scope=spfile;
5)sql>alter system set Java_pool_size=’200M’ scope=spfile;//3、4、5步可以在數據庫中存儲-表中完成。
空間完成操作。
===== 6)sql>shutdown //如果服務已經啟動 則可以使用這個命令關閉服務,然后用第7條語句開啟服務。
7)sql>startup migrate
8)sql>spool d:patch.log
9)sql>@安裝路徑rdbmsadmincatpatch.sql //例如:E:oracleora92 耐心等待 估計要40分鐘左右 計算機配置 P42.4G 內存512M DDR
10)sql>spool off
檢查patch.log文件,看是否有錯誤,如需要的話再重新運行一下6)-10)命令。
11)Sql>shutdown
12)Sql>startup
13)Sql>@安裝路徑rdbmsadminutlrp.sql //大概要5分鐘
個人經驗:
在安裝服務器時 選擇字符集要同時選擇字符集所對應的單選框 否則無效。我就吃過這個虧5555 在安裝完ORACLE服務器后,可以馬上建立數據庫。建立完數據庫后 不能馬上升級服務器。如果強行升級會出現亂碼和未知錯誤,建議重啟后再升級服務器。執行第1、2、6、7、8、9、10、11、12、13步。
因為操作過程中的失誤 在執行完第8步時 輸錯了命令 把第13條命令輸入 并執行了。命令執行大概不到1分鐘就結束了。
沒有出現錯誤提示,繼續執行第9、10、11、12條命令 沒有錯誤出現。繼續執行13條命令 正常。沒有出現任何錯誤提示。
如果是本機作為服務器和客戶端的話 除了在安裝服務器時要選擇字符集外 還要在安裝完成后把客戶端的字符集注冊表文件導入的注冊表中 這樣程序中顯示的字符才能是正常的。
所謂SYS和SYSTEM用戶 實際上就是在建立服務器時 系統要求用戶建立的那2個帳號。在啟動管理工具等程序時要求用戶使用SYS或SYSTEM用戶 且要使用DBA模式登陸
數據的導入與導出
ORACLE的導出命令:EXP 用戶名/密碼@數據庫(在本機的tnsnames.ora中寫入的數據庫服務器名)例如: exp user/user@orcl 從orcl服務器導出數據 根據提示 會選擇要導出的數據庫 其中user為要登陸的服務器上擁有管理權限的用戶名。用SYS用戶登陸要加 as sysdba 例:exp user/user@orcl as sqldba。
ORACLE的導入命令:IMP 使用方法與導出命令相同。
連接遠程數據庫:CONNECT(CONN)使用方法:conn user/user@orcl 同樣的user為所要登陸的服務器上的用戶 orcl為在本地的tnsnames.ora中寫入的服務器名 用SYS用戶登陸要加 as sysdba
***在使用下面的語句前要下連接到服務器;SQL語句結尾的分號一定要寫*** 查看服務器版本:select comp_name,version from dba_registry;
查看數據庫的字符集:select userenv('language')from dual;查詢的結果 就是所連接的服務器上的信息,所以在查詢前要確定連接的服務器是否正確。關于[T-SQL]存儲過程 首先是變量的定義: @ @@ @變量1 int
局部變量
||
@@變量2 varchar(80)
全局變量 至于變量定義的規則 比較多 但與其它語言的變量定義規則相似 不多說了。2 定義存儲過程
首先說明一下存儲過程地類型:系統存儲過程、擴展存儲過程和用戶自定義存儲過程。
永久存儲過程與臨時存儲過程:可以創建一個過程供臨時使用,或在一個會話中臨時使用(局部臨時過程),或在所有會話中臨時使用(全局臨時過程)。局部臨時過程#和全局臨 時
過程## 在關閉SQL server后 自動刪除。3 語法規則:
CREATE PROCEDURE 過程名 參數1,參數2,參數N[output] AS SQL語句
RETURN 4 舉例:
--定義存儲過程get_zrz--create procedure get_zrz--@jhtable_jh varchar(80),@from_table varchar(80),@jhtable_zrz varchar(80)output--as--select @jhtable_zrz=zrz from @from_table where jh=@jhtable_jh--return--go--執行存儲過程
--declare @jh_zrz varchar(80)--execute get_zrz “杜111”,@jhtable_zrz=@jh_zrz output--print convert(varchar(80),@jh_zrz)1-76
特殊說明:在存儲過程中為變量賦值要使用SET 值=@變量 的形式,同樣的在使用OUTPUT時也要 值=@變量 OUTPUT,這一點與SQL語句有所區別
--下面的是一個傳遞2個參數的過程及其調用--create procedure get_zxz--@jht_jh varchar(80),@jhtable_jh varchar(80)output,@jhtable_zxz varchar(80)output--as--set @from_table='jhtable'--select @jhtable_zxz=zxz from jhtable where jh=@jht_jh--set @jht_jh=@jhtable_jh--return--go
--declare @jh_zxz varchar(80),@jh_jh varchar(80)--execute get_zxz “杜111”,@jhtable_zxz=@jh_zxz output,--@jhtable_jh=@jh_jh output--print '井
號:[' + convert(varchar(80),@jh_jh)+ ']'+ char(13)+ '中心站:' +--convert(varchar(80),@jh_zxz)井
號:[杜111] 中心站:七區80#站
--更多值的傳遞與顯示
--建立一個存儲過程 在調用此過程時 從井號表中查詢得到與所給井號相符的作業區代碼、自然站、中心站和區塊 CREATE proc get_zzzq @jh varchar(80),@jhtable_jh varchar(80)output,@jhtable_zyqdm varchar(80)output,@jhtable_zrz varchar(80)output,@jhtable_zxz varchar(80)output,@jhtable_qk varchar(80)output as select
@jhtable_jh=@jh,@jhtable_zyqdm=zyqdm,@jhtable_zrz=zrz,@jhtable_zxz=zxz,@jhtable_qk=qk from jhtable where jh=@jh--set return GO
顯示查詢結果
declare @jh varchar(80),@zyqdm varchar(80),@zrz varchar(80),@zxz varchar(80),@qk varchar(80)execute get_zzzq “杜11”,@jhtable_jh=@jh output,@jhtable_zyqdm=@zyqdm output,@jhtable_zrz=@zrz output,@jhtable_zxz=@zxz output,@jhtable_qk=@qk output print '[井
號]' + convert(varchar(80),@jh)+ char(13)print '[作業區代碼]' + convert(varchar(80),@zyqdm)+ char(13)print '[自
然
站]' + convert(varchar(80),@zrz)+ char(13)print '[中
心
站]' + convert(varchar(80),@zxz)+ char(13)print '[區
塊]' + convert(varchar(80),@qk)+ char(13)[井
號]杜11 [作業區代碼]zyq002 [自
然
站]2-21
[中
心
站]二區21站 [區
塊]曙266 在存儲過程中 還沒與找到如何把表名作為變量放在SQL語句中的方法,大概要用到動態SQL語句吧 個人認為比較難 所以就找了條麻煩的路來代替復雜的路。沒有辦法 誰叫 “力和距離成反比呢” 呵呵 例子:
--定義存儲過程get_zrz create procedure get_z @jhtable_jh varchar(80),@fr_table varchar(80),@jhtable_zrz varchar(80)output as if @fr_table='jhtable' select @jhtable_zrz = zrz from jhtable where jh = @jhtable_jh else select @jhtable_zrz=zrz from jhtable1 where jh= @jhtable_jh return go 結果有2種 分別是: 1:
--執行存儲過程
declare @jh_z varchar(80)execute get_z “杜111”,“jhtable”,@jhtable_zrz=@jh_z output print convert(varchar(80),@jh_z)1-76
2:
--執行存儲過程
declare @jh_z varchar(80)execute get_z “杜111”,“jhtable1”,@jhtable_zrz=@jh_z output print convert(varchar(80),@jh_z)111
雖然看上去有點亂 不過仔細看看 總是要比動態SQL語句要簡單很多的。我在SQL2000的聯機幫助文檔中找到了些頭緒 不過暫時不想過多地研究。現在除了存儲過程 還要看PB數據通道呢。
得到某表中的所有列的類型是numeric的列名 select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'jhTable' and data_type = 'numeric'
得到所有列名
select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'jhTable' oracle客戶端安裝
要求:必須在沒有安裝oracle客戶端,oracle數據庫的計算機上進行安裝。
1、打開 “oracle8客戶端”文件夾,雙擊oracle80.exe安裝文件。
2、系統會提示軟件安裝建議,單擊 按鈕,繼續進行安裝。
3、提示“選擇安裝的目標位置”,點擊【瀏覽】按鈕,改變安裝目錄。
4、單擊,采用默認安裝路徑。
5、提示“選擇程序管理器程序組”,單擊,采用默認程序組。
6、提示“開始安裝”,單擊,軟件開始進行安裝,打開如下圖:
7、提示輸入“密碼”在文本框輸入“oracle80”,單擊,軟件進行安裝。
8、提示“安裝完成”,單擊 按鈕。
9、提示“重新啟動計算機”,單擊,不進行重啟。
10、完成以上8個安裝步驟,oracle客戶端已經成功安裝。
物資管理系統的安裝
1、雙擊“物資管理信息系統.exe”如圖,打開安裝界面,如下圖:
2、點擊 按鈕,進入安裝目錄選擇窗口,如下圖:
3、系統默認安裝目錄為C:Program Fileswzgl,點擊【瀏覽】按鈕,選擇安裝目錄(建議不要安裝在C盤)。
4、點擊 按鈕,進入程序管理組界面。
5、點擊 按鈕,進入準備安裝界面。
6、點擊 按鈕,進入『正在安裝』窗口,如下圖:
7、安裝完成后,點擊 按鈕,退出安裝。
8、成功安裝后,桌面上出現 快捷方式圖標。
www.tmdps.cn
tel:0427-7292830
版權所有 2007 盤錦泰利達軟件技術有限公司 保留所有權利
第二篇:oracle視圖總結
oracle視圖總結(轉)
視圖簡介: 視圖是基于一個表或多個表或視圖的邏輯表,本身不包含數據,通過它可以對表里面的數據進行查詢和修改。視圖基于的表稱為基表。視圖是存儲在數據字典里的一條select語句。通過創建視圖可以提取數據的邏輯上的集合或組合。
視圖的優點:
1.對數據庫的訪問,因為視圖可以有選擇性的選取數據庫里的一部分。2.用戶通過簡單的查詢可以從復雜查詢中得到結果。3.維護數據的獨立性,試圖可從多個表檢索數據。4.對于相同的數據可產生不同的視圖。
視圖的分類:
視圖分為簡單視圖和復雜視圖。
兩者區別如下:
1.簡單視圖只從單表里獲取數據,復雜視圖從多表獲取數據; 2.簡單視圖不包含函數和數據組,復雜視圖包含; 3.簡單視圖可以實現DML操作,復雜視圖不可以。
視圖的創建:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中:
OR REPLACE:若所創建的試圖已經存在,ORACLE自動重建該視圖; FORCE:不管基表是否存在ORACLE都會自動創建該視圖; NOFORCE:只有基表都存在ORACLE才會創建該視圖: alias:為視圖產生的列定義的別名;
subquery:一條完整的SELECT語句,可以在該語句中定義別名;
WITH CHECK OPTION : 插入或修改的數據行必須滿足視圖定義的約束; WITH READ ONLY : 該視圖上不能進行任何DML操作。
例如: Sql代碼
1.CREATE OR
REPLACE
VIEW dept_sum_vw
2.(name,minsal,maxsal,avgsal)
3.AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
4.FROM
emp e,dept d
5.WHERE e.deptno=d.deptno
6.GROUP BY d.dname;
視圖的定義原則:
1.視圖的查詢可以使用復雜的SELECT語法,包括連接/分組查詢和子查詢; 2.在沒有WITH CHECK OPTION和 READ ONLY 的情況下,查詢中不能使用 ORDER BY 子句;
3.如果沒有為CHECK OPTION約束命名,系統會自動為之命名,形式為SYS_Cn;4.OR REPLACE選項可以不刪除原視圖便可更改其定義并重建,或重新授予對象權限。
查詢視圖:
視圖創建成功后,可以從視圖中檢索數據,這點和從表中檢索數據一樣。示例:
SQL>SELECT * FROM dept_sum_vw;
修改視圖:
通過OR REPLACE 重新創建同名視圖即可。
刪除視圖:
DROP VIEW VIEW_NAME語句刪除視圖。刪除視圖的定義不影響基表中的數據。
只有視圖所有者和具備DROP VIEW權限的用戶可以刪除視圖。視圖被刪除后,基于被刪除視圖的其他視圖或應用將無效。
查詢視圖定義:
SELECT view_name,text from user_views;其中text顯示的內容為視圖定義的SELECT語句,可通過DESC USER_VIEWS 得到相關信息。
視圖上的DML 操作: DML操作應遵循的原則:
1.簡單視圖可以執行DML操作; 2.在視圖包含GROUP 函數,GROUP BY子句,DISTINCT關鍵字時不能刪除數據行; 3.在視圖不出現下列情況時可通過視圖修改基表數據或插入數據:
a.視圖中包含GROUP 函數,GROUP BY子句,DISTINCT關鍵字; b.使用表達式定義的列; c.ROWNUM偽列。
d.基表中未在視圖中選擇的其他列定義為非空且無默認值。WITH CHECK OPTION 子句
通過視圖執行的INSERTS和UPDATES操作不能創建該視圖檢索不到的數據行,因為它會對插入或修改的數據行執行完整性約束和數據有效性檢查。(也就是說在執行INSERTS、UPDATES時,WHERE條件中除需要INSERT、UPDATE本身的限制條件之外,還需要加上視圖創建時的WHERE條件。)
例如:
CREATE OR REPLACE VIEW vw_emp20 AS SELECT * FROM emp WHERE deptno=20 WITH CHECK OPTION constraint vw_emp20_ck;視圖 已建立。
查詢結果:
SELECT empno,ename,job FROM vw_emp20;EMPNO
ENAME
JOB---------------------
--------------
-------------7369
SMITH
CLERK 7566
JONES
MANAGER 7902
FORD
ANALYST 修改:
UPDATE vw_emp20 SET
deptno=20 WHERE empno=7902;將產生錯誤:
UPDATE vw_emp20 * ERROR 位于第一行:
ORA-01402:視圖WITH CHECK OPTION 違反WHERE 子句
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1,Oracle是可以通過視圖來修改Base table的。所謂base table就是用來構建視圖的表,也就是視圖的數據來源表。但是這種修改是有條件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst;如果有這個限制,那么通過視圖v_emp 插入數據的deptno字段的值必須是10,否則就會報“ORA-01402: 視圖 WITH CHECK OPTIDN 違反 where 子句”的異常。
2,聯結視圖:
create view dept1_staff as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.deptno in(10,30)and e.deptno = d.deptno; 將兩個表的數據聯結起來,看起來應該是一個內聯結(Inner joint)。
對于聯結視圖(Joint view)的修改規則稍顯復雜,設計到所謂key_preserved table的概念。通過聯結視圖來修改基表,只有那些key_preserved 的表才能被修改。上述創建視圖語句中emp和dept通過deptno進行聯結構成視圖時,emp就是key_preserved 表,而dept不是。為什么?因為在dept1_staff 中empno的值唯一的而deptno不是唯一的。所以emp是key_preserved 而dept不是。因此只能通過該視圖來修改emp,而不能修改dept的數據。
3,Oracle視圖非常強大的功能之一在于其可以創建一個帶有錯誤的視圖。比如說視圖里的字段在基表里不存在,該視圖仍然可以創建成功,但是非法的且無法執行。當基表里加入了該字段,或者說某個字段修改成視圖里的該字段名稱,那么視圖馬上就可以成為合法的。這個功能很有意思。例子:
創建基表: create table v_test(name varchar2(32),age number(12));創建帶錯誤的視圖:
create force view view_test as select name,age,address from v_test;(注意加上force選項)
由于address字段在v_test里不存在,所以會報warning: View created with compilation errors的警告,而且執行select * from view_test;時會報“ORA-04063: view “SCOTT.VIEW_TEST” 有錯誤”的異常。但是如果在v_test里加上address字段,那么視圖就會合法。對基表進行修改:
alter table v_test add(address varchar2(128));
現在再執行select * from view_test;就會執行成功了。
from:http://www.blogjava.net/jinhualee/archive/2006/07/14/58115.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其他問題總結:
1、視圖上是否可以創建索引?
一般視圖上不用建立索引,對視圖的操作最終會轉化為對表的操作。一個討論:http://www.itpub.net/viewthread.php?tid=150019&extra=&page=1
第三篇:ORACLE培訓總結
篇一:oracle培訓班總結(聽課筆記)oracle北京培訓
第一章 oracle10g的安裝與基本設置
一、數據庫基礎部分。
oracle數據庫應用系統結構與產品。
sql語言:操作數據庫,同時用于數據庫管理。(通用部分)sql*plus語言:對sql的擴充,主要增加一些報表。pl/sql語言:過程化語言。數據庫分區存儲技術。
1、oracle數據庫應用系統結構與產品
oracle數據字典有4.2萬個。數據字典只記錄標識。
結構方面:sql與oracle完成不同,sql可建多個庫,結構與oracle明顯不同。i:代表internet.c語言結構性最好,計算能力最強。指紋識別系統只能用c.2、pl:procedural language:過程化語言,條件、判斷、循環。sql屬非過程化語言,只關心結果,不關心過程。
3、數據庫分區存儲技術(一個表存到多個表空間上)數據庫存儲數據的最小單位:表。
邏輯空間——>表空間(在物理上與磁盤對應)1 ——>多個磁盤。
一個表可以存在多個磁盤上,但不能存到多個表空間上。集中式存儲:安全性不好,i/o不平衡。
數據庫的分區存儲技術:range、list(oracle 11自動增加)range:可以比大小。
list:不能比大小,例如:人口住址等。
4、數據庫存取權限控制。
5、oracle 10g flashback:數據閃回。恢復前提:歸檔和備份。(1)基于時間的恢復:從5樓到4樓。必須從5樓下到一樓,再從1樓到4樓。邏輯備份: 物理備份:常說的備份點。
不完全恢復:向回倒,不可逆轉,日志自動清0,有的數據要丟失。exp、import.(1)基于時間的恢復(2)基于中止(撤消)的恢復。(3)基于事務的恢復。完全恢復。
delete from,rollback能100%恢復。drop,flashback不一定能恢復。
二、程序設計
pl/sql程序設計。存儲過程(procedure),函數(function),包(package),數據庫觸發器(data triggers(槍栓))。
三、系統管理(dba)
1、oracle核心軟件安裝與產品升級。sun solaris hp ux 國稅 aix 銀行 tru64 電力 數據庫的排序:在臨時表空間中進行。8i和9i排序完不釋放。10g可自動釋放。640萬人無人居住,不發生電費。
命令行模式運行速度快,容易發現問題的存在。
oracle占用可用內在的55-57%,所以不要建兩個以上的庫,oracle按表空間劃分用戶,sql可建多個庫,結構與oracle明顯不同。
2、創建主要的數據庫存儲結構。
劃分磁盤空間。
3、數據庫權限與角色管理。角色:權限的組合。
4、監視與控制用戶對于數據庫的操作。
5、數據庫的啟動與關閉。
6、數據庫性能優化與調整。
7、數據庫的備份與恢復。
四、基于web應用開發(會話進程)。
會話數(在線數)< 用戶數< 進程數在(windows稱為服務)< 操作系統核心參數 如何查看修改連接數,進程數及用戶數,三者之間有什么關系? show parameter session;最大session數 show parameter process;最大進程數
select count(1)from all_users;查看已安裝數據庫的用戶數 select * from all_users;oracle自帶的用戶數如何查。
默認的情況下系統中的最大session = min(session ,process * 1.1 + 5)
1、我們把它稱為一次對話,或者叫會話。同樣,在我們用電腦工作時,打開的一個窗口或一個web頁面,我們也可以把它叫做一個“會話”,擴展到一個局域網里面,所有用戶要通過防火墻上網,要打開很多個窗口或web頁面(即會話),那么,這個防火墻,所能處理的最大會話數量,就是“并發連接數”。
(1)查看oracle 10g數據庫會話數 select * from v$session;當前總會話數:select count(*)from v$session;可用總會話數:在sqlplus里查詢,show parameter session
2、查看已安裝數據庫的用戶數:select count(1)from all_users;sql>select * from all_users;
3、查看進程數
使用sys,以sysdba權限登錄:sql> show parameter processes;
4、$ps –ef | grep oracle 進程,在windows稱為服務。實例包括一個內存和進程(在windows中為服務)
按我的理解來說session就等價與一個客戶端,它是用戶經過用戶進程到oracle事例的特定連接.它從用戶連接開始一直持續到用戶斷開連接或退出數據庫為止.進程,籠統地認為一個程序有若干進程組成,從os角度講程序是靜態的,而進程是動態的罷了.進程可以分為user process和oracle process.說穿了,進程就是用來執行程序的時候產生的,是一個動態過程.第二章 oracle安裝
一、asm(automatic storage management)自動存儲管理。oracle10g 新內容。鏡像:oracle 10g以后才支持。磁盤組:diskmap 邏輯設備
裸設備:只做分區,不做格式化。看不到文件,在磁盤管理器中才能看到設備,u盤拷貝不了。只能用邏輯手段拷貝:exp rman.二、oltp_數據倉庫_全局數據庫名_(nts適配器錯誤_在windows中清理oracle)
1、t----->oltp(on line transaction processing)在線事務處理。網上數據傳輸量比較大,數據庫數據改動大,數據庫負荷重,oracle 會設比較大的回退段(rollback segments)和空閑率(pctfree 10%)oracle的塊為:8k.它使用了所有的所謂數據的操作 crud(創建、讀取、更新、刪除)。當數據存儲達到一定量的時候,規模就會幾乎保持不變,因為可以從存儲中刪除過期數據。
2、數據倉庫
數據倉庫改動少,主要為查詢速度快服務,用于存歷史數據,用來構造決策支持系統。他的回退段和空閑率留的比較少。
數據倉庫就完全是一種不同種類的應用程序。它并不是用來運行當前的操作,例如發送郵件。它是用來分析數據并且從現有數據中發現新的價值,主要是用來預測未來的情況。數據倉庫并不是解決所有問題的通用結構。它必須集中于某一問題領域,例如航空服務、顧客收益等。數據倉庫也有有趣的一面,那就是本身是穩定增長的。數據沒有被刪除,也不發生變更。我們不需要將冗余數據置于數據庫之外(因為加入倉庫中的數據經過了數據凈化的過程,該過程檢查了數據的正確性)來減少復雜性同時增強讀取操作的性能。
為了能夠對數據倉庫中的數據進行分析,數據存儲于一個多維結構中,叫做星型模式。如果將星型模式擴展,就會得到雪花模式。
3、全局數據庫名:以字母打頭,不超過8個。
數據庫名不能重名,否則復制數據和同步數據時會出麻煩,數據庫安裝完后,數據庫名不能更改,起名時要慎重。
4、oracle字符集。zh16gbk.5、nts適配器錯誤。
d:oracleproduct10.2.0db_1networkadminsqlnet.ora 把sqlnet.ora文件中的(nts)改為none,再重新啟動oracleconfigudration and mirdatabase config.6、在windows中清理oracle。(1)刪除注冊表:
regedit-> local machine--> software-->oracle(2)刪除oracle服務
regedit-> local machine-->system?currentcontrolset?services?ora*(3)刪除oracle事件日志
(4)刪除windows安裝磁盤中program filesoracle目錄。(5)刪除oracle菜單。(6)刪除oracle環境變量。
控制面板—>系統——>高級——>環境變量。總共刪除2項。(7)重新啟動操作系統
(8)刪除oracle磁盤文件。篇二:oracle數據庫學習總結 oracle數據庫學習總結 時間過的還真快,不知不覺中就在這里呆了半個月了。這段時間里都在學習oracle數據庫的編程,畢竟這是家軟件外包公司。像我們這樣的新員工也就只能接觸到些curd的操作。廢話不多說,趕緊來梳理下這半月來學習的知識點.在來公司之前一直都是使用sql server數據庫,用sql server也開發了3個小型項目。所以對sql語句以及在數據庫中扮演重要作用的存儲過程,觸發器,視圖,主鍵/外鍵約束都很熟。但oracle是一個全新的環境,記得剛裝上oracle的時候,我都不知道在哪查看自己已經建立好的表格。還好有師傅的幫忙,要不然我還真沒這么快就能入門oracle。
學習東西就要學習些能改變自己思維的東西,只有這樣才能讓自己的眼光比別人更獨到,思維比別人更深邃,oracle就是這樣的東西。當然做這樣的事是要很大的驅動力的呀,如果公司不是都采用oracle來寫程序的話,我估計也就懶得學啦。
對于一位程序員來說并不需要完全掌握oracle的所有知識,畢竟自己不是dba。在日常開發中也用不到那些命令和工具,但是有些知識點我們還是必須得熟練的掌握它們。比如:一些基本的ddl和dml語句,存儲過程,函數,視圖,觸發器,序列,游標,自定義類型和包。下面我就把這段時間里學習oracle獲得的知識點羅列出來,一是為了方便以后查閱,二是為了和搭檔交流學習經驗。要適應的一些細節
從sql server轉到oracle進行數據庫編程,第一道門檻就是語法問題。很多很多的問題都是因為語法而產生的,現將它們統統集合起來并將它們一網打盡之。pl結構。在sql server中,采用的是批處理執行任務的方式,所以可以將多條sql語句選中批量執行,而不用顧忌要在專門的地方聲明變量,在專門的地方進行邏輯編碼。在oracle中采用的是pl編程方式,必須在專門的地方聲明變
循環結構,要達到循環在oracle中有3種方式,各有各的好處,你懂的。它們分別如下: pl結構中的錯誤處理
就像c#中的try{} catch{}語句塊 能捕獲錯誤。寫幾個例子: helloworld級別的錯誤拋出例子record類型
oracle中的record類型類似于c語言中的結構體,主要用來接收select語句或游標中返回的數據,下面寫個例子:ddl語句
這里的ddl語言主要是指能完成如下工作的ddl語言:創建表,創建表的主/外 鍵及級聯效果,dml語句
select語句。oracle中的select語句的使用方法與sql server差不多,但還是有些不同之處。
篇三:oracle培訓心得 oracle培訓心得
2010年x月x日至x月x日,我有幸參加了工業和信息化部軟件與集成電路促進中心主辦的“oracle數據庫高級實戰培訓班”學習交流。首先感謝學校領導給予了我這次學習機會。通過短暫的幾天培訓,我不僅對oracle知識有了部分的了解,也接受了很多最新的信息。在這次培訓中,上課的老師有非常豐富dba經驗,他結合他自身的dba工作經歷,從oracle體系結構與網絡配置、訪問控制、事務處理與日志、閃回特性、數據庫的備份與恢復和數據庫性能監測與調整優化等幾個方面對oracle進行了講解。對課程講解十分的詳細。通過案例示范以及演示,指導我們一步步操作。
oracle主要以操作命令行為主,在學習的過程中,對老師的每一步操作都做好了記錄。課堂上按照老師的要求一步步操作,課后按記錄的操作步驟和命令反復多次的練習。以此到達了對oracle反復學習,熟悉掌握老師所傳授的知識。
短短5天的高強度集中學習,我通過“xxxx”考試,取得了“xxxx”的認證。但是我知道依靠這幾天的培訓對oracle學習是不行的,還必須在實踐中不斷地努力,提升自身的專業技術能力。只有在不斷的實踐練習,才能夠深刻了解它的原理和方法。在以后的工作中,我仍會繼續學習各種關于oracle數據庫的知識、持之以恒,在今后的工作中不斷實踐、總結、深入學習,全面掌握oracle知識。
第四篇:服務器安全總結
一、系統的安裝
1、按照Windows2003安裝光盤的提示安裝,默認情況下2003沒有把IIS6.0安裝在系統里面。2、IIS6.0的安裝
開始菜單—>控制面板—>添加或刪除程序—>添加/刪除Windows組件
應用程序 ———ASP.NET(可選)
|——啟用網絡 COM+ 訪問(必選)
|——Internet 信息服務(IIS)———Internet 信息服務管理器(必選)
[醫學教育網整理發布]
|——公用文件(必選)
|——萬維網服務———Active Server pages(必選)
|——Internet 數據連接器(可選)
|——WebDAV 發布(可選)[醫學教育網整理發布]
|——萬維網服務(必選)
|——在服務器端的包含文件(可選)
然后點擊確定—>下一步安裝。(具體見本文附件1)
3、系統補丁的更新
點擊開始菜單—>所有程序—>Windows Update
按照提示進行補丁的安裝。
4、備份系統
用GHOST備份系統 資料來源 :醫 學 教 育網。
5、安裝常用的軟件
例如:殺毒軟件、解壓縮軟件等;安裝完畢后,配置殺毒軟件,掃描系統漏洞,安裝之后用GHOST再次備份系統。
6、先關閉不需要的端口 開啟防火墻 導入IPSEC策略
在”網絡連接”里,把不需要的協議和服務都刪掉,這里只安裝了基本的Internet協議(TCP/IP),由于要控制帶寬流量服務,額外安裝了Qos數據包計劃程序。在高級tcp/ip設置里--“NetBIOS”設置“禁用tcp/IP上的NetBIOS(S)”。在高級選項里,使用“Internet連接防火墻”,這是windows 2003 自帶的防火墻,在2000系統里沒有的功能,雖然沒什么功能,但可以屏蔽端口,這樣已經基本達到了一個IPSec的功能。
修改3389遠程連接端口 修改注冊表.開始--運行--regedit
依次展開 HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/ TERMINAL SERVER/WDS/RDPWD/TDS/TCP 右邊鍵值中 PortNumber 改為你想用的端口號.注意使用十進制(例 10000)
HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/TERMINAL SERVER/ WINSTATIONS/RDP-TCP/
右邊鍵值中 PortNumber 改為你想用的端口號.注意使用十進制(例 10000)注意:別忘了在WINDOWS2003自帶的防火墻給+上10000端口 修改完畢.重新啟動服務器.設置生效.二、用戶安全設置
1、禁用Guest賬號
在計算機管理的用戶里面把Guest賬號禁用。為了保險起見,最好給Guest加一個復雜的密碼。你可以打開記事本,在里面輸入一串包含特殊字符、數字、字母的長字符串,然后把它作為Guest用戶的密碼拷進去。
2、限制不必要的用戶
去掉所有的Duplicate User用戶、測試用戶、共享用戶等等。用戶組策略設置相應權限,并且經常檢查系統的用戶,刪除已經不再使用的用戶。這些用戶很多時候都是黑客們入侵系統的突破口。
3、把系統Administrator賬號改名
大家都知道,Windows 2003 的Administrator用戶是不能被停用的,這意味著別人可以一遍又一遍地嘗試這個用戶的密碼。盡量把它偽裝成普通用戶,比如改成Guesycludx。
4、創建一個陷阱用戶
什么是陷阱用戶?即創建一個名為“Administrator”的本地用戶,把它的權限設置成最低,什么事也干不了的那種,并且加上一個超過10位的超級復雜密碼。這樣可以讓那些 Hacker們忙上一段時間,借此發現它們的入侵企圖。
5、把共享文件的權限從Everyone組改成授權用戶
任何時候都不要把共享文件的用戶設置成“Everyone”組,包括打印共享,默認的屬性就是“Everyone”組的,一定不要忘了改。
6、開啟用戶策略
使用用戶策略,分別設置復位用戶鎖定計數器時間為20分鐘,用戶鎖定時間為20分鐘,用戶鎖定閾值為3次。(該項為可選)
7、不讓系統顯示上次登錄的用戶名
默認情況下,登錄對話框中會顯示上次登錄的用戶名。這使得別人可以很容易地得到系統的一些用戶名,進而做密碼猜測。修改注冊表可以不讓對話框里顯示上次登錄的用戶名。方法為:打開注冊表編輯器并找到注冊表“HKLMSoftwareMicrosoftWindows TCurrentVersionWinlogonDont-DisplayLastUserName”,把REG_SZ的鍵值改成1。
密碼安全設置
1、使用安全密碼
一些公司的管理員創建賬號的時候往往用公司名、計算機名做用戶名,然后又把這些用戶的密碼設置得太簡單,比如“welcome”等等。因此,要注意密碼的復雜性,還要記住經常改密碼。
2、設置屏幕保護密碼
這是一個很簡單也很有必要的操作。設置屏幕保護密碼也是防止內部人員破壞服務器的一個屏障。
3、開啟密碼策略
注意應用密碼策略,如啟用密碼復雜性要求,設置密碼長度最小值為6位,設置強制密碼歷史為5次,時間為42天。
4、考慮使用智能卡來代替密碼
對于密碼,總是使安全管理員進退兩難,密碼設置簡單容易受到黑客的攻擊,密碼設置復雜又容易忘記。如果條件允許,用智能卡來代替復雜的密碼是一個很好的解決方法。
三、系統權限的設置 1、磁盤權限
系統盤及所有磁盤只給 Administrators 組和 SYSTEM 的完全控制權限
系統盤Documents and Settings 目錄只給 Administrators 組和 SYSTEM 的完全控制權限
系統盤Documents and SettingsAll Users 目錄只給 Administrators 組和 SYSTEM 的完全控制權限
系統盤WindowsSystem32cacls.exe、cmd.exe、net.exe、net1.exe、ftp.exe、tftp.exe、telnet.exe、netstat.exe、regedit.exe、at.exe、attrib.exe、format.com、del文件只給 Administrators 組和SYSTEM 的完全 控制權限
另將
Documents and Settings下所有些目錄都設置只給adinistrators權限。并且要一個一個目錄查看,包括下面的所有子目錄。刪除c:inetpub目錄
2、本地安全策略設置
開始菜單—>管理工具—>本地安全策略
A、本地策略——>審核策略
審核策略更改
成功 失敗
審核登錄事件
成功 失敗
審核對象訪問
失敗
審核過程跟蹤
無審核
審核目錄服務訪問
失敗
審核特權使用
失敗
審核系統事件
成功 失敗
審核賬戶登錄事件 成功 失敗
審核賬戶管理
成功 失敗
B、本地策略——>用戶權限分配
關閉系統:只有Administrators組、其它全部刪除。
通過終端服務允許登陸:只加入Administrators,Remote Desktop Users組,其他全部刪除
C、本地策略——>安全選項
交互式登陸:不顯示上次的用戶名
啟用
網絡訪問:不允許SAM帳戶和共享的匿名枚舉
啟用
網絡訪問:不允許為網絡身份驗證儲存憑證
啟用
網絡訪問:可匿名訪問的共享
全部刪除
網絡訪問:可匿名訪問的命
全部刪除
網絡訪問:可遠程訪問的注冊表路徑
全部刪除
網絡訪問:可遠程訪問的注冊表路徑和子路徑
全部刪除
帳戶:重命名來賓帳戶
重命名一個帳戶
帳戶:重命名系統管理員帳戶
重命名一個帳戶
3、禁用不必要的服務 開始-運行-services.msc TCP/IPNetBIOS Helper提供 TCP/IP 服務上的 NetBIOS 和網絡上客戶端的 NetBIOS 名稱解析的支持而使用戶能夠共享
文件、打印和登錄到網絡
Server支持此計算機通過網絡的文件、打印、和命名管道共享
Computer Browser 維護網絡上計算機的最新列表以及提供這個列表
Task scheduler 允許程序在指定時間運行
Messenger 傳輸客戶端和服務器之間的 NET SEND 和 警報器服務消息
Distributed File System: 局域網管理共享文件,不需要可禁用
Distributed linktracking client:用于局域網更新連接信息,不需要可禁用
Error reporting service:禁止發送錯誤報告
Microsoft Serch:提供快速的單詞搜索,不需要可禁用
NTLMSecuritysupportprovide:telnet服務和Microsoft Serch用的,不需要可禁用
PrintSpooler:如果沒有打印機可禁用
Remote Registry:禁止遠程修改注冊表
Remote Desktop Help Session Manager:禁止遠程協助
Workstation 關閉的話遠程NET命令列不出用戶組
以上是在Windows Server 2003 系統上面默認啟動的服務中禁用的,默認禁用的服務如沒特別需要的話不要啟動。4、修改注冊表
修改注冊表,讓系統更強壯
1、隱藏重要文件/目錄可以修改注冊表實現完全隱藏 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows Current-VersionExplorerAdvancedFolderHi-ddenSHOWALL”,鼠標右擊 “CheckedValue”,選擇修改,把數值由1改為0
2、防止SYN洪水攻擊
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters 新建DWORD值,名為SynAttackProtect,值為2 新建EnablePMTUDiscovery REG_DWORD 0 新建NoNameReleaseOnDemand REG_DWORD 1 新建EnableDeadGWDetect REG_DWORD 0 新建KeepAliveTime REG_DWORD 300,000 新建PerformRouterDiscovery REG_DWORD 0 新建EnableICMPRedirects REG_DWORD 0
3.禁止響應ICMP路由通告報文
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersInterfacesinterface 新建DWORD值,名為PerformRouterDiscovery 值為0
4.防止ICMP重定向報文的攻擊
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters 將EnableICMPRedirects 值設為0
5.不支持IGMP協議
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters 新建DWORD值,名為IGMPLevel 值為0
6、禁止IPC空連接:
cracker可以利用net use命令建立空連接,進而入侵,還有net view,nbtstat這些都是基于空連接的,禁止空連接就好了。
Local_MachineSystemCurrentControlSetControlLSA-RestrictAnonymous 把這個值改成”1”即可。
7、更改TTL值
cracker可以根據ping回的TTL值來大致判斷你的操作系統,如:
TTL=107(WINNT);TTL=108(win2000);TTL=127或128(win9x);TTL=240或241(linux);TTL=252(solaris);TTL=240(Irix);
實際上你可以自己改的:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters:DefaultTTL REG_DWORD 0-0xff(0-255 十進制,默認值128)改成一個莫名其妙的數字如258,起碼讓那些小菜鳥暈上半天,就此放棄入侵你也不一定哦
8.刪除默認共享
有人問過我一開機就共享所有盤,改回來以后,重啟又變成了共享是怎么回事,這是2K為管理而設置的默認共享,HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters:AutoShareServer類型是REG_DWORD把值改為0即可
9.禁止建立空連接
默認情況下,任何用戶通過通過空連接連上服務器,進而枚舉出帳號,猜測密碼。我們可以通過修改注冊表來禁止建立空連接:
Local_MachineSystemCurrentControlSetControlLSA-RestrictAnonymous 的值改成”1”即可。
10、建立一個記事本,填上以下代碼。保存為*.bat并加到啟動項目中 net share c$ /del net share d$ /del net share e$ /del net share f$ /del net share ipc$ /del net share admin$ /del
5、IIS站點設置:
1、將IIS目錄&數據與系統磁盤分開,保存在專用磁盤空間內。
2、啟用父級路徑
3、在IIS管理器中刪除必須之外的任何沒有用到的映射(保留asp等必要映射即可)
4、在IIS中將HTTP404 Object Not Found出錯頁面通過URL重定向到一個定制HTM文件
5、Web站點權限設定(建議)讀 允許 寫 不允許 腳本源訪問 不允許 目錄瀏覽 建議關閉 日志訪問 建議關閉 索引資源 建議關閉
執行 推薦選擇 “僅限于腳本”
6、建議使用W3C擴充日志文件格式,每天記錄客戶IP地址,用戶名,服務器端口,方法,URI字根,HTTP狀態,用戶代理,而且每天均要審查日志。(最好不要使用缺省的目錄,建議更換一個記日志的路徑,同時設置日志的訪問權限,只允許管理員和system為Full Control)。
7、程序安全: 1)涉及用戶名與口令的程序最好封裝在服務器端,盡量少的在ASP文件里出現,涉及到與數據庫連接地用戶名與口令應給予最小的權限;2)需要經過驗證的ASP頁面,可跟蹤上一個頁面的文件名,只有從上一頁面轉進來的會話才能讀取這個頁面。3)防止ASP主頁.inc文件泄露問題;4)防止UE等編輯器生成some.asp.bak文件泄露問題。
6、IIS權限設置的思路 ?要為每個獨立的要保護的個體(比如一個網站或者一個虛擬目錄)創建一個系統用戶,讓這個站點在系統中具有惟一的可以設置權限的身份。
?在IIS的【站點屬性或者虛擬目錄屬性→目錄安全性→匿名訪問和驗證控制→編輯→匿名訪問→編輯】填寫剛剛創建的那個用戶名。
?設置所有的分區禁止這個用戶訪問,而剛才這個站點的主目錄對應的那個文件夾設置允許這個用戶訪問(要去掉繼承父權限,并且要加上超管組和SYSTEM組)。
7、卸載最不安全的組件
最簡單的辦法是直接卸載后刪除相應的程序文件。將下面的代碼保存為一個.BAT文件,(以下均以 WIN2000 為例,如果使用2003,則系統文件夾應該是 C:WINDOWS)regsvr32/u C:WINDOWSSystem32wshom.ocx del C:WINDOWSSystem32wshom.ocx regsvr32/u C:WINDOWSsystem32shell32.dll del C:WINNTWINDOWSshell32.dll
然后運行一下,WScript.Shell, Shell.application, WScript.Network就會被卸載了。可能會提示無法刪除文件,不用管它,重啟一下服務器,你會發現這三個都提示“×安全”了。
8:防止硬盤的非法訪問
電腦癱瘓的原因,無非就是操作系統中的一些文件或文件夾被移走或被刪除,如果把系統所在的硬盤分區禁用,讓電腦盲們無法進入操作系統所在的分區,他就刪不了操作系統所在分區的文件或文件夾了,系統也就沒事了。
防止別人通過“我的電腦”訪問C盤
點擊“開始→運行”輸入gpedit.msc命令,在打開的組策略編輯器窗口中依次打開“用戶配置→管理模板→Windows組件→Windows資源管理器”分支,然后在右邊雙擊“防止從?我的電腦?訪問驅動器”策略項,并在屬性設置窗口中選擇“已啟用”選項,選擇要禁止訪問的硬盤盤符C盤即可(如圖)。
防止別人從“命令提示符”訪問C盤
當禁用了通過“我的電腦”訪問硬盤后,他人還可以通過“命令提示符”方式進入C盤,所以還應同時禁止通過“命令提示符”訪問C盤。方法是在打開的組策略編輯器窗口中依次打開“用戶配置→管理模板→系統”分支,然后在右邊窗口中將“阻止訪問命令提示符”策略項啟用即可。
禁止運行“cmd.exe”命令
設置完以上兩個策略后,還不能完全防止他人對C盤的訪問,原因是登錄者仍然可以利用“運行”來執行“cmd.exe”命令,進入“命令提示符”狀態,然后再訪問C盤。所以,這個命令也應該禁用。方法是在打開的組策略編輯器窗口中依次打開“用戶配置→管理模板→系統”分支,然后在右邊的窗口中雙擊“不要運行指定的Windows應用程序”策略項,在該策略項的“屬性”窗口中選擇“已啟用”選項,再單擊“顯示”按鈕,在彈出的“顯示內容”對話框中添加“cmd.exe”,這樣該應用程序就被禁用了,到此,其他人員就無法訪問本地計算機的C盤了。
通過以上的設置以后,我們就可以有效的保護操作系統所在的硬盤分區里的所有文件和文件夾了。我們的操作系統也就安全了。
以上你全做好拉我一般一年內你的服務器終端都是安全的。
第五篇:Oracle數據庫 知識點總結
1.constraint約束:
alter table [table_name] add constraint [pk_name] primary key(pkname);//添加主鍵
alter table [table_name] drop constraint [pk_name];//刪除主鍵
alter table [table_name] add constraint [fk_name] foreign key(fkname)references [tablename](fkname);//添加外
鍵
alter table [table_name] drop constraint [fk_name];//刪除外鍵
2.union 關鍵字:
A username, B username
rod
bruce
rose
marina
select username from A
union
select username from B
2、幾個高級查詢運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當
ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來 自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。當 ALL 隨
EXCEPT 一起使用時(EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。當 ALL 隨
INTERSECT 一起使用時(INTERSECT ALL),不消除重復行。
注:使用運算詞的幾個查詢結果行必須是一致的。
3.復合主鍵一般不設外鍵
4.組函數也稱為聚合函數。
例如:我們把學生可以分為男生和女生兩個組,如果想求每組的人數,平均身高,平均年齡等,就需要用到分組函數了。
在SQL中常用的組函數有以下幾個:
COUNT():求出全部的記錄數
MAX():求出一組中的最大值
MIN():求出一組中的最小值
AVG():求出一組中的平均值
SUM():求和
范例:COUNT()函數
SELECT COUNT(empno)FROM emp;
我們常用COUNT(*),最好能夠用字段代替*
范例:MAX()、MIN()函數,求最大最小值,一般是針對于數值的字段的,求出所有員工的的最高工資,和最底工資和平均工
資。
SELECT MAX(sal)最高工資,MIN(sal)最底工資,AVG(sal)平均工資 FROM emp;
范例:求出部門10的所有員工工資的總合
SELECT SUM(sal)工資綜合 FROM emp WHERE deptno=10;
如果如下查詢輸出部門編號和其部門所有員工的工資總和,會產生錯誤。
SELECT deptno ,SUM(sal)工資綜合 FROM emp WHERE deptno=10;
錯誤: “不是單組分組函數”
發生以上的錯誤信息,是因為這樣的查詢需要進行分組統計。
分組統計有其固定的語法格式:
SELECT {DISTINCT} *| 查詢列 列別名1,查詢列2 列別名2,……
FROM 表名稱1 表別名1,表名稱2 表別名2,……
{WHERE 條件(s)}
{ORDER BY 排序的字段1,排序的字段2 ASC|DESC}
{GROUP BY 分組字段}
所以老師寫的是錯的!
5.//從t_student表中刪除名字重復的記錄的信息
delete from t_student where sid not in(select sid from(select min(sid)sid,sname from t_student group by sname));
// delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)
6.sequence
在oracle中sequence就是序號,每次取的時候它會自動增加。sequence與表沒有關系。
(1)
CREATE SEQUENCE seqTest
INCREMENT BY 1--每次加幾個
START WITH 1--從1開始計數
NOMAXvalue--不設置最大值
NOCYCLE--一直累加,不循環
CACHE 10;--設置緩存cache個序列,如果系統down掉了或者其它情況將會導致序列不連續,也可以設置為----NOCACHE(2)
定義好sequence后,你就可以用currVal,nextVal取得值。
CurrVal:返回 sequence的當前值
NextVal:增加sequence的值,然后返回 增加后sequence值
eg:
SELECT Sequence名稱.CurrVal FROM DUAL;
select seqtest.currval from dual(3)
在Sql語句中可以使用sequence的地方:
-不包含子查詢、snapshot、VIEW的 SELECT 語句
-INSERT語句的子查詢中
-INSERT語句的values中
-UPDATE 的 SET中
如在插入語句中
insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入測試');
7.范式:
所謂第一范式(1NF)是指在關系模型中,對域添加的一個規范要求,所有的域都應該是原子性的,即數據庫表的每一
列都是不可分割的原子數據項,而不能是集合,數組,記錄等非原子數據項。即實體中的某個屬性有多個值時,必須拆分
為不同的屬性。在符合第一范式(1NF)表中的每個域值只能是實體的一個屬性或一個屬性的一部分。簡而言之,第一范式
就是無重復的域。
第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。
第二范式(2NF)要求數據庫表中的每個實例或記錄必須可以被唯一地區分。選取一個能區分每個實體的屬性或屬性組,作
為實體的唯一標識。第二范式(2NF)要求實體的屬性完全依賴于主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一
部分的屬性,如果存在,那么這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一
對多的關系。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。簡而言之,第二范式就是在第一范式的基礎上屬性完全依賴于主鍵。例如在員工表中的身份證號碼即可實現每個一員工的區分,該身份證號碼即為候選鍵,任何
一個候選鍵都可以被選作主鍵。在找不到候選鍵時,可額外增加屬性以實現區分,如果在員工關系中,沒有對其身份證號
進行存儲,而姓名可能會在數據庫運行的某個時間重復,無法區分出實體時,設計辟如ID等不重復的編號以實現區分,被
添加的編號或ID選作主鍵。
第三范式(3NF)是第二范式(2NF)的一個子集,即滿足第三范式(3NF)必須滿足第二范式(2NF)。簡而言之,第三范式(3NF)要求一個關系中不包含已在其它關系已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門
有部門編號(dept_id)、部門名稱、部門簡介等信息。那么在員工信息表中列出部門編號后就不能再將部門名稱、部門簡
介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三范式(3NF)也應該構建它,否則就會有
大量的數據冗余。簡而言之,第三范式就是屬性不依賴于其它非主屬性,也就是在滿足2NF的基礎上,任何非主屬性不得傳
遞依賴于主屬性。