新聞中心
隨著企業(yè)信息化程度的不斷提高,數(shù)據(jù)庫越來越成為企業(yè)數(shù)據(jù)中心的核心組成部分。Oracle數(shù)據(jù)庫作為全球范圍內(nèi)應(yīng)用最廣泛、性能最穩(wěn)定的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其在企業(yè)數(shù)據(jù)管理中扮演著重要的角色。而對(duì)于這個(gè)關(guān)鍵性的角色,數(shù)據(jù)的安全和可靠性擔(dān)負(fù)著非常重要的保障工作,也就是數(shù)據(jù)庫的完整性,Oracle數(shù)據(jù)庫的完整性是非常值得考慮和研究的話題。

成都創(chuàng)新互聯(lián)公司堅(jiān)信:善待客戶,將會(huì)成為終身客戶。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨?。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十多年網(wǎng)站建設(shè)經(jīng)驗(yàn)成都創(chuàng)新互聯(lián)公司是成都老牌網(wǎng)站營銷服務(wù)商,為您提供網(wǎng)站制作、做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5技術(shù)、網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)、微信平臺(tái)小程序開發(fā)服務(wù),給眾多知名企業(yè)提供過好品質(zhì)的建站服務(wù)。
一、什么是完整性
完整性是數(shù)據(jù)庫三個(gè)基本特性之一,它保證了數(shù)據(jù)庫存儲(chǔ)的數(shù)據(jù)的正確性和一致性。完整性是指數(shù)據(jù)庫中的數(shù)據(jù)必須滿足某些規(guī)則,這些規(guī)則與數(shù)據(jù)本身的特性相符且不沖突,主要包括實(shí)體完整性、域完整性、參照完整性和用戶自定義完整性。
1、實(shí)體完整性:指表中每個(gè)實(shí)體都有一個(gè)惟一的標(biāo)識(shí)符或主鍵,并且在主鍵列中的每個(gè)值不能為null值或者重復(fù)
2、域完整性:指指定列(域)的值必須屬于該列所定義的數(shù)據(jù)類型
3、參照完整性:指表中外鍵必須參照另一個(gè)表中的主鍵,保證在調(diào)用數(shù)據(jù)時(shí)兩個(gè)表之間的數(shù)據(jù)一致性和完整性
4、用戶自定義完整性:數(shù)據(jù)庫可以允許用戶設(shè)置自己的完整性規(guī)則,可以根據(jù)自己的要求制定存儲(chǔ)各種有效性檢查和驗(yàn)證程序。
二、為什么要保證完整性
數(shù)據(jù)庫的完整性保證了對(duì)數(shù)據(jù)的正確性和可靠性,同時(shí)也避免了用戶對(duì)數(shù)據(jù)造成的惡意或者錯(cuò)誤修改或刪除,從而有效的保護(hù)了企業(yè)數(shù)據(jù)安全和業(yè)務(wù)的持續(xù)穩(wěn)定。完整性還可以防止用戶在數(shù)據(jù)庫中漏填入數(shù)據(jù),從而保證了數(shù)據(jù)在操作過程中的準(zhǔn)確性和可操作性。
三、Oracle數(shù)據(jù)庫完整性保障舉措
1、數(shù)據(jù)備份
數(shù)據(jù)庫備份是當(dāng)前保障數(shù)據(jù)完整性的重要手段,它能更大程度的保證數(shù)據(jù)不會(huì)因?yàn)橐馔獾臑?zāi)難事件造成不可挽回的損失和破壞。數(shù)據(jù)庫備份需要根據(jù)企業(yè)實(shí)際業(yè)務(wù)進(jìn)行定時(shí)的備份操作,同時(shí)需要有效的管理和維護(hù)這些備份數(shù)據(jù),避免備份數(shù)據(jù)本身出現(xiàn)問題。
2、限制數(shù)據(jù)訪問權(quán)限
為確保企業(yè)數(shù)據(jù)安全和保密性,數(shù)據(jù)庫管理員需要根據(jù)實(shí)際業(yè)務(wù)需求和數(shù)據(jù)訪問來設(shè)置數(shù)據(jù)庫運(yùn)行環(huán)境的權(quán)限,對(duì)具體的用戶和用戶組進(jìn)行訪問控制,達(dá)到了保護(hù)其企業(yè)數(shù)據(jù)的目的。
3、監(jiān)控?cái)?shù)據(jù)庫訪問
數(shù)據(jù)庫的訪問控制是數(shù)據(jù)庫完整性保障的重要環(huán)節(jié)。數(shù)據(jù)庫管理員需要對(duì)數(shù)據(jù)庫的用戶進(jìn)行管理,對(duì)于外部用戶,需要通過VPN或者其它的方式進(jìn)行訪問,而內(nèi)部用戶應(yīng)當(dāng)設(shè)置特定賬戶和密碼進(jìn)行訪問,保障數(shù)據(jù)的安全性。
4、數(shù)據(jù)庫性能優(yōu)化
數(shù)據(jù)庫性能優(yōu)化同樣也是保障數(shù)據(jù)完整性的重要環(huán)節(jié),優(yōu)化數(shù)據(jù)庫性能可以降低系統(tǒng)資源的消耗,提高數(shù)據(jù)操作效率和準(zhǔn)確性,同時(shí)以最小的資源滿足實(shí)際業(yè)務(wù)需求,更大程度上保證數(shù)據(jù)的安全和穩(wěn)定。
四、完整性的數(shù)據(jù)恢復(fù)
Oracle數(shù)據(jù)庫系統(tǒng)提供了多種方式和手段來保證系統(tǒng)發(fā)生異常情況時(shí)進(jìn)行處理和恢復(fù),包括MTO、MTA、RTA等多種方式。其中,MTO為Oracle提供的最初的數(shù)據(jù)恢復(fù)方式,MTA是Oracle在MTO的基礎(chǔ)上增加的數(shù)據(jù)恢復(fù)方式,而RTA是Oracle最新推出的數(shù)據(jù)恢復(fù)技術(shù),利用了最近的一些備份和日志數(shù)據(jù)來進(jìn)行數(shù)據(jù)庫的恢復(fù),從而有效的保障了Oracle數(shù)據(jù)庫完整性。
Oracle數(shù)據(jù)庫完整性保障措施的實(shí)施是很有必要的,因?yàn)樗苡行У谋WC數(shù)據(jù)庫數(shù)據(jù)的安全和可靠性,確保了企業(yè)業(yè)務(wù)的穩(wěn)定運(yùn)行。在使用Oracle數(shù)據(jù)庫時(shí),需要密切關(guān)注其完整性,使用數(shù)據(jù)庫的更佳實(shí)踐和最新技術(shù),優(yōu)化數(shù)據(jù)庫性能和系統(tǒng)管理,以更大程度的保障數(shù)據(jù)的安全和穩(wěn)定。
相關(guān)問題拓展閱讀:
- oracle理論學(xué)習(xí)詳解及各種簡單操作例子怎么解決
oracle理論學(xué)習(xí)詳解及各種簡單操作例子怎么解決
1. 數(shù)據(jù)庫的發(fā)展過程
層次模型 –>網(wǎng)狀模型 –>關(guān)系模型 –>對(duì)象關(guān)系模型
2. 關(guān)于數(shù)據(jù)庫的概念
DB:數(shù)據(jù)庫(存儲(chǔ)信息的倉庫)
DBMS:數(shù)據(jù)庫管理系統(tǒng)(用于管理數(shù)據(jù)庫的工具)
RDBMS:關(guān)系型數(shù)據(jù)庫管理系統(tǒng)
ORDBMS:對(duì)象關(guān)系型的數(shù)據(jù)庫管理系統(tǒng)
3. Oracle數(shù)據(jù)庫的主要特點(diǎn)
1)支持多用戶、大事務(wù)量的處理
2)數(shù)據(jù)庫搜慶安全性和完整性控制
3)支持分布式數(shù)據(jù)處理
4)可移植性
4.Oracle一些常見問題?
1)如果我只有一張表,為什么我還要?jiǎng)?chuàng)建數(shù)據(jù)庫?
SQL語言要求所有表都需放在數(shù)據(jù)庫里。這項(xiàng)設(shè)計(jì)當(dāng)然有它好的理由。SQL能控制多為用戶同時(shí)訪問表的行為。能夠授予或撤銷對(duì)整個(gè)數(shù)據(jù)庫的訪問權(quán)。這有時(shí)比控制每張表的權(quán)限要簡單很多
2)創(chuàng)建庫的命令的字母全是大寫,一定要這樣嗎?
有些系統(tǒng)確實(shí)要求某些關(guān)鍵字采用大寫形式。但SQL本身不區(qū)分大小寫。也就是說,命令不大寫也可以,但命令大寫是良好的SQL編程慣例。
3)給數(shù)據(jù)庫、表和列命名時(shí)有什么主意事項(xiàng)嗎?
創(chuàng)建具有描述性的名稱通常有不錯(cuò)的效果。有時(shí)候要多用幾個(gè)單詞來命名。所有名稱都不能包含空格,所以使用下劃線能夠讓你創(chuàng)建更具描述性的名稱。命名時(shí)更好避免首字母大寫,因?yàn)镾QL不區(qū)分大小寫。極有可能會(huì)搞錯(cuò)數(shù)據(jù)庫。
4)為什么不能直接把BLOB當(dāng)成所有文本值的類型?
因?yàn)檫@樣很浪費(fèi)空間。VARCHAR或CHAR只會(huì)占用特定空間。不會(huì)多于256字符。但BLOB需要很大的存儲(chǔ)空間。隨著數(shù)據(jù)庫的增長,占用存儲(chǔ)空間就是冒著耗盡硬盤空間的亂饑風(fēng)險(xiǎn)。另外,有些重要的字符串運(yùn)算無法操作BLOB類型的數(shù)據(jù)。只能用于VARCHAR或CHAR。
5)為什么需要INT和DEC這類數(shù)值類型?
節(jié)省數(shù)據(jù)庫存儲(chǔ)空間和效率有關(guān)。為表的沒列選擇最合適的數(shù)據(jù)類型可以為表瘦身,還可以使數(shù)據(jù)操作更為快速。
5.Oracle關(guān)系數(shù)據(jù)庫基礎(chǔ)
1)主鍵:表中其中一列或嘩漏返幾列的組合,其值能唯一標(biāo)識(shí)表中每一行。
表中任何列都可以作為主鍵,但要滿足如下條件:
任何兩行都不具有相同的主鍵值
每個(gè)行都必須具有一個(gè)主鍵值(主鍵列不允許為null值)
主鍵列中的值不允許修改或更新
主鍵值不能重用(如果某行從表中刪除,它的主鍵不能賦給以后的新行)
一般以id或uuid作為主鍵的名字
2)外鍵是什么:
在一個(gè)關(guān)系(參照表)中是主鍵,而另一個(gè)關(guān)系引用這個(gè)鍵。那么這個(gè)鍵在另一個(gè)關(guān)系中就是外鍵。
3)外建能干什么:
使兩個(gè)關(guān)系(表)形成關(guān)聯(lián),外鍵只能引用參照表中的主鍵。保持?jǐn)?shù)據(jù)一致性,完整性。
如圖:
4)如何在數(shù)據(jù)庫內(nèi)表示一對(duì)一
5)如何在數(shù)據(jù)庫內(nèi)表示一對(duì)多
6)關(guān)系模型的完整性約束是什么?
是通過關(guān)系的某種約束條件對(duì)關(guān)系進(jìn)行約束。也就是說關(guān)系的值隨時(shí)間變化時(shí)應(yīng)該滿足一些約束條件。如年齡不能超過1000,性別必須是男或者女
7)關(guān)系模型的完整性約束能有什么?
實(shí)體完整性、參照完整性、用戶自定義完整性。
實(shí)體完整性:針對(duì)基本關(guān)系而言,也就是一個(gè)二維表,主鍵不能為NULL
參照完整性:表之間存在關(guān)系,自然就存在關(guān)系的引用(外鍵),表和表之間的關(guān)系通過外鍵實(shí)現(xiàn),外鍵可以為NULL或引用表的主鍵
用戶自定義完整性:針對(duì)不同的需求定義自己的完整性約束,如不允許學(xué)生編號(hào)中出現(xiàn)非數(shù)字字符,性別必須是男或者女
6. Oracle自學(xué)筆記
1)數(shù)據(jù)庫和表的名稱不一定要大寫。
2)列是存儲(chǔ)在表中的一塊數(shù)據(jù),行是一組能夠描述某個(gè)事物的列的。列和行構(gòu)成了表。
3)創(chuàng)建oracle數(shù)據(jù)庫。使用oracle自帶的Database Configuration Assistant 來創(chuàng)建庫
4)使用DBA身份 創(chuàng)建表空間。具體sql如下:
create tablespace pzw datafile ‘C:/oracle/pzw.dbf’ SIZEM REUSE AUTOEXTEND OFF extent management local segment space
management auto;
5)刪除用戶命令
drop user pzw cascade;
6)刪除表空間命令
DROP TABLESPACE pzw INCLUDING CONTENTS AND DATAFILES;
7 )查看表空間命令。
鏈接
8)創(chuàng)建用戶。
create user pzw identified by pzw;
9)將包空間分配給用戶
alter user pzw default tablespace pzw;
10)給用戶授權(quán)
grant create session, create table, unlimited tablespace to pzw;
11)創(chuàng)建表
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)數(shù)據(jù)庫插入一條數(shù)據(jù)
insert into DEPT_EMP_TABLE (DEPT_EMP_NO,emp_no,Dept_No,Joined_Date) values (009,’00002′,1,to_date(‘:42:56′,’yyyy-mm-dd hh24:mi:ss’));
commit;
15)數(shù)據(jù)庫修改一條數(shù)據(jù)
update emp set emp_name=’張惠妹’,age=20,sex=’女’,profession=’流行歌手’ where emp_no = ‘00002’;
commit;
16)數(shù)據(jù)庫刪除一條數(shù)據(jù)
delete emp where emp_no = ‘000013’;
commit;
17)查詢?nèi)繑?shù)據(jù)
select * from emp;
18)創(chuàng)建視圖
create view adress_view as select * from pzw.adress;
以下為oracle演示數(shù)據(jù)操作及練習(xí)題(對(duì)菜鳥及有用。使用scott 登陸。默認(rèn)密碼tiger)
1.查看演示數(shù)據(jù)的表。
select*fromtab
或者selecttable_namefromuser_tables;
2.查看表結(jié)構(gòu)(plsql操作無效。使用命名提示符 可以操作)
desc dept;
3.查看員工姓名
select ENAMEfrom emp;
4.查詢員工的編號(hào)和明星(sql語句不區(qū)分大小寫)
select empno, enamefrom emp;
5.查詢所有的字段
select*fromemp;
一般建議不使用*號(hào),使用*號(hào)不明確,建議將相關(guān)的字段寫到select語句的后面,使用*號(hào)的效率比較低
6.列出員工的編號(hào),姓名和年薪。
select empno, ename,sal*12from emp;
select語句中可以使用運(yùn)算符,以上存在一些問題,年薪的字段名稱不太明確
7.將查詢出來的字段顯示為中文
select empnoas 員工編號(hào), ename as 員工姓名, sal*12 as 年薪 from emp;
可以采用as命名別名,as可以省略
如:可以采用as命名別名,as可以省略
8.查詢薪水等于5000的員工
select empno, ename, sal from emp where sal=5000;
如果是字符類型的數(shù)據(jù)進(jìn)行比較的時(shí)候,是區(qū)分大小寫的。
9.查詢薪水不等于5000的員工
select empno, ename, sal from emp where sal5000;
10.查詢工作崗位不等于manager的員工
select empno,ename,sal,job from emp where job
‘manager’;
在sql語句中如果是字符串采用單引號(hào),引起來,不同于Java中采用雙引號(hào),如果是數(shù)值型也可以引起來,只不過是數(shù)值類型數(shù)據(jù)當(dāng)成字符串來處理
11.查詢薪水為1600到3000的員工(之一種方式,采用>=和=1600 and sal2500;
and表示并且的含義,表示所有的條件必須滿足
15.查詢出job為manager和job為salean的員工。
select * from emp where job=’MANAGER’or job=’SALEAN’;
or,只要滿足條件即可,相當(dāng)于或者
16.查詢薪水大于1800,并且部門編號(hào)為20 或者 30的
select * from emp where sal>1800and (deptno=20or deptno=30);
17.查詢出job為manager和job為salean的員工
select * from emp where jobin(‘MANAGER’,’SALEAN’);
18.查詢job不等于MANAGER并且不能與SALEAN的員工(之一種寫法)
select * from emp where job ‘MANAGER’ and job ‘SALEAN’;
19 .查詢job不等于MANAGER并且不能與SALEAN的員工(第二種寫法)
select * from emp where jobnot in(‘MANAGER’,’SALEAN’);
20.查詢以M開頭的所有員工
select * from emp where ename like ‘M %’;
21.查詢以T結(jié)尾的所有員工
select * from emp where ename like ‘%T’;
22.查詢以O(shè)結(jié)尾的所有員工
select * from emp where ename like ‘%O%’;
23.查詢姓名中之一個(gè)字符為A的所有員工
select * from emp where ename like ‘_A%’;
Like可以實(shí)現(xiàn)模糊查詢,like支持%和下劃線匹配
Like中%和下劃線的差別?
%匹配任意字符出現(xiàn)任意次數(shù)
下劃線只匹配一個(gè)任意字符出現(xiàn)一次
Like語句是可以應(yīng)用在數(shù)值類型的數(shù)據(jù)上的,但是如果沒有使用引號(hào)括起來的話,那么不能使用%和下劃線。類似于等號(hào)的操作,如果使用引號(hào)括起來的話,那么可以使用%和下劃線,將數(shù)值類型的數(shù)據(jù)轉(zhuǎn)換為字符類型后進(jìn)行處理。
24.按照薪水由小到大排序
s elect * from emporder by sal;
如果存在where子句那么order by必須放到where語句的后面
25.手動(dòng)指定按照薪水由小到大排序
select * from emp order by saldesc;
26. 按照薪水和姓名排序
select * from emp order by sal desc ,ename desc;
如果采用多個(gè)字段排序,如果根據(jù)之一個(gè)字段排序重復(fù)了,會(huì)根據(jù)第二個(gè)字段排序
select * from emp order by sal asc;
26.手動(dòng)指定按照薪水由大到小排序
select * from emporder by sal desc;
27.按照薪水升序(使用字段的位置來排序)
select * from emp order by 6;
不建議使用此種方式,采用數(shù)字含義不明確,程序不健壯
28.查詢員工.將員工姓名全部轉(zhuǎn)換成小寫。
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’;
方法的第二個(gè)參數(shù)表示的是查詢字符的位置,0,1都表示之一個(gè)字符,負(fù)數(shù)表示從結(jié)尾開始的位置,第三個(gè)參數(shù)表示截取字符串的長度。
31.取得員工姓名的長度
select length(ename) from emp;
32.取得工作崗位為MANAGER的所有員工
select * from emp where job=trim(‘MANAGER ‘);
trim會(huì)去首尾空格,不會(huì)去除中間的空格
33.查詢?nèi)肼毜膯T工(之一種方法,與數(shù)據(jù)庫的格式匹配上)
select * from emp where HIREDATE=’20-2月 -81′;
查詢?nèi)肼毜膯T工(第二種方法,將字符串轉(zhuǎn)換成date類型)
select * from emp where hiredate=to_date(‘:00:00’, ‘YYYY-MM-DD HH24:MI:SS’);
to_date可以將字符串轉(zhuǎn)換成日期,具體格式to_date(字符串,匹配格式)
34.查詢以后入職的員工,將入職日期格式為yyyy-mm-dd hh:mm:ss
select empno, ename,to_char(hiredate,’yyyy-mm-dd hh24:mi:ss’)from emp where hiredate>to_date(‘:00:00’, ‘YYYY-MM-DD HH24:MI:SS’);
35.查詢員工薪水加入前分位
select empno, ename, to_char(sal, ‘$999,999’) from emp;
36.查詢薪水加入千分位和保留兩位小數(shù)
select empno, ename, to_char(sal, ‘$999,999.00’) fromemp;
將數(shù)字轉(zhuǎn)換成字符串,格式
控制符
說明
表示一位數(shù)字
位數(shù)不夠可以補(bǔ)零
$
美元符
L
本地貨幣符號(hào)
.
顯示小數(shù)
,
顯示千分位
37.將字符串轉(zhuǎn)換成數(shù)值
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為SALEAN工資上漲50%(case … when … then …end)
select empno, ename, job, sal, (casejobwhen ‘MANAGER’ thensal*1.1when ‘SALEAN’ thensal*1.5end)as newsal from emp;
40.如果job為MANAGER薪水上漲10%,如果job為SALEAN工資上漲50%(decode)
select empno, ename, job, sal, decode(job,’MANAGER’, SAL*1.1, ‘SALEAN’,sal*1.5) as newsal from emp;
41.四舍五入
select round(.4567, 2) from dual;
Dual是oracle提供的,主要為了方便使用,因?yàn)閟elect的時(shí)候需要用from
42.聚合函數(shù)
count
取得記錄數(shù)
sum
求和
Avg
取平均
Max
取更大的數(shù)
min
取最小的數(shù)
43.取得所有員工人數(shù)
select count(*) from emp;
Count(*)表示取得所有記錄,忽略null,為null值也會(huì)取得
44.取得津貼不為null的員工數(shù)
select count(comm) from emp;
采用count(字段名稱),不會(huì)取得為null的紀(jì)錄
45.取得工作崗位的個(gè)數(shù)
select count(distinctjob) from emp;
Distinct可以去除重復(fù)的紀(jì)錄
46.取得薪水的合計(jì)
select sum(sal) from emp;
47取得薪水的合計(jì)(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.可以將這些聚合函數(shù)都放到select中一起使用
select count(*), sum(sal), avg(sal), max(sal),min(sal) from emp;
53.取得每個(gè)崗位的工資合計(jì),要求顯示崗位名稱和工資合計(jì)。
select job, sum(sal) from empgroupby job;
采用group by,非聚合函數(shù)所使用的字段必須參與分組,
Group by中不能使用聚合函數(shù)
如果使用了order by,order by必須放到group by后面
54。取得每個(gè)崗位的平均工資大于2023
select job, avg(sal) from emp group by job having avg(sal) >2023;
分組函數(shù)的執(zhí)行順序:
1、 根據(jù)條件查詢數(shù)據(jù)
2、 分組
3、 采用having過濾,取得正確的數(shù)據(jù)
55. 顯示每個(gè)員工信息,并顯示所屬的部門名稱
select ename ,dname from emp a ,dept b where a.deptno = b.deptno;
以上查詢也稱為“內(nèi)連接”,指查詢相等的數(shù)據(jù)
56.取得員工和所屬的經(jīng)理的姓名
select a.ename, b.ename from emp a, emp b wherea.mgr=b.empno;
以上稱為“自連接”,只有一張表連接,具體的查詢方法
57.(內(nèi)連接)顯示薪水大于2023的員工信息,并顯示所屬的部門名稱
SQL99語法:
select ename,sal,dname from emp a join dept b on a.deptno = b.deptno where sal>2023;
SQL92語法
select ename,sal,dname from emp a, dept b where a.deptno=b.deptno and sal > 2023;
Sql92語法和sql99語法的區(qū)別:99語法可以做到表的連接和查詢條件分離,特別是多個(gè)表進(jìn)行連接的時(shí)候,會(huì)比sql92更清晰
58.(外連接)顯示薪水大于2023的員工信息,并顯示所屬的部門名稱,如果某一個(gè)部門沒有員工。那么該部門也必須顯示出來
select dname,ename from emp a right join dept b on a.deptno = b.deptno;
59.查詢員工名稱和所屬經(jīng)歷的名稱,如果沒有上級(jí)經(jīng)理,也要查詢出來
Select e.ename, m.ename mname from emp e, emp mwhere m.empno(+) = e.mgr;
60.查詢員工信息,查詢哪些人是管理者,要求顯示出其員工編號(hào)和員工姓名
select ename,ename from emp where empno in (select distinct mgr from emp where mgr is not null);
61.查詢那些人的薪水高于員工的平均薪水,需要顯示員工編號(hào),員工姓名,薪水。
select empno, ename, sal from emp where sal>(selectavg(sal) from emp);
分析思路:首先根據(jù)文字描述找出被依賴的條件,逐次分析
62.查詢各個(gè)部門的平均薪水所屬的等級(jí),需要顯示部門編號(hào),平均薪水,等級(jí)編號(hào)
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;
關(guān)鍵點(diǎn):將子查詢看作一張表
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=’SALEAN’
65.minus可以移出(相減)
查詢部門編號(hào)為10和20的,取出薪水大于2023的。
select * from emp where deptno in(10, 20)
minus
select* from emp where sal>2023
66.rownum隱含字段
select rownum, a.* from emp a;
67.取得前5條數(shù)據(jù)
select * from emp where rownum
68.取得薪水更好的前5名
select empno, ename, sal from (select empno,ename, sal from emp order by sal desc)whererownum
關(guān)于oralce數(shù)據(jù)庫完整性的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站設(shè)計(jì)制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開發(fā)服務(wù),為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)站設(shè)計(jì)服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開發(fā),營銷網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。
標(biāo)題名稱:Oracle數(shù)據(jù)庫完整性:確保數(shù)據(jù)安全與可靠性 (oralce數(shù)據(jù)庫完整性)
網(wǎng)頁地址:http://www.5511xx.com/article/cosesod.html


咨詢
建站咨詢
