數(shù)據(jù)庫(kù)3

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)庫(kù)3

--當(dāng)要查詢的數(shù)據(jù)來(lái)自于不同的表,需要實(shí)現(xiàn) 多表聯(lián)查

--92語(yǔ)法? 99語(yǔ)法

--內(nèi)連接 :有where ,滿足條件才顯示,不滿足不顯示

--92語(yǔ)法 select 數(shù)據(jù) from 表1,表2,表3...;

--笛卡爾積? 對(duì)乘效果

select * from emp,dept;

--查詢所有員工的信息,以及所在的部門信息

--數(shù)據(jù): 員工信息? 部門信息

--來(lái)源: emp dept

--等值連接

select empno,ename,emp.deptno,dname from emp,dept where emp.deptno = dept.deptno;

--注意:當(dāng)使用同名字段時(shí)候,需要指明字段出處

--非等值連接

--查詢員工信息以及每個(gè)員工的薪資等級(jí)

select empno,ename,sal,grade from emp,salgrade where sal between losal and hisal;

--2500這個(gè)薪資在幾等級(jí)

select grade from salgrade where 2500 between losal and hisal;

select * from salgrade;

--自連接? 一張表拓售,當(dāng)多張表使用

--查詢有上級(jí)的員工的員工信息,以及這個(gè)員工的上級(jí)信息

--數(shù)據(jù):?jiǎn)T工信息 上級(jí)信息

--來(lái)源: 員工表 emp e1? 上級(jí)表 emp e2

select * from emp e1,emp e2 where e1.mgr = e2.empno;

--外連接

--左外連接|左連接? 右外連接|右連接 :主表在逗號(hào)的左邊叫做左連接,主表在逗號(hào)的右邊叫做右連接

--主表: 主表中的數(shù)據(jù)無(wú)論是否滿足連接條件都要顯示

--查詢所有員工信息,以及這個(gè)員工的上級(jí)信息

--員工表作為主表

select * from emp e2,emp e1 where e1.mgr = e2.empno(+);--右鏈接

select * from emp e1,emp e2 where e1.mgr = e2.empno(+);--左連接

select * from emp e1,emp e2 where e1.mgr = e2.empno(+) and e1.deptno in(10,20) order by e1.empno desc;

-- 找出30部門的員工名稱及部門名稱

select ename,dname from emp e,dept d where e.deptno? = d.deptno? and? e.deptno= 30;

-- 找出 所有部門的員工數(shù) 及部門名稱

--需求:所有部門都要,部門表中所有的數(shù)據(jù)都要? 部門表作為主表存在

select dname,count(empno) from emp e,dept d where e.deptno = d.deptno group by dname;

-- 找出所有有員工的部門名稱以及員工數(shù)

select dname,count(1) from emp e,dept d where e.deptno = d.deptno group by dname;

select dname,c 人數(shù) from dept d,(select deptno,count(1) c from emp group by deptno) e where d.deptno = e.deptno;

select * from emp,dept where emp.deptno(+) = dept.deptno;

--先把每一個(gè)部門的部門編號(hào)和部門人數(shù)求出來(lái)

select deptno,count(1) from emp group by deptno;

--上面這個(gè)結(jié)果集與部門表進(jìn)行連接

select dname,nvl(c,0) 人數(shù) from dept d,(select deptno,count(1) c from emp group by deptno) e where d.deptno = e.deptno(+);

--查詢員工信息 e1,部門信息 d,薪資等級(jí) s,上級(jí)信息 e2

select dname 部門名稱, e1.ename 員工名稱, grade 薪資等級(jí), e2.ename 上級(jí)名稱

? from emp e1, dept d, salgrade s, emp e2

where e1.deptno = d.deptno

? and e1.sal between losal and hisal

? and e1.mgr = e2.empno;

-- 非等值連接 > < != <>between and

--查詢員工姓名予弧,工資及等級(jí)

--900 屬于哪個(gè)等級(jí)

select ename,sal,grade from emp e ,salgrade s where sal between losal and hisal;

select grade from salgrade where 900 between losal and hisal;

-- 自連接: 特殊的等值連接 (來(lái)自于同一張表)

----找出 存在上級(jí)的員工姓名 及上級(jí)名稱

-- 數(shù)據(jù)來(lái)源: emp e, emp m

-- 字段: e.ename, m.ename

-- 條件: e.mgr=m.empno

select e.ename,m.ename from emp e, emp m where e.mgr = m.empno;

-- 外連接

--找出 所有部門的員工數(shù) 及部門名稱

select dname,nu from dept d,(select? count(1) nu,deptno from emp group by deptno ) e? where d.deptno(+) = e.deptno;


--99語(yǔ)法

--select 數(shù)據(jù) from 數(shù)據(jù)來(lái)源1 join 數(shù)據(jù)來(lái)源2;

--笛卡爾積? 對(duì)乘? cross join? --交叉連接

? --交叉連接 cross join --->笛卡爾積

? -- 自然連接(主外鍵闷袒、同名列) natural join -->等值連接

? -- join using連接(同名列) -->等值連接

?? --[inner]join on 連接 -->等值連接 非等值 自連接 (解決一切) 關(guān)系列必須區(qū)分

? --left|right [outer] join on|using -->外連接

?

? --full join on|using -->全連接 滿足直接匹配,不滿足 相互補(bǔ)充null ,確保 所有表的記錄 都至少出現(xiàn)一次

select * from emp,dept; --92

select * from emp e cross join dept d ; --99

select * from emp natural join dept; --自然連接

select empno,deptno from emp e natural join dept d;

--注意;如果使用相同名字段 不能指明出處

select empno,deptno from emp e join dept d using(deptno);--join..using

--注意;如果使用相同名字段 不能指明出處

--非等值連接

--A join B on 連接條件 join c on 連接條件 可以做等值連接 可以做非等值連接

select * from emp e join dept d on e.deptno = d.deptno where e.deptno =30;

--注意;如果使用相同名字段 不能指明出處

--查詢員工信息,薪資等級(jí)

select grade,count(empno)

? from emp e

? join salgrade s

? ? on e.sal between losal and hisal

? join dept d

? ? on e.deptno = d.deptno

? ? where e.deptno in(10,30) group by grade

? ? having grade != 1 order by grade;

--員工信息,上級(jí)信息

select * from emp e1 join emp e2 on e1.mgr = e2.empno;

--內(nèi)連接(inner)join

--外連接 left join 左連接? right join右鏈接? 全連接full join 兩邊的表都作為主表

--主表 主表在join的左邊勒极,叫做左連接 left join? 主表在join的右邊,叫做左連接 right join

select * from emp e1 left join emp e2 on e1.mgr = e2.empno;

--視圖

--視圖是虛擬表,操作視圖其實(shí)數(shù)據(jù)還是在對(duì)應(yīng)的表中,使用視圖最大的好處可以簡(jiǎn)化select語(yǔ)句代碼

--不是所有的賬號(hào)都有權(quán)限創(chuàng)建視圖

--需要授權(quán)? 1)切換到管理員賬號(hào)sys? 2) grant dba to 賬戶名;授權(quán)? 回收權(quán)限r(nóng)evoke dba from 賬號(hào)名;

--創(chuàng)建視圖

--create or replace view 視圖名 as select語(yǔ)句 [with read only];

--drop view 視圖名; 刪除視圖

--update 表名 set 字段=值 [,....] where 過(guò)濾行記錄;

--索引

--是數(shù)據(jù)庫(kù)的對(duì)象之一,是透明的,有沒(méi)有索引,sql都一樣

--大量的數(shù)據(jù)的查詢,如果數(shù)據(jù)量比較小,如果不是大量做查詢,二十大量的執(zhí)行增刪改的操作,反而會(huì)降低效率,因?yàn)樾枰S護(hù)索引

--字典的目錄

--create index 索引名 on表名 (字段列表...)

--drop index 索引名

--表設(shè)計(jì)

--三范式的規(guī)范

--表的名稱, 字段,類型,要求(約束)

--表和表之間的關(guān)系? 一對(duì)一? ? 一對(duì)多|多對(duì)一(主外鍵)? 多對(duì)多(中間表)

--創(chuàng)建表 和添加約束

--先創(chuàng)建表,后續(xù)為這個(gè)表的什么字段添加約束

--創(chuàng)建表的同時(shí)添加約束

? ? ? --創(chuàng)建表 字段后直接添加約束? 1)默認(rèn)的約束名? ? 2)指定約束名

? ? ? --? ? ? 字段定義完成之后,統(tǒng)一為不同的字段的添加約束


--DDL 定義語(yǔ)句? ? 創(chuàng)建表 create 刪除表drop? 修改alter

--創(chuàng)建表

--create table 表名(

? ? ? --字段名 類型? 約束,

? ? ? --字段名 類型? 約束,

? ? -- 字段名 類型 ,

? ? --約束;

? ? --約束....

--)

--追加約束

--當(dāng)有主從表關(guān)系的兩張表

--1.刪除表時(shí)候

? ? ? --1)默認(rèn)先刪除從表后刪除主表? ? ? ? ? ? 2)刪除主表并同時(shí)刪除主外鍵約束 cascade constraints


--2.刪除主表中的數(shù)據(jù)的時(shí)候,

? ? ? --這個(gè)主表數(shù)據(jù)如果沒(méi)有被從表中的數(shù)據(jù)引用,可以直接刪除

? ? ? --這個(gè)主表數(shù)據(jù)如果已經(jīng)被從表中的數(shù)據(jù)引用,需要處理

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --1)先刪除從表中引用了的數(shù)據(jù)? 再刪除主表的這個(gè)數(shù)據(jù)? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --2) 添加外鍵約束的時(shí)候 on delete set null,當(dāng)主表數(shù)據(jù)被刪除時(shí),從表引用這條數(shù)據(jù)的外鍵字段值為null? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --3) on delete cascade 刪除主表數(shù)據(jù)的時(shí)候級(jí)聯(lián)刪除從表中引用了的這些數(shù)據(jù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末虑鼎,一起剝皮案震驚了整個(gè)濱河市辱匿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌震叙,老刑警劉巖掀鹅,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異媒楼,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)戚丸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門划址,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人限府,你說(shuō)我怎么就攤上這事夺颤。” “怎么了胁勺?”我有些...
    開(kāi)封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵世澜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我署穗,道長(zhǎng)寥裂,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任案疲,我火速辦了婚禮封恰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘褐啡。我一直安慰自己诺舔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著低飒,像睡著了一般许昨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褥赊,一...
    開(kāi)封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天车要,我揣著相機(jī)與錄音,去河邊找鬼崭倘。 笑死翼岁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的司光。 我是一名探鬼主播琅坡,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼残家!你這毒婦竟也來(lái)了榆俺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坞淮,失蹤者是張志新(化名)和其女友劉穎茴晋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體回窘,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诺擅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啡直。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烁涌。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖酒觅,靈堂內(nèi)的尸體忽然破棺而出撮执,到底是詐尸還是另有隱情,我是刑警寧澤舷丹,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布抒钱,位于F島的核電站,受9級(jí)特大地震影響颜凯,放射性物質(zhì)發(fā)生泄漏谋币。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一装获、第九天 我趴在偏房一處隱蔽的房頂上張望瑞信。 院中可真熱鬧,春花似錦穴豫、人聲如沸凡简。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)秤涩。三九已至帜乞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筐眷,已是汗流浹背黎烈。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匀谣,地道東北人照棋。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像武翎,于是被迫代替她去往敵國(guó)和親烈炭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容