當前位置:首頁 » 數據倉庫 » oracle資料庫學習筆記
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle資料庫學習筆記

發布時間: 2022-08-28 20:18:05

A. 關於Oracle資料庫OCP考試及相關問題

你可以參考下我以前的2個回答.
Q1.我現在看的是OCA
1Z0-051
1Z0-052(11G),但是現在考試基本上都是1Z0-047和1Z0-042(10G),請問11G的東西和10G差的多麼,如果看完了11G的能考10G的么?
還有現在ORACLE考試的論壇比較好的是哪個?最好能有最新題庫的!
回答:
1.請問11G的東西和10G差的多麼,
11g有自己的新特性,但總體上差不多
2.如果看完了11G的能考10G的么?
沒問題
首先,你要搞清楚自己要考哪個,OCA,OCP?
OCA自己看書就可以,再做點007,042(10G),052(11G)的題庫(網上有),就可以了,考試不難
OCP需要經過原廠培訓(oracle官方規定,現在可以到個大培訓中心詢問,比如尚觀,萬和),再經過043(10G)的考試可以拿到OCP證書。OCP也不是很難,要多做筆記跟實驗。如果沒經過原廠培訓,就算自己報名考試過了,ORACLE也是不會給你投遞證書的。
論壇跟題庫,1樓的ITPUB論壇上很多。
我的共享文檔里也有OCP的筆記。
Q2.我現在已經工作,從事的工作多和oracle有關,不過都是些基礎的,談不上管理。我打算考oracle
ocp證書。但是一頭霧水,特來此地找已經通過的XD請教以下問題:
1、是不是必須參加原廠培訓,考試形式是什麼樣的?
2、這個證書的考試是不是還分oracle版本?
3、考試主要考幾科,都是什麼?
問題補充:我計劃考10g的認證,需要考幾門課?有沒有教材可以提前看看的,介紹下。我現在沒有oca的證書,不過聽說可以參加某些培訓直接考ocp,不知是否真假,請介紹下。多謝,多謝。。答的好的將追加分數。
十分感謝,能否介紹下市面上能買到的教材有哪些?很多人都說考試的時候發現和「題庫」的一樣,不知這類題庫是什麼意思?買到的還是參加培訓機構時獲得的,能否說明?
回答:
1.是的,官方規定
2。是的,比較普遍的是10g,11g也不少
3.10g:007(基本sql+plsql),042(管理1),043(管理2)
11g:007,052,053,內容跟10g對應,加了一些新特性,差別不大
教材
http://www.itpub.net/forum-4-1.html
我的共享文檔里也有OCP筆記。
可以直接考到OCP,去各大培訓機構詢問下,比如萬和,尚觀,上海交大等,都是跟ORACLE原廠合作關系。原廠在北京
可以先看看OCA認證考試指南,了解下體系結構,新華書店好像有。
「《OCA認證考試指南(IZO-052):Oracle
Database
11g
Administrat》旨在對參加OCA
Oracle
Database
11g
Administration
I考試的讀者提供幫助。每一章都配備了練習題、自測題、實踐題、本章知識點回顧和小結,從各個方面使讀者對本章所學內容進行充分的消化和吸收。《OCA認證考試指南(IZO-052):Oracle
Database
11g
Administrat》是OCA認證考試最權威的輔導教程,也是Oracle從業人員必備的參考書。」跟042差別不大。
考試題目基本都出自題庫(論壇上都有下載),所以考試是比較好過的,培訓的話會有原廠教材發的,但過了OCP也不代表什麼(一張紙而已),企業還是會考察你的真正能力,所以想要從事這方面的工作需要自己不斷學習,多去ITPUB上交流

B. Java的學習技巧是什麼

下面簡單列舉一下大家學習java的一個系統知識點的一些介紹

一、java基礎部分:java基礎的時候,有些知識點是非常重要的,比如循環系列。For,while,do-while.這方面只要大家用心點基本沒什麼難點。

二、面向對象:oop面向對象的時候,偏重理論,相信這方面的文章也很多,大家可以多看看,在這就不說了。重點掌握面向對象的三大特徵和基本原理。

三、java核心一:這方面主要偏重API,所以在學習了這章的時候,一定要對照API去學習,多看API,主要就是方法多,string和集合的方法最為重要。後面將為大家提供本人整理的部分筆記。

四、java核心二:主要講解了異常,線程和IO流,其實個人認為重點掌握線程就行,對於流和異常多寫就行,線程偏重理論也最為重要。

五、oracle資料庫方面:建議學習資料庫的時候大家一定要端正態度,資料庫極為重要,本人當時在學習這個的時候,一直以為資料庫只是為了增刪改查,故沒有認真學習,後期面試的時候吃了不少虧,因為現在軟體公司對資料庫的要求跟java一樣重要,基本都會單獨一張筆試題筆試資料庫。

六、JDBC/XML系列:JDBC主要是3個核心介面(Connection) (Statement) (ResultSet)的使用,大家在學習的時候,熟練運用3介面,jdbc的原理也相當重要,雖然後期學習了HIbernate之後,JDBC不需要再用,但其底層原理還是JDBC,而且現在很多軟體公司不一定會用到Hibernate框架,所以建議大家還是把「本」學好,XML:重點掌握解析互換的2個核心介面方法。

七、HTML/CSS/JS:對於這個,本人相當糾結,因為這個有點偏向於美工的意思,所以後期想從事後台開發的同學一般不會太重視,但是現在都是web項目,而且很多軟體公司並不是把許多這方面的事情交給美工(除非是那種有很高要求的靜態頁面),而且現在html代碼都是在jsp裡面寫,所以建議還是好好學學,因為公司不會讓一個美工去專門為你寫一些簡單的html代碼,包括js!這章其實不難,就是屬性方法知識點比較多,大家多記記,多寫寫,重在多練!

八、Servlet/Jsp:如果想從事web和b/s開發(現在基本都是web和b/s開發),這章極為重要,伺服器的訪問以及配置。tomcat的使用都在這一章,雖然後期struts框架的學習簡化了servlet代碼的繁瑣性,但是你可知道現在有些公司只用servlet不用struts!即使用了框架技術也不一定是struts!servlet跟JDBC一樣都是「本」,而struts和Hibernate一樣都是封裝了它們而後簡化代碼而已。所以只有把「本」學會了,就不怕框架的變化!jsp就不多說了,如果你學習java這個就不會缺少!後期b/s項目頁面的布局以及功能就全靠它了。

九、Ajax/Jquery:當初學習這個的時候,本人沒有用心去學,然後結果就是本人在進公司之後花了一個星期的時間練習jQuery!這個對於強化web伺服器頁面的功能技術實在是強大。這個封裝了js對象的技術,可以對jsp頁面元素進行樣式的更改以及操作,想要玩好web項目,這個技術必須玩好!

十、SSH:傳說中的三大框架;

Struts:前面已經提到,這個框架技術主要是為了彌補servlet和jsp頁面之間交互的復雜性,可以有效的提高客戶端與伺服器之間的交互。而且採用了MVC思想進行改善減弱代碼之間的復雜性。

Hibernate:主要封裝了jdbc的核心功能,可以採用映射方式訪問並操作資料庫,一定程度上講是簡化了程序代碼,但前面已經提到,由於是框架,而框架是隨著時代而改變的,並且很多公司不一定用到這個框架,所以,只有掌握好JDBC的根本原理,才會更加理解這個框架。

Spring框架:其實後期學框架知識大家都會覺得很無趣和乏味,因為框架的知識都是理論很深的知識點,spring主要是要完善代碼之間的耦合度,包括類似工廠模式的對象自動控制,AOP的事物日誌管理等,都其實是為了減少程序員的工作量,但不得不說是有很大的作用的,而且這個框架可以整合JDBC以及Hibernate,struts技術,可以把所有的框架技術都整合在一起。相當於一塊主板把內存,風扇,cpu,顯卡都集中在一起。

前面所有的都是個人學習之中的一點感受,希望大家也能有所感觸,主要想說明的是前面的基礎一定要打好。

對於學習方法的問題也可以和大家聊一聊,本人在學習之初,由於面向對象和集合一些理論較深的知識點出現,導致後期比較注重理論,最終在寫實際項目的時候吃了苦頭,因為代碼量沒有跟上,即使理論都懂,但很多功能還是無法自己寫出,所以要強調的是在注重理論的情況下一定要多寫代碼。

我的建議是在理論比較深刻的知識點面前,比如面向對象,集合,線程這些知識,多看點理論,而對於html,css以及API方法比較多的知識點的情況下,多寫代碼。總之,各50%最好!當然,這就需要大家付出更多的時間和精力辛苦勤勞下了!java的學習還是要多練代碼,多思考,舉一反三,任何的知識點只要你認真的去做,沒有拿不下的頑石,勤能補拙,相信自己,然後用功,你就勝利了。

摘自:張純睿的博客,更多學習資料

C. oracle理論學習詳解及各種簡單操作例子怎麼解決

1. 資料庫的發展過程
層次模型 -->網狀模型 -->關系模型 -->對象關系模型
2. 關於資料庫的概念
DB:資料庫(存儲信息的倉庫)
DBMS:資料庫管理系統(用於管理資料庫的工具)
RDBMS:關系型資料庫管理系統
ORDBMS:對象關系型的資料庫管理系統
3. Oracle資料庫的主要特點
1)支持多用戶、大事務量的處理
2)資料庫安全性和完整性控制
3)支持分布式數據處理
4)可移植性
4.Oracle一些常見問題?
1)如果我只有一張表,為什麼我還要創建資料庫?
SQL語言要求所有表都需放在資料庫里。這項設計當然有它好的理由。SQL能控制多為用戶同時訪問表的行為。能夠授予或撤銷對整個資料庫的訪問權。這有時比控制每張表的許可權要簡單很多
2)創建庫的命令的字母全是大寫,一定要這樣嗎?
有些系統確實要求某些關鍵字採用大寫形式。但SQL本身不區分大小寫。也就是說,命令不大寫也可以,但命令大寫是良好的SQL編程慣例。
3)給資料庫、表和列命名時有什麼主意事項嗎?
創建具有描述性的名稱通常有不錯的效果。有時候要多用幾個單詞來命名。所有名稱都不能包含空格,所以使用下劃線能夠讓你創建更具描述性的名稱。命名時最好避免首字母大寫,因為SQL不區分大小寫。極有可能會搞錯資料庫。
4)為什麼不能直接把BLOB當成所有文本值的類型?
因為這樣很浪費空間。VARCHAR或CHAR只會佔用特定空間。不會多於256字元。但BLOB需要很大的存儲空間。隨著資料庫的增長,佔用存儲空間就是冒著耗盡硬碟空間的風險。另外,有些重要的字元串運算無法操作BLOB類型的數據。只能用於VARCHAR或CHAR。
5)為什麼需要INT和DEC這類數值類型?
節省資料庫存儲空間和效率有關。為表的沒列選擇最合適的數據類型可以為表瘦身,還可以使數據操作更為快速。
5.Oracle關系資料庫基礎
1)主鍵:表中其中一列或幾列的組合,其值能唯一標識表中每一行。
表中任何列都可以作為主鍵,但要滿足如下條件:
任何兩行都不具有相同的主鍵值
每個行都必須具有一個主鍵值(主鍵列不允許為null值)
主鍵列中的值不允許修改或更新
主鍵值不能重用(如果某行從表中刪除,它的主鍵不能賦給以後的新行)
一般以id或uuid作為主鍵的名字
2)外鍵是什麼:
在一個關系(參照表)中是主鍵,而另一個關系引用這個鍵。那麼這個鍵在另一個關系中就是外鍵。
3)外建能幹什麼:
使兩個關系(表)形成關聯,外鍵只能引用參照表中的主鍵。保持數據一致性,完整性。
如圖:

4)如何在資料庫內表示一對一

5)如何在資料庫內表示一對多

6)關系模型的完整性約束是什麼?
是通過關系的某種約束條件對關系進行約束。也就是說關系的值隨時間變化時應該滿足一些約束條件。如年齡不能超過1000,性別必須是男或者女
7)關系模型的完整性約束能有什麼?
實體完整性、參照完整性、用戶自定義完整性。
實體完整性:針對基本關系而言,也就是一個二維表,主鍵不能為NULL
參照完整性:表之間存在關系,自然就存在關系的引用(外鍵),表和表之間的關系通過外鍵實現,外鍵可以為NULL或引用表的主鍵
用戶自定義完整性:針對不同的需求定義自己的完整性約束,如不允許學生編號中出現非數字字元,性別必須是男或者女
6. Oracle自學筆記
1)資料庫和表的名稱不一定要大寫。
2)列是存儲在表中的一塊數據,行是一組能夠描述某個事物的列的集合。列和行構成了表。
3)創建oracle資料庫。使用oracle自帶的Database Configuration Assistant 來創建庫
4)使用DBA身份 創建表空間。具體sql如下:
create tablespace pzw datafile 'C:/oracle/pzw.dbf' SIZE 1024M REUSE AUTOEXTEND OFF extent management local segment space
management auto;
5)刪除用戶命令
drop user pzw cascade;
6)刪除表空間命令
DROP TABLESPACE pzw INCLUDING CONTENTS AND DATAFILES;
7 )查看錶空間命令。

鏈接地址:查看oracle表空間的兩種方式
8)創建用戶。
create user pzw identified by pzw;
9)將包空間分配給用戶
alter user pzw default tablespace pzw;
10)給用戶授權
grant create session, create table, unlimited tablespace to pzw;
11)創建表
CREATE TABLE doughnut_list
(
doughnut_name VARCHAR(10),
doughnut_type VARCHAR(6),
doughnut_birthday DATE
);

12)刪除表
DROP TABLE
doughnut_list;

13)給表中增加一列
Alter table EMP add sale number;

14)資料庫插入一條數據
insert into DEPT_EMP_TABLE (DEPT_EMP_NO,emp_no,Dept_No,Joined_Date) values (009,'00002',1,to_date('2011-2-28 15:42:56','yyyy-mm-dd hh24:mi:ss'));
commit;

15)資料庫修改一條數據
update emp set emp_name='張惠妹',age=20,sex='女',profession='流行歌手' where emp_no = '00002';
commit;
16)資料庫刪除一條數據

delete emp where emp_no = '000013';
commit;

17)查詢全部數據
select * from emp;
18)創建視圖
create view adress_view as select * from pzw.adress;

以下為oracle演示數據操作及練習題(對菜鳥及有用。使用scott 登陸。默認密碼tiger)
1.查看演示數據的表。
select*fromtab
或者selecttable_namefromuser_tables;
2.查看錶結構(plsql操作無效。使用命名提示符 可以操作)
desc dept;
3.查看員工姓名
select ENAMEfrom emp;
4.查詢員工的編號和明星(sql語句不區分大小寫)
select empno, enamefrom emp;
5.查詢所有的欄位
select*fromemp;
一般建議不使用*號,使用*號不明確,建議將相關的欄位寫到select語句的後面,使用*號的效率比較低
6.列出員工的編號,姓名和年薪。
select empno, ename,sal*12from emp;

select語句中可以使用運算符,以上存在一些問題,年薪的欄位名稱不太明確

7.將查詢出來的欄位顯示為中文
select empnoas 員工編號, ename as 員工姓名, sal*12 as 年薪 from emp;
可以採用as命名別名,as可以省略
如:可以採用as命名別名,as可以省略
8.查詢薪水等於5000的員工
select empno, ename, sal from emp where sal=5000;

如果是字元類型的數據進行比較的時候,是區分大小寫的。
9.查詢薪水不等於5000的員工
select empno, ename, sal from emp where sal<>5000;
10.查詢工作崗位不等於manager的員工
select empno,ename,sal,job from emp where job<>
'manager';

在sql語句中如果是字元串採用單引號,引起來,不同於Java中採用雙引號,如果是數值型也可以引起來,只不過是數值類型數據當成字元串來處理
11.查詢薪水為1600到3000的員工(第一種方式,採用>=和<=)
select empno, ename, sal from emp where sal>=1600 and sal<=3000;
查詢薪水為1600到3000的員工(第一種方式,採用between ...and...)
select empno,ename,sal,job from emp where salbetween
1600and 3000;

between ….and …,包含最大值和最小值

between ….and …,不僅僅可以應用在數值類型的數據上,還可以應用在字元數據類型上

between ….and …,對於兩個參數的設定是有限制的,小的數在前,大的數在後
12.查詢津貼為空的員工
select * from emp where commis null;

13.查詢津貼不為空的員工
select * from emp where commis not null;
14.工作崗位為MANAGER,薪水大於2500的員工。
select empno, ename, sal from emp where job='MANAGER'and sal>2500;

and表示並且的含義,表示所有的條件必須滿足
15.查詢出job為manager和job為salesman的員工。
select * from emp where job='MANAGER'or job='SALESMAN';

or,只要滿足條件即可,相當於或者
16.查詢薪水大於1800,並且部門編號為20 或者 30的
select * from emp where sal>1800and (deptno=20or deptno=30);

17.查詢出job為manager和job為salesman的員工
select * from emp where jobin('MANAGER','SALESMAN');
18.查詢job不等於MANAGER並且不能與SALESMAN的員工(第一種寫法)
select * from emp where job<> 'MANAGER' and job <> 'SALESMAN';

19 .查詢job不等於MANAGER並且不能與SALESMAN的員工(第二種寫法)

select * from emp where jobnot in('MANAGER','SALESMAN');

20.查詢以M開頭的所有員工
select * from emp where ename like 'M %';

21.查詢以T結尾的所有員工
select * from emp where ename like '%T';

22.查詢以O結尾的所有員工
select * from emp where ename like '%O%';

23.查詢姓名中第一個字元為A的所有員工
select * from emp where ename like '_A%';

Like可以實現模糊查詢,like支持%和下劃線匹配

Like中%和下劃線的差別?
%匹配任意字元出現任意次數
下劃線只匹配一個任意字元出現一次

Like語句是可以應用在數值類型的數據上的,但是如果沒有使用引號括起來的話,那麼不能使用%和下劃線。類似於等號的操作,如果使用引號括起來的話,那麼可以使用%和下劃線,將數值類型的數據轉換為字元類型後進行處理。
24.按照薪水由小到大排序
s elect * from emporder by sal;

如果存在where子句那麼order by必須放到where語句的後面
25.手動指定按照薪水由小到大排序
select * from emp order by saldesc;

26. 按照薪水和姓名排序
select * from emp order by sal desc ,ename desc;

如果採用多個欄位排序,如果根據第一個欄位排序重復了,會根據第二個欄位排序

select * from emp order by sal asc;

26.手動指定按照薪水由大到小排序
select * from emporder by sal desc;

27.按照薪水升序(使用欄位的位置來排序)
select * from emp order by 6;

不建議使用此種方式,採用數字含義不明確,程序不健壯
28.查詢員工.將員工姓名全部轉換成小寫。
select lower(ename)from emp;

29.查詢job為manager的員工
select * from emp where job=upper('manager');

30.查詢姓名以M開頭所有的員工
select * from emp wheresubstr(ename, 1,1)='M';

方法的第二個參數表示的是查詢字元的位置,0,1都表示第一個字元,負數表示從結尾開始的位置,第三個參數表示截取字元串的長度。
31.取得員工姓名的長度
select length(ename) from emp;

32.取得工作崗位為MANAGER的所有員工
select * from emp where job=trim('MANAGER ');

trim會去首尾空格,不會去除中間的空格
33.查詢1986-02-20入職的員工(第一種方法,與資料庫的格式匹配上)
select * from emp where HIREDATE='20-2月 -81';

查詢1982-02-20入職的員工(第二種方法,將字元串轉換成date類型)
select * from emp where hiredate=to_date('1981-02-20 00:00:00', 'YYYY-MM-DD HH24:MI:SS');

to_date可以將字元串轉換成日期,具體格式to_date(字元串,匹配格式)
34.查詢1981- 02-30以後入職的員工,將入職日期格式為yyyy-mm-dd hh:mm:ss
select empno, ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss')from emp where hiredate>to_date('1981-02-2000:00:00', 'YYYY-MM-DD HH24:MI:SS');

35.查詢員工薪水加入前分位
select empno, ename, to_char(sal, '$999,999') from emp;

36.查詢薪水加入千分位和保留兩位小數
select empno, ename, to_char(sal, '$999,999.00') fromemp;

將數字轉換成字元串,格式

控制符

說明

9

表示一位數字

0

位數不夠可以補零

$

美元符

L

本地貨幣符號

.

顯示小數

,

顯示千分位

37.將字元串轉換成數值
select * from emp where sal>to_number('1,500','999,999');
38.取得員工的全部薪水,薪水+津貼
select empno, ename, sal, comm, sal+nvl(comm,0) fromemp;

39.如果job為MANAGER薪水上漲10%,如果job為SALESMAN工資上漲50%(case … when … then …end)
select empno, ename, job, sal, (casejobwhen 'MANAGER' thensal*1.1when 'SALESMAN' thensal*1.5end)as newsal from emp;

40.如果job為MANAGER薪水上漲10%,如果job為SALESMAN工資上漲50%(decode)
select empno, ename, job, sal, decode(job,'MANAGER', SAL*1.1, 'SALESMAN',sal*1.5) as newsal from emp;

41.四捨五入
select round(1234567.4567, 2) from al;

Dual是oracle提供的,主要為了方便使用,因為select的時候需要用from
42.聚合函數

count

取得記錄數

sum

求和

Avg

取平均

Max

取最大的數

min

取最小的數

43.取得所有員工人數
select count(*) from emp;

Count(*)表示取得所有記錄,忽略null,為null值也會取得
44.取得津貼不為null的員工數
select count(comm) from emp;

採用count(欄位名稱),不會取得為null的紀錄
45.取得工作崗位的個數
select count(distinctjob) from emp;

Distinct可以去除重復的紀錄
46.取得薪水的合計
select sum(sal) from emp;

47取得薪水的合計(sal+comm)
select sum(sal+nvl(comm, 0)) from emp;
48.取得平均薪水
select avg(sal) from emp;

49.取得最高薪水
select max(to_char(hiredate, 'yyyy-mm-dd')) from emp;

50.取得最小薪水
select min(sal) from emp;

51.取得最早入職的員工
select min(hiredate) from emp;

52.可以將這些聚合函數都放到select中一起使用
select count(*), sum(sal), avg(sal), max(sal),min(sal) from emp;

53.取得每個崗位的工資合計,要求顯示崗位名稱和工資合計。
select job, sum(sal) from empgroupby job;

採用group by,非聚合函數所使用的欄位必須參與分組,
Group by中不能使用聚合函數
如果使用了order by,order by必須放到group by後面
54。取得每個崗位的平均工資大於2000
select job, avg(sal) from emp group by job having avg(sal) >2000;

分組函數的執行順序:
1、 根據條件查詢數據
2、 分組
3、 採用having過濾,取得正確的數據
55. 顯示每個員工信息,並顯示所屬的部門名稱
select ename ,dname from emp a ,dept b where a.deptno = b.deptno;

以上查詢也稱為「內連接」,指查詢相等的數據
56.取得員工和所屬的經理的姓名
select a.ename, b.ename from emp a, emp b wherea.mgr=b.empno;

以上稱為「自連接」,只有一張表連接,具體的查詢方法

57.(內連接)顯示薪水大於2000的員工信息,並顯示所屬的部門名稱
SQL99語法:
select ename,sal,dname from emp a join dept b on a.deptno = b.deptno where sal>2000;
SQL92語法
select ename,sal,dname from emp a, dept b where a.deptno=b.deptno and sal > 2000;

Sql92語法和sql99語法的區別:99語法可以做到表的連接和查詢條件分離,特別是多個表進行連接的時候,會比sql92更清晰
58.(外連接)顯示薪水大於2000的員工信息,並顯示所屬的部門名稱,如果某一個部門沒有員工。那麼該部門也必須顯示出來
select dname,ename from emp a right join dept b on a.deptno = b.deptno;
59.查詢員工名稱和所屬經歷的名稱,如果沒有上級經理,也要查詢出來
Select e.ename, m.ename mname from emp e, emp mwhere m.empno(+) = e.mgr;
60.查詢員工信息,查詢哪些人是管理者,要求顯示出其員工編號和員工姓名
select ename,ename from emp where empno in (select distinct mgr from emp where mgr is not null);
61.查詢那些人的薪水高於員工的平均薪水,需要顯示員工編號,員工姓名,薪水。
select empno, ename, sal from emp where sal>(selectavg(sal) from emp);

分析思路:首先根據文字描述找出被依賴的條件,逐次分析
62.查詢各個部門的平均薪水所屬的等級,需要顯示部門編號,平均薪水,等級編號

select a.deptno, a.avg_sal, b.grade from (select deptno, avg(sal) avg_sal fromemp group by deptno) a, salgrade b where a.avg_sal between b.losal and b.hisal;

關鍵點:將子查詢看作一張表
63.查詢員工信息以及部門名稱
Select e.empno, e.ename, e.deptno, (select dname from dept where deptno = e.deptno) as dname from emp e
64.union可以合並集合(相加)

select * from emp where job='MANAGER'
union
select* from emp where job='SALESMAN'
65.minus可以移出集合(相減)
查詢部門編號為10和20的,取出薪水大於2000的。

select * from emp where deptno in(10, 20)
minus
select* from emp where sal>2000
66.rownum隱含欄位
select rownum, a.* from emp a;
67.取得前5條數據
select * from emp where rownum <=5;
68.取得薪水最好的前5名

select empno, ename, sal from (select empno,ename, sal from emp order by sal desc)whererownum <=5

D. oracle資料庫入門怎麼入

oracle資料庫入門學習是一個重復的過程,理論和時間交替來完成,不要看書看不明白非要看明白,到機器上試一下就明白了;不要機器上反復弄不通的東西還弄,懂得向書上和旁邊的人求助。
一、定位
oracle分兩大塊,一塊是開發,一塊是管理。
開發主要是寫寫存儲過程、觸發器什麼的,還有就是用Oracle的Develop工具做form。有點類似於程序員,需要有較強的邏輯思維和創造能力,比較辛苦,是青春飯;
管理則需要對oracle資料庫的原理有深刻的認識,有全局操縱的能力和緊密的思維,責任較大,因為一個小的失誤就會盪掉整個資料庫,相對前者來說,後者更看重經驗。
二、學習方法
學習方法就是:看書、思考、寫筆記、做實驗、再思考、再寫筆記 。
看完理論的東西,自己靜下心來想想,多問自己幾個為什麼,然後把所學和所想的知識點做個筆記;在想不通或有疑問的時候,就做做實驗,想想怎麼會這樣,同樣的,把實驗的結果記下來。思考和做實驗是為了深入的了解這個知識點。而做筆記的過程,也是理清自己思路的過程。
學習的過程是使一個問題由模糊到清晰,再由清晰到模糊的過程。而每次的改變都代表著你又學到了一個新的知識點。
學習的過程也是從點到線,從線到網,從網到面的過程。當點變成線的時候,你會有總豁然開朗的感覺。當網到面的時候,就已經達到大神級別了。
三、oracle的體系
oracle的體系很龐大,要學習它,首先要了解oracle的框架。在這里,簡要的講一下oracle的架構,讓初學者對oracle有一個整體的認識。
1、物理結構(由控制文件、數據文件、重做日誌文件、參數文件、歸檔文件、密碼文件組成)
控制文件:包含維護和驗證資料庫完整性的必要信息、例如,控制文件用於識別數據文件和重做日誌文件,一個資料庫至少需要一個控制文件
數據文件:存儲數據的文件
重做日誌文件:含對資料庫所做的更改記錄,這樣萬一出現故障可以啟用數據恢復。一個資料庫至少需要兩個重做日誌文件
參數文件:定義Oracle 常式的特性,例如它包含調整SGA 中一些內存結構大小的參數
歸檔文件:是重做日誌文件的離線副本,這些副本可能對於從介質失敗中進行恢復很必要。
密碼文件:認證哪些用戶有許可權啟動和關閉Oracle常式
2、邏輯結構(表空間、段、區、塊)
表空間:是資料庫中的基本邏輯結構,一系列數據文件的集合。
段:是對象在資料庫中佔用的空間
區:是為數據一次性預留的一個較大的存儲空間
塊:ORACLE最基本的存儲單位,在建立資料庫的時候指定
3、內存分配(SGA和PGA)
SGA:是用於存儲資料庫信息的內存區,該信息為資料庫進程所共享。它包含Oracle 伺服器的數據和控制信息, 它是在Oracle 伺服器所駐留的計算機的實際內存中得以分配,如果實際內存不夠再往虛擬內存中寫。
PGA:包含單個伺服器進程或單個後台進程的數據和控制信息,與幾個進程共享的SGA 正相反PGA 是只被一個進程使用的區域,PGA 在創建進程時分配在終止進程時回收
4、後台進程(數據寫進程、日誌寫進程、系統監控、進程監控、檢查點進程、歸檔進程、服務進程、用戶進程)
數據寫進程:負責將更改的數據從資料庫緩沖區高速緩存寫入數據文件
日誌寫進程:將重做日誌緩沖區中的更改寫入在線重做日誌文件
系統監控:檢查資料庫的一致性如有必要還會在資料庫打開時啟動資料庫的恢復
進程監控:負責在一個Oracle 進程失敗時清理資源
檢查點進程:負責在每當緩沖區高速緩存中的更改永久地記錄在資料庫中時,更新控制文件和數據文件中的資料庫狀態信息。
歸檔進程:在每次日誌切換時把已滿的日誌組進行備份或歸檔
服務進程:用戶進程服務。
用戶進程:在客戶端,負責將用戶的SQL 語句傳遞給服務進程,並從伺服器段拿回查詢數據。
5、oracle常式:Oracle 常式由SGA 內存結構和用於管理資料庫的後台進程組成。常式一次只能打開和使用一個資料庫。
6、SCN(System Change Number):系統改變號,一個由系統內部維護的序列號。當系統需要更新的時候自動增加,他是系統中維持數據的一致性和順序恢復的重要標志。
四、深入學習
管理:可以考OCP證書,對oracle先有一個系統的學習,然後看Oracle Concepts、oracle online document,對oracle的原理會有更深入的了解,同時可以開始進行一些專題的研究如:RMAN、RAS、STATSPACT、DATAGUARD、TUNING、BACKUP&RECOVER等等。
開發:對於想做Oracle開發的,在了解完Oracle基本的體系結構之後,可以重點關注PL/SQL及Oracle的開發工具這一部分。 PL/SQL主要是包括怎麼寫SQL語句,怎麼使用Oracle本身的函數,怎麼寫存儲過程、存儲函數、觸發器等。 Oracle的開發工具主要就是Oracle自己的Developer Suite(Oracle Forms Developer and Reports Developer這些),學會如何熟練使用這些工具。

E. 怎麼樣才能快速學會oracle

我覺得吧,oracle的體系太龐大了,對於初學者來說,難免會有些無從下手的感覺,什麼都想學,結果什麼都學不好,所以把我的經驗分享下,希望讓剛剛入門的人對oracle有一個總體的認識,少走一些彎路。
acle分兩大塊,一塊是開發,一塊是管理。開發主要是寫寫存儲過程、觸發器什麼的,還有就是用Oracle的Develop工具做form。有點類似於程序員,需要有較強的邏輯思維和創造能力,個人覺得會比較辛苦,是青春飯;管理則需要對oracle資料庫的原理有深刻的認識,有全局操縱的能力和緊密的思維,責任較大,因為一個小的失誤就會down掉整個資料庫,相對前者來說,後者更看重經驗。 我的方法就是看書、思考、寫筆記、做實驗、再思考、再寫筆記 。看完理論的東西,自己靜下心來想想,多問自己幾個為什麼,然後把所學和所想的知識點做個筆記;在想不通或有疑問的時候,就做做實驗,想想怎麼會這樣,同樣的,把實驗的結果記下來。思考和做實驗是為了深入的了解這個知識點。而做筆記的過程,也是理清自己思路的過程。發現不懂得可以在相關論壇裡面求助,看看別人是怎麼分析問題的。你還可以在:http://hi..com/marrensy/blog/item/8a7120c40f3384e153664fdb.html裡面看看,不會讓你失望的哦。希望可以幫到你呢。

F. 請提供幾本oracle資料庫的學慣用書,注意是適合一個沒有任何計算機基礎的人用的,謝了!

推薦一本書叫:塗抹Oracle:三思筆記之一步一步學Oracle。感覺不錯的。不是純理論知識。各大電商都有賣。推薦你去下載mldn李興華的Oracle基礎視頻,我Oracle就是聽這個自學的。非常實用也很基礎。希望對你有幫助。

G. 誰有oracle資料庫學習資料或筆記都可

我有,可留郵箱
或是在谷歌上搜一下 上面有很多的

H. oracle學習過程

Oracle有很多值得學習的地方,Oracle體系太龐大了,對於初學者來說,難免會有些無從下手的感覺,什麼都想學,結果什麼都學不好,所以把學習經驗共享一下,希望讓剛剛入門的人對Oracle有一個總體的認識,少走一些彎路。 一、定位 Oracle分兩大塊,一塊是開發,一塊是管理。開發主要是寫寫存儲過程、觸發器什麼的,還有就是用Oracle的Develop工具做form。有點類似於程序員,需要有較強的邏輯思維和創造能力,個人覺得會比較辛苦,是青春飯;管理則需要對Oracle資料庫的原理有深刻的認識,有全局操縱的能力和緊密的思維,責任較大,因為一個小的失誤就會down掉整個資料庫,相對前者來說,後者更看重經驗。 因為資料庫管理的責任重大,很少公司願意請一個剛剛接觸Oracle的人去管理資料庫。對於剛剛畢業的年輕人來說,可以先選擇做開發,有一定經驗後轉型,去做資料庫的管理。當然,這個還是要看人個的實際情況來定。 二、學習方法 我的方法很簡單,就是:看書、思考、寫筆記、做實驗、再思考、再寫筆記。 看完理論的東西,自己靜下心來想想,多問自己幾個為什麼,然後把所學和所想的知識點做個筆記;在想不通或有疑問的時候,就做做實驗,想想怎麼會這樣,同樣的,把實驗的結果記下來。思考和做實驗是為了深入的了解這個知識點。而做筆記的過程,也是理清自己思路的過程。 Oracle學習過程是使一個問題由模糊到清晰,再由清晰到模糊的過程。而每次的改變都代表著你又學到了一個新的知識點。 Oracle學習過程也是從點到線,從線到網,從網到面的過程。當點變成線的時候,你會有總豁然開朗的感覺。當網到面的時候,你就是高手了。 很多網友,特別是初學的人,一碰到問題就拿到論壇上來問,在問前,你有沒有查過書,自己有沒有研究過,有沒有搜索一下論壇?這就叫思維惰性。由別人來回答你的問題,會讓你在短時間內不費勁地弄懂這個知識點,然而通過自己的努力去研究它,不但會更深入的了解這個知識點,更重要的是在研究的過程會提高你解決問題和分析問題的能力。總的來說,沒有鑽研的學習態度,不管學什麼東西,都不會成功的。 當然,初學的人很多時候是因為遇到問題時,無從下手,也不知道去哪裡找資料,才會到論壇上提問題的。但我認為,在提問的時候,是不是可以問別人是如何分析這個問題?從哪裡可以找到相關的資料?而不是這個問題的答案是什麼?授人以魚不如授人以漁。