ÍÏÊÎ Ìåêîìï ïðè Ìèí÷åðìåòå
SQL * Plus ÑÏÐÀÂÎ×ÍÎÅ ÐÓÊÎÂÎÄÑÒÂÎ.
Âåðñèÿ 2.0
ÑÈÑÒÅÌÀ ÓÏÐÀÂËÅÍÈß ÐÅËßÖÈÎÍÍÎÉ
ÁÀÇÎÉ ÄÀÍÍÛÕ
ORACLE
-1-
© Copyright, 1986, 1987 Êîðïîðàöèÿ Oracle Áåëìîíò,
Êàëèôîðíèÿ, ÑØÀ.
Âñå ïðàâà ñîõðàíÿþòñÿ. Îòïå÷àòàíî â ÑØÀ.
Íîìåð ÷àñòè 3203.V2.0
Ðåâèçèÿ èþëÿ 1987ã.
Àâòîð : Äæîíàòàí Ñàêñ
Ñîàâòîðû: Ëýððè Áàåð, Äýððè Êýáñåíåë, Ëýððè Ñòèâåíñ
Àâòîðñêèå ïðàâà.
Èñïîëüçîâàíèå, êîïèðîâàíèå èëè èçëîæåíèå ïîä÷èíÿþòñÿ îãðà-
íè÷åíèÿì óêàçàííûì â âàøåì êîíòðàêòå ñ Êîðïîðàöèåé ORACLE.
Èñïîëüçîâàíèå, êîïèðîâàíèå èëè èçëîæåíèå ñî ñòîðîíû ïðàâè-
òåëüñòâà ïîä÷èíÿþòñÿ îãðàíè÷åíèÿì, óñòàíîâëåííûì â ïîäðàç-
äåëå (b)(3)(ii) ïóíêòà îá àâòîðñêèõ ïðàâàõ ïî "Òåõíè÷åñêèì
Äàííûì" è "Ïðîãðàììíîìó îáåñïå÷åíèþ" â äîêóìåíòå
CFR 252.227-7013.
Èíôîðìàöèÿ, ñîäåðæàùàÿñÿ â äàííîì äîêóìåíòå ìîæåò áûòü èç-
ìåíåíà áåç ïðåäóïðåæäåíèÿ.
ORACLE-çàðåãåñòðèðîâàííàÿ òîðãîâàÿ ìàðêà Êîðïîðàöèè ORACLE.
SQL * Plus - òîðãîâàÿ ìàðêà Êîðïîðàöèè ORACLE.
-2-
ÈÑÒÎÐÈß ÈÇÌÅÍÅÍÈß.
Âåðñèÿ Ñòàòóñ Èñòîðèÿ èçìåíåíèÿ Äàòà
----------------------------------------------------
2.0 Beta Ðåäàêöèÿ, ïðèâåäøàÿ 6/86
ê âåðñèè 2.0 SQL*Plus
è 5.1 ORACLE.
Äîáàâëåíî îïèñàíèå
SQL*Net (ñåòåâîé
âàðèàíò)
Ñïðàâî÷íîå ðóêîâîäñòâî
ïî SQL*Plus âûäåëåíî èç
ðóêîâîäñòâà ïî ïîëüçî-
âàíèþ è îïóáëèêîâàíî
îòäåëüíî.
2.0 Ïðîäóêöèÿ Ðåäàêöèÿ ñ öåëüþ óòî÷- 10/10/86
íåíèÿ è óëó÷øåíèÿ
âîñïðèÿòèÿ òåêñòà.
-3-
ÏÐÅÄÈÑËÎÂÈÅ.
ÖÅËÜ. Ñïðàâî÷íîå ðóêîâîäñòâî ïî SQL*Plus ñîäåðæèò
äåòàëüíîå îïèñàíèå ÿçûêà çàïðîñîâ SQL*Plus,
êîòîðûé ìîæåò áûòü èñïîëüçîâàí äëÿ ñîçäàíèÿ,
õðàíåíèÿ, ìîäèôèêàöèè, ïîèñêà, âûâîäà íà
ïå÷àòü è óïðàâëåíèÿ èíôîðìàöèåé â áàçå
äàííûõ ORACLE.
ÀÓÄÈÒÎÐÈß. Ýòî ðóêîâîäñòâî ïðåäíàçíà÷åíî äëÿ áèçíåñìå-
íîâ, òåõíè÷åñêèõ ñïåöèàëèñòîâ è ïðîãðàììèñ-
òîâ, æåëàþùèõ ðàáîòàòü ñ SQL*Plus. Îíî ïðåä-
ïîëàãàåò îïûò ðàáîòû ñ ÿçûêîì SQL*Plus.
×èòàòåëè íåçíàêîìûå ñ SQL*Plus, äîëæíû îáðà-
òèòüñÿ ê ðóêîâîäñòâó ïîëüçîâàòåëÿ
SQL*Plus äëÿ îçíàêîìëåíèÿ ñ ÿçûêîì.
ÊÀÊ ÈÑÏÎËÜÇÎÂÀÒÜ Ðóêîâîäñòâî äåëèòñÿ íà òðè ñåêöèè:
ÐÓÊÎÂÎÄÑÒÂÎ. * Ãëàâà 1, "Ýëåìåíòû SQL*Plus", îïèñûâàþùàÿ
êîíñòðóêöèè, òèïû äàííûõ, îïåðàòîðû, ôóíê-
öèè,ôîðìàòû è ôàéëû, ÷òî è ñîñòàâëÿåò ÿçûê
SQL*Plus.
* Ãëàâà 2. "Ñïðàâî÷íèê êîìàíä", ñîäåðæàùàÿ
ñïèñîê è îïèñàíèå âñåõ êîìàíä SQL è
SQL*Plus â àëôàâèòíîì ïîðÿäêå.
* Ñëîâàðü òåðìèíîâ, êîòîðûé îïèñûâàåò òåðìè-
íû, ñâÿçàííûå ñ ORACLE è SQL*Plus.
ÏÓÁËÈÊÀÖÈÈ, Ñ äàííûì ðóêîâîäñòâîì ñâÿçàíû ñëåäóþùèå äî-
ÑÂßÇÀÍÍÛÅ Ñ êóìåíòû:
ÄÀÍÍÛÌ * SQL*Plus. Çàìå÷àíèÿ ïî ðåàëèçàöèè.
ÄÎÊÓÌÅÍÒÎÌ ORACLE ÷àñòü N 3003.
* SQL*Plus. Ðóêîâîäñòâî ïîëüçîâàòåëÿ.
ORACLE ÷àñòü N 3201.
* SQL*Plus. Ñïðàâî÷íîå ðóêîâîäñòâî(äàííîå
ðóêîâîäñòâî), ORACLE ÷àñòü N 3203.
* SQL*Plus. Ñïðàâî÷íèê ïóáëèêàöèé.
ORACLE ÷àñòü N 3703.
Ê SQL* Graph îòíîñÿòñÿ ñëåäóþùèå äîêóìåíòû:
* SQL* Graph. Çàìåòêè ïî ðåàëèçàöèè.
ORACLE ÷àñòü N 3006.
* SQL* Graph. Ðóêîâîäñòâî ïî ïîëüçîâàíèþ.
ORACLE ÷àñòü N 3402.
* SQL* Graph. Ñïðàâî÷íèê ïóáëèêàöèé.
-4-
Äîêóìåíòû, îòíîñÿùèåñÿ ê ñèñòåìå óïðàâëåíèÿ
ðåëÿöèîííîé áàçîé äàííûõ:
* ORACLE RDBMS. Çàìå÷àíèÿ ïî ðåàëèçàöèè.
ORACLE ÷àñòü N 3001.
* ORACLE. Ðóêîâîäñòâî àäìèíèñòðàòîðà áàçû
äàííûõ. ORACLE ÷àñòü N 3601.
* ORACLE óòèëèòû. Ðóêîâîäñòâî ïîëüçîâàòåëÿ.
ORACLE ÷àñòü N 3602.
* ORACLE.Êîäû îøèáîê è ñîîáùåíèÿ îá îøèáêàõ.
ORACLE ÷àñòü N 3605.
* SQL*NET. Ðóêîâîäñòâî ïîëüçîâàòåëÿ.
ORACLE ÷àñòü N 3604.
* SQL*NET. Çàìå÷àíèÿ ïî ðåàëèçàöèè.
ORACLE÷àñòü N 3016.
ÑÎÃËÀØÅÍÈß, Òàáëèöà 1 îïèñûâàåò ñîãëàøåíèÿ ïî îáîçíà÷å-
ÈÑÏÎËÜÇÓÅÌÛÅ íèÿì, èñïîëüçóåìûì â ýòîì ðóêîâîäñòâå, ñ
 ÄÀÍÍÎÌ ïðèìåðàìè ïî êàæäîìó îáîçíà÷åíèþ.
ÐÓÊÎÂÎÄÑÒÂÅ
ÂÀØÈ ÇÀÌÅ×ÀÍÈß Îòäåëåíèå òåõíè÷åñêèõ ïóáëèêàöèé êîðïîðàöèè
ÏÐÈÂÅÒÑÒÂÓÞÒÑß ORACLE ïðèâåòñòâóåò âàøè çàìå÷àíèÿ ïî èñïî-
ëüçîâàíèþ ORACLE è ñîîòâåòñòâóþùèõ ðóêî-
âîäñòâ. Ïðè ñîçäàíèè , ïåðåñìîòðå è îöåíêå
íàøèõ ïóáëèêàöèé,âàøå ìíåíèå - ýòî íàèáîëåå
âàæíàÿ ÷àñòü èíôîðìàöèè, ïîëó÷àåìîé èçâíå.
 êîíöå ýòîãî ðóêîâîäñòâà ïðèëàãàåòñÿ "Ôîðìà
÷èòàòåëüñêîãî îòçûâà", êîòîðóþ ìû ïðèçûâàåì
âàñ èñïîëüçîâàòü, ÷òîáû ñîîáùèòü íàì,÷òî íåò
â ýòîì (èëè äðóãèõ) ðóêîâîäñòâå ïî ORACLE.
Åñëè ôîðìà îòñóòñòâóåò èëè âû ïîæåëàåòå
âñòóïèòü ñ íàìè â ïðÿìîé êîíòàêò,ïîæàëóéñòà,
çâîíèòå ïî òåëåôîíó (415)598-8000 èëè ïèøèòå
ïî àäðåñó:
SQL*Plus Product Manager
ORACLE Corporation
20 Davis Drive
Belmout, CA 94002
-5-
Òàáëèöà 1.
Ñîãëàøåíèÿ ïî îáîçíà÷åíèÿì,
èñïîëüçóåìûì â äàííîì ðóêîâîäñòâå.
Ñðåäñòâî Ïðèìåð Îáúÿñíåíèå
------------------------------------------------------
Ïîëóæèðíûé 1. BTITLE Ââîäèòå òåêñò òî÷íî òàê
øðèôò êàê ïîêàçàíî çäåñü(íå îáÿ-
çàòåëüíî áîëüøèìè áóêâàìè,
îíè âûáðàíû â êà÷åñòâå
ïðèìåðà).
2. [COL{1|n}] Óêàçûâàåò íà çíà÷åíèå ïî
óìîë÷àíèþ. Åñëè âû íè÷åãî
íå ââîäèòå, òî ORACLE
ïðåäïîëàãàåò ýòó âåëè÷èíó.
Êàâû÷êè "ñòîëáåö" Çíà÷åíèå ôðàçû (ïðåäëîæå-
íèÿ) èëè ïàðàìåòð. Ïîäìå-
íÿåòñÿ ñîîòâåòñòâóþùèì
çíà÷åíèåì.
Ñëîâà ñ Îäèíî÷íûé àëôàâèòíî-öèôðî-
ñî âîé ñèìâîë
ñïåöèàëüíûì "ñèìâîë" Ñèìâîëüíîå çíà÷åíèå:
çíà÷åíèÿì ëèòåðàë â îäèíî÷íûõ êàâû÷-
êàõ èëè âûðàæåíèå, èìåþùåå
çíà÷åíèå.
d èëè e Âûðàæåíèå, çíà÷åíèå êîòî-
ðîãî ÿâëÿåòñÿ äàòîé.
"âûðàæåíèå" Âûðàæåíèå íåîïðåäåëåííîãî
òèïà.
m èëè n Âûðàæåíèå ñ ÷èñëåííûì
çíà÷åíèåì.
"÷èñëî" ×èñëåííàÿ êîíñòàíòà.
"èñõ_äàíí" Âûðàæåíèå, èìåþùåå èñõîä-
íîå, íåîáðàáîòàííîå çíà÷å-
íèå.
"èäåíò_ñòð" Âûðàæåíèå, èìåþùåå çíà÷å-
íèå èäåíòèôèêàòîðà ñòðîêè.
"ñîñò_óñëîâ" Âûðàæåíèå, ñîäåðæàùåå çàï-
ðîñ,íàïð.,JOB IN(SELECT...)
"çàïðîñ" Âûðàæåíèå çàïðîñà â êîìàí-
äå, îòëè÷íîé îò SELECT,
íàïð., CREATE TABLE...AS
SELECT...
Ìîæåò ñîäåðæàòü ëþáîå ïðåä-
ëîæåíèå SELECT, èñêëþ÷àÿ
ORDER BY èëè FOR UPDATE OF.
"òåêñò" Ñèìâîëüíàÿ êîíñòàíòà ñ
îäèíî÷íûìè êàâû÷êàìè (èëè
áåç)ïåðåä òåêñòîì è ïîñëå.
"ïåðåìåííàÿ" Ïåðåìåííàÿ ïîëüçîâàòåëÿ(äî
òåõ, ïîð ïîêà â òåêñòå íå
âñòðåòèòñÿ äðóãîãî îïðåäå-
ëåíèÿ(òèïà) äëÿ ýòîé ïåðå-
ìåííîé).
-6-
Äðóãèå òåðìèíû ORACLE îáúÿñíÿþòñÿ ïðè
èñïîëüçîâàíèè, åñëè èõ çíà÷åíèå íåïî-
íÿòíî èç êîíòåêñòà.
Êâàäðàòíûå [NOPRINT] Íåîáÿçàòåëüíûé ýëåìåíò.
ñêîáêè Ñàìè ïî ñåáå ñêîáêè íå
ââîäÿòñÿ.
Ôèãóðíûå {ON; OFF} Âû äîëæíû ââîäèòü îäèí èç
ñêîáêè ýëåìåíòîâ,ðàçäåëåííûõ çíà-
êîì":". Íå ââîäèòå ïðè
ýòîì ôèãóðíûå ñêîáêè èëè
çíàê":".
Òðè òî÷êè n,n,... Ýëåìåíò(û) ïðåäøåñòâóþùèå
(å) òðåì òî÷êàì ìîãóò ïîâ-
òîðÿòüñÿ ëþáîå ÷èñëî ðàç.
Êðóãëûå POWER(n,m) Ñêîáêè è çàïÿòûå äîëæíû
ñêîáêè ââîäèòñÿ
òî÷íî,êàê ïîêàçà-
íî.
-7-
ÏÐÅÄÈÑËÎÂÈÅ ÏÅÐÅÂÎÄ×ÈÊÎÂ.
Ñèñòåìû óïðàâëåíèÿ áàçàìè äàííûõ íà áàçå ïåðñîíàëüíûõ êîì-
ïüþòåðîâ è, â ÷àñòíîñòè, ÑÓÁÄ ORACLE äëÿ ìèêðî- è ìèíè-ÝÂÌ
óæå äîñòàòî÷íî øèðîêî èçâåñòíû â Ñîâåòñêîì Ñîþçå. Îäíàêî, â
íàñòîÿùåå âðåìÿ íå ñóùåñòâóåò óñòîÿâøåéñÿ òåðìèíîëîãèè äëÿ
îïèñàíèÿ òàêèõ ÑÓÁÄ.Ïîýòîìó ïðè ïåðåâîäå äàííîãî ðóêîâîäñòâà
òåðìèíîëîãèÿ ïðåäñòàâëÿëà îñîáóþ òðóäíîñòü,â ðåçóëüòàòå ÷å-
ãî ïîìèìî îáùåèçâåñòíûõ òåðìèíîâ â ðÿäå ñëó÷àåâ ãðóïïà ïå-
ðåâîä÷èêîâ ââåëà äîïîëíèòåëüíûå ïîíÿòèÿ äëÿ ñëîâ,íå èìåþùèõ
ñîîòâåòñâóþùèõ àíàëîãîâ â ðóññêîì ÿçûêå.
Ïðè ðàáîòå ñ îðèãèíàëîì èñïîëüçîâàëèñü:
* Àíãëî-ðóññêèé ñëîâàðü ïî èíôîðìàòèêå è âû÷èñëèòåëü-
íîé òåõíèêå ïîä ðåä. Áîðêîâñêîãî (1988);
* Áîëüøîé àíãëî-ðóññêèé ñëîâàðü (1987 ã.);
* Ðóññêî-àíãëèééñêèé ñëîâàðü (1987 ã.);
* Êðàòêèé àíãëî-ðóñêèé è ðóññêî-àíãëèééñêèé ñëîâàðü
(1985 ã.);
* Ïåðåâîäíûå èçäàíèÿ ïî îïåðàöèîííîé ñèñòåìå UNIX,ÑÓÁÄ
DBASE 3 PLUS, RBASE, ÊÀÐÑ è äð.
Ìû ïðåäïîëàãàåì,÷òî â äàííîì ïåðåâîäå áûëî äîñòèãíóòî ñòðåì-
ëåíèå íàèáîëåå ïîëíî è äîñòóïíî îòðàçèòü àâòîðñêèé òåêñò. Â
òî æå âðåìÿ íå ãàðàíòèðóåòñÿ îòñóòñòâèå îøèáîê êàê â èñõîä-
íîì òåêñòå, òàê è â ïåðåâîäå.
Ïåðåâîä: Ñòàðûé Îñêîë, ÎÝÌÊ
-8-
ÑÎÄÅÐÆÀÍÈÅ.
===============================================================
ÃËÀÂÀ 1: ÝËÅÌÅÍÒÛ SQL*Plus..........................11
Ââåäåíèå................................12
Ïðàâèëà ôîðìèðîâàíèÿ èìåí...............13
Èìåíà ôàéëîâ............................13
Ðåçåðâèðîâàííûå ñëîâà...................14
Òèïû äàííûõ.............................15
Ìîäåëè ôîðìàòà..........................19
Îïåðàòîðû...............................24
Ôóíêöèè.................................30
Ïñåâäî-ñòîëáöû..........................37
Îáçîð ñëîâàðÿ äàííûõ....................38
Âàæíûå ôðàçû è ïîíÿòèÿ..................44
ÃËÀÂÀ 2: ÑÏÐÀÂÎ×ÍÈÊ ÊÎÌÀÍÄ..........................54
Ââåäåíèå................................57
SQL* - êîìàíäû,êðàòêîå îïèñàíèå.........58
SQL*Plus - êîìàíäû, êðàòêîå îïèñàíèå....60
@.......................................63
#.......................................64
/ ......................................66
/*...*/.................................67
Alter Partition (Èçìåíèòü ðàçäåë).......68
Alter Space (Èçìåíèòü ïðîñòðàíñòâî).....69
Alter Table (Èçìåíèòü òàáëèöó)..........70
Accept (Ïðèíÿòü)........................71
Append (Äîáàâèòü).......................72
Audit (Ñëåæåíèå)........................73
Break (Ïðåðâàòü)........................75
BTitle (Çàãîëîâîê âíèçó)................77
Change (Èçìåíèòü).......................79
Clear (Î÷èñòèòü)........................80
Column (Ñòîëáåö)........................81
Comment (Êîììåíòàðèé)...................86
Commit (Âíåñòè èçìåíåíèÿ)...............87
Compute (Âû÷èñëèòü).....................88
Connect (Ñîåäèíèòü).....................90
Copy (Êîïèðîâàòü).......................91
-9-
Create Cluster (Ñîçäàòü êëàñòåð)........93
Create Database Link (Ñîçäàòü ñâÿçü
.....................ñ áàçîé äàííûõ)....95
Create Index (Ñîçäàòü èíäåêñ)...........97
Create Partition (Ñîçäàòü ðàçäåë).......99
Create Space (Ñîçäàòü ïðîñòðàíñòâî).....100
Create Synonym (Ñîçäàòü ñèíîíèì)........101
Create Table (Ñîçäàòü òàáëèöó)..........102
Create View (Ñîçäàòü ýêðàííóþ ôîðìó)....104
Define (Îïðåäåëèòü).....................106
Del (óäàëèòü èç áóôåðà).................108
Delete (Óäàëèòü èç òàáëèöû).............109
Describe (Îïèñàòü)......................110
Disconnect (Ðàçúåäèíèòü)................111
Document (Äîêóìåíò).....................112
Drop Cluster (Óäàëèòü êëàñòåð)..........113
Drop Database Link (Îòìåíèòü ñâÿçü
....................ñ áàçîé äàííûõ).....114
Drop Index (Óäàëèòü èíäåêñ).............115
Drop Space (Óäàëèòü ïðîñòðàíñòâî).......116
Drop Synonym (Óäàëèòü ñèíîíèì)..........117
Drop Table (Óäàëèòü òàáëèöó)............118
Drop View (Óäàëèòü ýêðàííóþ ôîðìó)......119
Edit (Ðåäàêòèðîâàíèå)...................120
Exit (Âûõîä)............................121
Get (Ïðî÷èòàòü â áóôåð).................122
Grant (Ïðåäîñòàâèòü)....................123
Help (Ïîëó÷åíèå âñïîìîãàòåëüíîé
......èíôîðìàöèè).......................125
Host (Âûïîëíåíèå êîìàíä îïåðàöèîííîé
......ñèñòåìû)..........................127
Input (Ââåñòè)..........................128
Insert (Âñòàâèòü).......................130
List (Âûâåñòè ñïèñîê)...................131
Lock Table (Áëîêèðîâàòü òàáëèöó)........132
New Page (Íîâàÿ ñòðàíèöà)...............133
Noaudit (Îòìåíèòü ñëåæåíèå).............134
Pause (Ïàóçà)...........................135
Quit (Çàâåðøåíèå ðàáîòû)................136
-10-
Remark (Ïðèìå÷àíèå).....................137
Rename (Ïåðåèìåíîâàíèå).................138
Revoke (Îòìåíà ïðèâèëåãèé)..............139
Rollback (Îòìåíèòü âíåñåíèå èçìåíåíèé)..141
Save (Ñîõðàíèòü)........................142
Select (Âûáîð)..........................143
Set (Óñòàíîâèòü)........................146
Show (Ïîêàçàòü).........................155
Spool (Áóôåðèçàöèÿ ââîäà/âûâîäà)........157
SQLPlus.................................158
Start (Çàïóñê êîìàíäíîãî ôàéëà).........160
Timing (Õðîíîìåòðàæ)....................161
TTile (Çàãîëîâîê â âåðõó)...............162
Undefine (Îòìåíèòü îïðåäåëåíèå).........163
Update (Êîððåêòèðîâêà).................164
Validate Index (Ïðîâåðèòü èíäåêñ).......166
-11-
ÃËÀÂÀ 1 ÝËÅÌÅÍÒÛ SQL*PLus
-------------------------------------------------------------
ÑÎÄÅÐÆÀÍÈÅ ÂÂÅÄÅÍÈÅ................................12
ÏÐÀÂÈËÀ ÏÐÈÑÂÎÅÍÈß ÈÌÅÍ.................13
ÈÌÅÍÀ ÔÀÉËÎÂ............................13
ÐÅÇÅÐÂÈÐÎÂÀÍÍÛÅ ÑËÎÂÀ...................14
ÒÈÏÛ ÄÀÍÍÛÕ.............................15
Ïðàâèëà ñðàâíåíèÿ....................17
ÌÎÄÅËÈ ÔÎÐÌÀÒÎÂ.........................19
Ñèìâîëüíûé ôîðìàò....................19
×èñëîâîé ôîðìàò......................19
Ôîðìàò äàòû..........................21
ÎÏÅÐÀÒÎÐÛ...............................24
SQL*Plus-ñèíòàêñè÷åñêèå îïåðàòîðû....24
SQL-ñèíòàêñè÷åñêèå îïåðàòîðû.........25
SQL-÷èñëîâûå îïåðàòîðû...............26
SQL-ëîãè÷åñêèå îïåðàòîðû.............26
SQL-îïåðàòîðû âûðàæåíèé çàïðîñà......28
Äðóãèå SQL-îïåðàòîðû.................28
ÔÓÍÊÖÈÈ.................................30
×èñëîâûå ôóíêöèè.....................30
Ñèìâîëüíûå ôóíêöèè...................31
Ãðóïïîâûå ôóíêöèè....................33
Ôóíêöèè ïðåîáðàçîâàíèé...............34
Ôóíêöèè äàò..........................35
Äðóãèå ôóíêöèè.......................36
ÏÑÅÂÄÎ-ÑÒÎËÁÖÛ..........................37
ÎÁÇÎÐÛ ÑËÎÂÀÐß ÄÀÍÍÛÕ...................38
ÏÀÐÀÌÅÒÐÛ È ÏÎÄÑÒÀÂËßÅÌÛÅ ÏÅÐÅÌÅÍÍÛÅ....41
Ïîäñòàâëÿåìûå ïåðåìåííûå.............41
Îäèíî÷íûå è äâîéíûå àìïåðñàíäû(&)....42
Îãðàíè÷åíèÿ..........................43
SET-ôðàçà, âëèÿþùàÿ íà ïîäñòàâëÿåìûå
ïåðåìåííûå...........................43
ÂÀÆÍÛÅ ÔÐÀÇÛ È ÏÎÍßÒÈß..................44
DUMMY Table (Ïóñòàÿ òàáëèöà).........44
FROM-ïðåäëîæåíèå.....................45
Ôðàçû GROUP BY è HAVING ("Ñãðóïïè-
ðîâàòü è "Íàëîæèòü äîïîëíèòåëüíûå
...............óñëîâèÿ").............46
Ñîåäèíåíèÿ â Queries (Ñîåäèíåíèÿ â
......................çàïðîñàõ)......47
Îïåðàòîð LIKE (Ñðàâíåíèå)............48
NULL-çíà÷åíèÿ (ïóñòûå çíà÷åíèÿ)......49
Ôðàçà ORDER BY.......................50
Ïîäçàïðîñû è âëîæåííûå çàïðîñû.......51
Ôðàçà WHERE ("Ãäå")..................53
-12-
ÂÂÅÄÅÍÈÅ
----------------------------------------------------------------
Äàííàÿ ãëàâà ñîäåðæèò ñïðàâî÷íóþ èíôîðìàöèþ îáî âñåõ àñïåê-
òàõ SQL*PLUS, çà èñêëþ÷åíèåì èíäèâèäóàëüíûõ êîìàíä. Îíà
îõâàòûâàåò:
* Ïðàâèëà íàèìåíîâàíèÿ
* Èìåíà ôàéëîâ
* Ðåçåðâèðîâàííûå ñëîâà
* Òèïû äàííûõ
* Ìîäåëè ôîðìàòîâ
* Îïåðàòîðû
* Ôóíêöèè
* Ïñåâäî-ñòîëáöû
* Îáçîðû ñëîâàðÿ äàííûõ
* Ïàðàìåòðû è ïîäñòàâëÿåìûå çíà÷åíèÿ
* Âàæíûå ôðàçû è ñâÿçàííûå ñ íèìè ïîíÿòèÿ.
Ñîáñòâåííî êîìàíäû îïèñàíû â ãëàâå 2.
-13-
ÏÐÀÂÈËÀ ÔÎÐÌÈÐÎÂÀÍÈß ÈÌÅÍ
Èìåíà ìîãóò áûòü äàíû ñëåäóþùèì îáúåêòàì áàçû äàííûõ:
òàáëèöàì, ýêðàííûì ôîðìàì, ñèíîíèìàì, ñòîëáöàì, èíäåêñàì,
è ïåðåìåííûì ïîëüçîâàòåëÿ.
Èìÿ îáúåêòà áàçû äàííûõ ìîæåò ñîäåðæàòü îò 1 äî 30 ñèìâî-
ëîâ è íå ìîæåò ñîäåðæàòü êàâû÷åê.
Ïðè èñïîëüçîâàíèè â êîìàíäå âåðõíèé è íèæíèé ðåãèñòðû íå
ðàçëè÷àþòñÿ. Èìÿ äîëæíî:
* íà÷èíàòüñÿ ñ áóêâû
* ñîäåðæàòü òîëüêî çíàêè A-Z, 0-9, -, $ è #.
(Èñïîëüçîâàíèå "$" è "#" íå ðåêîìåíäóåòñÿ)
* íå äóáëèðîâàòü ðåçåðâèðîâàííûå ñëîâà
ORACLE (ñì. íèæå)
* íå äóáëèðîâàòü èìÿ îáúåêòà(áàçû äàííûõ) òîãî æå òèïà
ÈÌÅÍÀ ÔÀÉËÎÂ
Ôàéëû çàïðîñîâ è òåêñòîâûå (ñïóë) ôàéëû ÿâëÿþòñÿ ôàéëàìè
îïåðàöèîííîé ñèñòåìû. Êàæäûé ôàéë èìååò èìÿ è òèï; òèï
îïèñûâàåò âèä ñîäåðæèìîãî ôàéëà. Ðàçëè÷íûå ôàéëû ìîãóò
èìåòü îäèíàêîâûå èìåíà, íî ðàçëè÷íûå òèïû.
Èñïîëüçóéòå êîìàíäû îïåðàöèîííîé ñèñòåìû äëÿ ðàñïå÷àòêè
èìåí è òèïîâ âàøèõ ôàéëîâ.
Òèï ôàéëà óêàçûâàåòñÿ ðàñøèðåíèåì(èìåíè),êîòîðîå ñëåäóåò çà
òî÷êîé ïîñëå èìåíè. Òèïû ôàéëîâ,êîòîðûå ïðèíÿòû â SQL*Plus,
ïî óìîë÷àíèþ ñëåäóþùèå:
Òèï ôàéëà Ðàñøèðåíèå Ïðèìåð
-----------------------------------------------------------
Ôàéë çàïðîñà .SQL EMPLOYEE.SQL
Ñïèñîê(ñïóë) ñèñòåìíî-çàâèñèìî REPORT.LST
-14-
ÐÅÇÅÐÂÈÐÎÂÀÍÍÛÅ ÑËÎÂÀ¶
----------------------------------------------------------------
Ñëåäóþùèå ñëîâà ðåçåðâèðîâàíû â SQL*Plus. Âû íå ìîæåòå èõ
èñïîëüçîâàòü â êà÷åñòâå èìåí îáúåêòîâ áàçû äàííûõ.
ACCESS DELETE INTEGER ORDER TO
ADD DESC INTERSECT PARTITION TRIGGER
ALL DISTINCT INTO PCTFREE UID
ALTER DOES IS PRIOR UNION
AND DROP LEVEL PRIVILEGES UNIQUE
ANY EACH LIKE PUBLIC UPDATE
APPEND ELSE LIST RAW USER
AS ERASE LOCK RENAME USING
ASC EVALUATE LONG REPLACE VALIDATE
ASSERT EXCLUSIVE MAXEXTENTS RESOURCE VALUES
ASSIGN EXISTS MINUS REVOKE VARCHAR
AUDIT FILE MODE ROW VARGRAPHIC
BETWEEN FLOAT MODIFY ROWID VIEW
BY FOR MOVE ROWNUM WHENEVER
CHAR FORMAT NEW ROWS WHERE
CLUSTER FROM NOAUDIT RUN WITH
COLUMN GRANT NOCOMPRESS SELECT
COMMENT GRAPHIC NOLIST SESSION
COMPRESS GROUP NOSYSSORT SET
CONNECT HAVING NOT SHARE
CONTAIN IDENTIFIED NOWAIT SIZE
CONTAINS IF NULL SMALLINT
CRASH IMAGE NUMBER SPACE
CREATE IMMEDIATE OF START
CURRENT IN OFFLINE SUCCESSFUL
DATAPAGES INCREMENT OLD SYNONYM
DATE INDEX ON SYSDATE
DBA INDEXED ONLINE SYSSORT
DECIMAL INDEXPAGES OPTIMIZE TABLE
DEFAULT INITIAL OPTION TEMPORARY
DEFINITION INSERT OR THEN
-15-
ÒÈÏÛ ÄÀÍÍÛÕ
----------------------------------------------------------------
Êîãäà âû ñîçäàåòå òàáëèöó, âû äîëæíû îïðåäåëèòü òèï, êîòî-
ðûé ìîæíî ïðèìåíÿòü â êàæäîì ñòîëáöå. SQL*Plus ðàñïîçíàåò
ñëåäóþùèå òèïû äàííûõ:
Êàê îïðåäåëÿåòñÿ
â CREATE TABLE
Òèï äàííûõ èëè ALTER TABLE Ïðèëîæåíèå
-----------------------------------------------------------
Char CHAR(ðàçìåð) Ñèìâîëüíûå äàííûå ñ
(ñèìâîëüíûå óêàçàííîé(ðàçìåð)
äàííûå) äëèíîé.
Ìàêñèìàëüíûé ðàçìåð 240
VARCHAR(ðàçìåð) Òî æå, ÷òî è CHAR
Date(äàòà) DATE Êîððåêòíàÿ äàòà, íà÷èíàÿ
ñ 1-ãî ÿíâàðÿ, 4712 (äî
í.ý.) äî 31-ãî äåêàáðÿ,
4712 (í.ý.).
Long LONG Ñèìâîëüíûå äàííûå, ïåðå-
("äëèííûå" ìåííîé äëèíû äî 65535
ñèìâîëüíûå çíàêîâ.Òîëüêî îäèí ñòîëáåö
äàííûå) òèïà LONG ìîæåò áûòü îïðå-
äåëåí â òàáëèöå. Òàêèå
ñòîëáöû íå ìîãóò áûòü èñ-
ïîëüçîâàíû â ïîäçàïðîñàõ,
ôóíêöèÿõ, âûðàæåíèÿõ, ïðå-
äëîæåíèÿõ WHERE èëè èíäåê-
ñàõ. Òàáëèöà, ñîäåðæàùàÿ
ñòîëáåö òèïà LONG, íå ìî-
æåò áûòü âêëþ÷åíà â êëàñ-
òåð.
LONG VARCHAR Òî æå, ÷òî è LONG.
Number(÷èñëî) NUMBER Äëÿ ÷èñëîâîé êîëîíêè íà 40
öèôð, èñêëþ÷àÿ äåñÿòè÷íóþ
òî÷êó è çíàê. ×èñëà ìîãóò
áûòü çàïèñàíû äâóìÿ ñïîñî-
áàìè:ïåðâûé, öèôðû'0'-'9',
çíàê è äåñÿòè÷íàÿ òî÷êà
('.'), âòîðîé, ýêñïîíåí-
öèàëüíûé ôîðìàò, íàïð.,
"1.85Å3",÷òî îçíà÷àåò 1850.
NUMBER(ðàçìåð) Äëÿ ÷èñëîâûõ êîëîíîê îïðå-
äåëåííîãî ðàçìåðà.
Ìàêñèìàëüíûé ðàçìåð -105
öèôð.
-16-
NUMBER(ðàçìåð, Äëÿ ÷èñëîâûõ êîëîíîê îïðå-
êîëè÷åñòâî) äåëåííîãî ðàçìåðà ñ óêà-
çàííûì êîëè÷åñòâîì öèôð
ïîñëå äåñÿòè÷íîé òî÷êè,
ìàêñèìàëüíîå êîëè÷åñòâî
ýòèõ öèôð - 42.
NUMBER(*) Òî æå, ÷òî è NUMBER.
DECIMAL Òî æå, ÷òî è NUMBER. Áåç
óêàçàíèÿ ðàçìåðà è êîëè÷å-
ñòâà öèôð ïîñëå äåñÿòè÷íîé
òî÷êè.
FLOAT Òî æå, ÷òî è NUMBER.
INTEGER Òî æå, ÷òî è NUMBER. Áåç
óêàçàíèÿ ðàçìåðà è êîëè-
÷åñòâà öèôð ïîñëå äåñÿ-
òè÷íîé òî÷êè.
SMALLINT Òî æå, ÷òî è INTEGER.
Raw(èñõîäíûå RAW(ðàçìåð) Èñõîäíûå äâîè÷íûå äàííûå,
ñ óêàçàííûì â áàéòàõ ðàç-
äàííûå) ìåðîì.
Ìàêñèìàëüíûé ðàçìåð-240
áàéòîâ.
Long Raw LONG RAW Èñõîäíûå äâîè÷íûå äàííûå;
("äëèííûå" â îñòàëüíîì òàê æå êàê
èñõîäíûå äàííûå) LONG.
RowID (èäåíòèôè- (îòñóòñòâóåò) Çíà÷åíèå,êîòîðîå îäíîçíà÷-
êàòîð ñòðîêè) íî îïðåäåëÿåò ñòðîêó â òà-
áëèöå. Îíî âîçâðàùàåòñÿ ñ
ïîìîùüþ ïñåâäîêîëîíêè ROWID
è îáðàáàòûâàåòñÿ ôóíêöèåé
CHARTOROWID è ROWIDTOCHAR.
Êîëîíêàì òàáëèöû íàçíà÷åí
ýòîò òèï.
-17-
ÏÐÀÂÈËÀ ÑÐÀÂÍÅÍÈß
---------------------------------------------------------------
×èñëîâûå çíà÷åíèÿ: áîëüøàÿ âåëè÷èíà ðàññìàòðèâàåòñÿ " áîëü-
øå" ("greater") ìåíüøåé. Âñå îòðèöàòåëüíûå ÷èñëà ìåíüøå,÷åì
ïîëîæèòåëüíûå. Òàêèì îáðàçîì, -1 ìåíüøå ÷åì 100; -100 ìåíü-
øå ÷åì -1.
Äàòû: áîëåå ïîçäíÿÿ äàòà ñ÷èòàåòñÿ "áîëüøå"("greater") ðàí-
íåé.
Ñèìâîëüíûå çíà÷åíèÿ: âåëè÷èíû ñðàâíèâàþòñÿ çíàê çà çíàêîì
äî ïåðâîãî íåñîâïàäàþùåãî. Âåëè÷èíà ó êîòîðîé ýòîò çíàê
"áîëüøå" ñ÷èòàåòñÿ áîëüøåé. Åñëè âåëè÷èíû ñîâïàäàþò ïî çíà-
êàì äî êîíöà áîëåå êîðîòêîé, òî áîëåå äëèííàÿ ñ÷èòàåòñÿ
áîëüøåé. Äâå ñîâïàäàþùèå âåëè÷èíû îäèíàêîâîé äëèíû ñ÷èòàþò-
ñÿ ðàâíûìè.
Ñèìâîëüíûå çíàêè ñðàâíèâàþòñÿ ñîãëàñíî òîìó îòíîøåíèþ ïî-
ðÿäêà, êîòîðûé çàäàí íà âàøåì êîìïüþòåðå. Îäèí çíàê áîëüøå
äðóãîãî, åñëè ñîãëàñíî ýòîìó ïîðÿäêó îí íàõîäèòñÿ â ïîñëå-
äîâàòåëüíîñòè ïîçäíåå.
 äåéñòâèòåëüíîñòè âñå ñîâðåìåííûå êîìïüþòåðû èñïîëüçóþò
îäíó èç äâóõ óïîðÿäî÷åííûõ ïîñëåäîâàòåëüíîñòåé:
ASCII(àìåðèêàíñêèé ñòàíäàðòíûé êîä äëÿ îáúìåíà èíôîðìàöèåé)
è EBCDIC (ðàñøèðåííûé äâîè÷íî-äåñÿòè÷íûé êîä äëÿ îáìåíà
èíôîðìàöèåé). Ýòè ïîñëåäîâàòåëüíîñòè ïðèâåäåíû íèæå.
Áîëüøèå ÝÂÌ ôèðìû IBM è ñîâìåñòèìûå ñ íèìè îáû÷íî èñïîëüçó-
þò EBCDIC. Áîëüøèíñòâî äðóãèõ, âêëþ÷àÿ ïåðñîíàëüíûå êîìïüþ-
òåðû IBM, èñïîëüçóþò ASCII.
Çàìåòèì, ÷òî òàê êàê ïðè óñòàíîâëåííîé óïîðÿäî÷åííîé ïîñ-
ëåäîâàòåëüíîñòè èç äâóõ çíàêîâ îäèí âñåãäà áîëüøå, èëè ìå-
íüøå äðóãîãî,çàãëàâíàÿ áóêâà è òàêàÿ æå ñòðî÷íàÿ áóêâà íå
ýêâèâàëåíòíû. Â ASCII âñå ìàëåíüêèå áóêâû áîëüøå çàãëàâíûõ.
 EBCDIC íàîáîðîò.
-18-
Òàáëèöà 1-1
Óïîðÿäî÷åííàÿ ïîñëåäîâàòåëüíîñòü ASCII
-----------------------------------------------------------
1. ïðîáåë 28. ; (òî÷êà ñ çàïÿòîé)
2. ! 29. < (ëåâàÿ óãëîâàÿ ñêîáêà)
3. " 30. =
4. # 31. > (ïðàâàÿ óãëîâàÿ ñêîáêà)
5. $ 32. ?
6. % 33. @
7. & 34-59. áóêâû íà âåðõíåì ðåãèñòðå
8. ' (àïîñòðîô) A-Z
9. ( 60. [
10. ) 61. \
11. * 62. ]
12. + 63. ^ (çíàê ^)
13. , (çàïÿòàÿ) 64. _ (çíàê ïîä÷åðêèâàíèÿ)
14. - (äåôèñ) 65. ' (çíàê óäàðåíèÿ)
15. . (òî÷êà/äåñÿòè÷íàÿ 66-91. áóêâû íà íèæíåì ðåãèñòðå
òî÷êà) a-z
16. / (êîñàÿ ÷åðòà) 92. {
17-26 öèôðû, îò 0 äî 9 93. | (âåðòèêàëüíàÿ ÷åðòà)
27. : (äâîåòî÷èå) 94. }
95. ~ (òèëüäà)
------------------------------------------------------------
Òàáëèöà 1-2
Óïîðÿäî÷åííàÿ ïîñëåäîâàòåëüíîñòü EBCDIC
-----------------------------------------------------------
1. Ïðîáåë 16. / (êîñàÿ ÷åðòà)
2. 17. , (çàïÿòàÿ)
3. . (òî÷êà/äåñÿòè÷íàÿ 18. %
òî÷êà) 19. _ (çíàê ïîä÷åðêèâàíèÿ)
4. < 20. >
5. ( 21. ?
6. + 22. : (äâîåòî÷èå)
7. | 23. #
8. & 24. @
9. ! 25. ' (àïîñòðîô)
10. $ 26. =
11. * 27. "
12. ) 28-53. áóêâû íà íèæíåì ðåãèñòðå
13. ; (òî÷êà ñ çàïÿòîé) a-z
14. (çíàê îòðèöàíèÿ) 54-79. áóêâû íà âåðõíåì ðåãèñòðå
15. - (äåôèñ) A-Z
80-89. ÷èñëà, 0-9
-----------------------------------------------------------
-19-
ÌÎÄÅËÈ ÔÎÐÌÀÒÎÂ
----------------------------------------------------------------
Ñèìâîëüíûå è ÷èñëîâûå ìîäåëè ôîðìàòîâ èñïîëüçóþòñÿ â êîìàí-
äàõ BTITLE, TTITLE è COLUMN â ïðåäëîæåíèÿõ FORMAT äëÿ óï-
ðàâëåíèÿ âûñâå÷èâàíèåì äàííûõ. Ìîäåëè ôîðìàòà äàòû èñïîëü-
çóþòñÿ â ôóíêöèÿõ TO_CHAR è TO_DATE.
ÑÈÌÂÎËÜÍÛÅ ÔÎÐÌÀÒÛ
----------------------------------------------------------------
Ñèìâîëüíûé ôîðìàò ñîñòîèò èç áóêâû 'A' è ñëåäóþùåãî çà íåé
óêàçàíèÿ ùèðèíû ñòîëáöà â ñèìâîëàõ. Åñëè çíà÷åíèå íå óêëà-
äûâàåòñÿ â óêàçàííóþ øèðèíó, îíî áóäåò ñäâèíóòî èëè îáðåçà-
íî â çàâèñèìîñòè îò òîãî áûëà ëè âûïîëíåíà óñòàíîâêà SET
WRAP èëè SET TRUNC.
×ÈÑËÎÂÛÅ ÔÎÐÌÀÒÛ
---------------------------------------------------------------
Ýëåìåíòû ìîäåëåé ÷èñëîâîãî ôîðìàòà ñëåäóþùèå:
Ýëåìåíò Ïðèìåð Îïèñàíèå
-----------------------------------------------------------
9 9999 Êîëè÷åñòâî öèôð, îïðåäåëÿþùèõ
øèðèíó âûñâå÷èâàíèÿ.
0 0999 Âûñâå÷èâàíèå âåäóùèõ íóëåé.
$ $9999 Ïðåôèêñíîå çíà÷åíèå ñî çíàêîì
äîëëàðà.
B B9999 Âûñâå÷èâàíèå íóëåâûõ çíà÷åíèé
êàê ïðîáåëîâ, à íå êàê íóëåé.
MI 9999MI Âûñâå÷èâàíèå çíàêà '-' ïîñëå
îòðèöàòåëüíûõ ÷èñåë.
PR 9999PR Âûñâå÷èâàíèå îòðèöàòåëüíûõ
÷èñåë â <óãëîâûõ ñêîáêàõ>.
Çàïÿòàÿ 9,999 Âûñâå÷èâàíèå çàïÿòîé â óêà-
çàííîé ïîçèöèè.
Òî÷êà 99.99 Íàñòðîéêà äåñÿòè÷íîé òî÷êè íà
óêàçàííóþ ïîçèöèþ.
V 999V99 Óìíîæåíèå íà 10 â N-îé ñòåïå-
íè,ãäå N - êîëè÷åñòâî äåâÿòîê
ïîñëå 'V'.
E 9&999EEEE Âûñâå÷èâàíèå â ýêñïîíåíöèàëü-
íîé ôîðìå ( ôîðìàò äîëæåí ñî-
äåðæàòü ðîâíî 4 áóêâû 'E').
DATE DATE Âûñâå÷èâàíèå â ôîðìàòå äàòû
'MM/DD/YY'.Äëÿ äàò,õðàíÿùèõñÿ
êàê ÷èñëîâûå âåëè÷èíû(ORACLE
âåðñèÿ 2).
----------------------------------------------------------------
-20-
Óêàçàíèå ëþáîãî ÷èñëîâîãî ôîðìàòà ïðèâîäèò SQL*PLUS ê îê-
ðóãëåíèþ ÷èñëà äî óêàçàííîãî êîëè÷åñòâà çíà÷àùèõ öèôð.
Åñëè ôîðìàò íå óêàçàí , øèðèíà ýëåìåíòà ïðèíèìàåòñÿ ïî
óìîë÷àíèþ ðàâíîé NUMWIDTH (ñì. êîìàíäó SET â ãëàâå 2).
-21-
ÔÎÐÌÀÒÛ ÄÀÒ
----------------------------------------------------------------
Ýëåìåíòû ìîäåëåé ôîðìàòà äàò ñëåäóþùèå:
Îáîçíà÷åíèå Çíà÷åíèå
-----------------------------------------------------------
SCC èëè ÑÑ Âåê; 'S'- ïðåôèêñ ïåðåä äàòîé (äî í.ý.)
ñ'-'.
YYYY èëè SYYYY Ãîä; 'S'- ïðåôèêñ ïåðåä äàòîé (äî í.ý.)
ñ'-'.
YYY YY èëè Y Ïîñëåäíèå òðè, äâå èëè îäíà öèôðû ãîäà.
Y,YYY Ãîä ñ çàïÿòîé â äàííîé ïîçèöèè.
SYEAR èëè YEAR Ãîä ïðîïèñüþ.
'S'-ïðåôèêñ ïåðåä äàòîé (äî í.ý.) ñ'-'.
BC èëè AD BC/AD - (äî í.ý.) / ( í.ý.).
B.C. èëè A.D. Àíàëîãè÷íî BC/AD.
Q ×åòâåðòü ãîäà.
MM Ìåñÿö.
MONTH Èìÿ ìåñÿöà, äîïîëíåííîå ïðîáåëàìè äî
äåâÿòè ñèìâîëîâ.
MON Èìÿ ìåñÿöà;òðåõáóêâåííàÿ àááðåâèàòóðà.
WW èëè W Íåäåëÿ ãîäà èëè ìåñÿöà.
DDD DD èëè D Äåíü ãîäà, ìåñÿöà èëè íåäåëè.
DAY Íàèìåíîâàíèå äíÿ, äîáàâëåííîå ïðîáåëà-
ìè äî äåâÿòè ñèìâîëîâ.
DY Íàèìåíîâàíèå äíÿ ; òðåõáóêâåííàÿ àááðå-
âèàòóðà.
J Äåíü ïî Þëèàíñêîìó êàëåíäàðþ; êîëè÷åñò-
âî äíåé îò 31 äåêàáðÿ, 4713 äî í.ý.
AM èëè PM Óêàçàòåëü ÷àñîâîãî ïîÿñà.
A.M. èëè P.M. Óêàçàòåëü ÷àñîâîãî ïîÿñà.
HH èëè HH12 Âðåìÿ ñóòîê, èíòåðâàë 1-12.
HH24 Âðåìÿ ñóòîê, èíòåðâàë 0-23.
MI Ìèíóòû.
SS Ñåêóíäû.
SSSSS Ñåêóíäû ïîñëå ïîëóíî÷è (0-86399).
/., è.ò.ä. Ïóíêòóàöèÿ, êîòîðàÿ âîñïðîèçâîäèòñÿ â
ðåçóëüòàòå.
"..." Ñòðîêà â êàâû÷êàõ, êîòîðàÿ âîñïðîèçâî-
äèòñÿ â ðåçóëüòàòå.
-22-
Ïðåôèêñ , óêàçàííûé íèæå,ìîæåò áûòü äîáàâëåí ê êîäàì ïåðå-
÷èñëåííûì âûøå:
-----------------------------------------------------------
fm "Fill mode"(ðåæèì íàïîëíåíèÿ).Óêàçàííûé
ïåðåä MONTH èëè DAY ïîäàâëÿåò ïðîáåëû,
îñòàâëÿÿ òîëüêî ðåçóëüòàò ôàêòè÷åñêîé
äëèíû. Ñ äðóãèìè êîäàìè íåäåéñòâèòåëåí.
Ñóôôèêñû, óêàçàííûå íèæå ìîãóò áûòü äîáàâëåíû ê êîäàì ïåðå-
-----------------------------------------------------------
÷èñëåííûì âûøå:
---------------
TH Ïîðÿäêîâîå ÷èñëî(íàïð.,"DDTH" äëÿ "4TH")
SP ×èñëî ïðîïèñüþ (íàïð.,"DDSP" äëÿ "FOUR")
SPTH èëè THSP Ïîðÿäêîâîå ÷èñëî ïðîïèñüþ(íàïð.,
"DDSPTH") äëÿ "FOURTH").
-23-
Íàëè÷èå çàãëàâíûõ áóêâ â àááðåâèàòóðàõ èëè â ñëîâàõ ïðîïè-
ñüþ îïðåäåëÿåòñÿ íàëè÷èåì çàãëàâíûõ áóêâ â ñîîòâåòñòâóùåì
ôîðìàòíîì ýëåìåíòå. Íàïðèìåð, "DAY" â ìîäåëè ôîðìàòà äàåò
ñëîâà èç çàãëàâíûõ áóêâ, òàêèå êàê:
"MONDAY";
"Day" äàåò
"Monday";
è "day" äàåò
"monday".
Ìîäåëü ôîðìàòà äàòû ìîæåò òàêæå âêëþ÷àòü â ñåáÿ çíàêè ïóíê-
òóàöèè, òàêèå êàê äåôèñ, êîñóþ ÷åðòó, çàïÿòûå è ñèìâîëüíûå
êîíñòàíòû,çàêëþ÷åííûå â äâîéíûå êàâû÷êè ( íå â àïîñòðîôû ).
Ïóíêòóàöèÿ è êîíñòàíòû ïîÿâëÿþòñÿ ïðè âûâîäå. Íàïðèìåð ìî-
äåëü ôîðìàòà:
DDth "of" Month, YYYY
äàåò ïðè âûâîäå äàòó ñëåäóþùåãî âèäà:
15th of February, 1986
-24-
ÎÏÅÐÀÒÎÐÛ
----------------------------------------------------------------
 êàæäîé òàáëèöå îïåðàòîðû ðàñïîëîæåíû â ïîðÿäêå óáûâàíèÿ
ïî ïðèîðèòåòó. Ýêâèâàëåíòíûå ïî ïðèîðèòåòó îïåðàòîðû îáúå-
äèíÿþòñÿ â ãðóïû ñ ïîìîùüþ ïóíêòèðíûõ ëèíèé. Ïðè ïîñëåäîâà-
òåëüíîì âûïîëíåíèè îïåðàòîðîâ îäíîãî ïðèîðèòåòà, îíè âûïîë-
íÿþòñÿ â ïîðÿäêå íàïèñàíèÿ, ñëåâà íàïðàâî.
SQL*Plus Ñèíòàêñè÷åñêèå îïåðàòîðû
----------------------------------------------------------------
Ýòè îïåðàòîðû ìîãóò ïîÿâèòüñÿ â ëþáîì ìåñòå êîìàíäû è èìåþò
áîëåå âûñîêèé ïðèîðèòåò, ÷åì îïåðàòîðû âñåõ äðóãèõ òèïîâ.
Îïåðàòîð Ôóíêöèÿ Ïðèìåð
-----------------------------------------------------------
- Ïðîäîëæåíèå êîìàíäû COLUMN JOB -
SQL*PLUS HEADING 'Job Title';
& Óêàçûâàåò ïàðàìåòð SELECT * FROM EMP
â êîìàíäíîì ôàéëå, WHERE JOB='&' AND
çàïóñêàåìîì ñ ïî- SAL=&1;
ìîùüþ START. Ôðàçû . . .
ïîäñòàâëÿþòñÿ âìåñ- START EX 'CLERK' 950;
òî çíàêîâ '&'; ïåð-
âàÿ âìåñòî '&1',
âòîðàÿ âìåñòî '&2',
è.ò.ä..
&,&& Èäåíòèôèöèðóåò ïîäñ- SELECT * FROM EMP
òàâëÿåìóþ ïåðåìåííóþ WHERE JOB=
â SQL êîìàíäå. Òåêó- '&WHICH_JOB' AND
ùåå çíà÷åíèå ïåðå- SAL=&SALARY;
ìåííîé ïîäñòàâëÿåòñÿ
â èìÿ ïåðåìåííîé ,
êàæäûé ðàç êîãäà êî-
ìàíäà âûïîëíÿåòñÿ.
SQL*PLUS äàåò ïîä-
ñêàçêó íà ââîä çíà-
÷åíèÿ åñëè íàõîäèò
íåîïðåäåëåííûå ïåðå-
ìåííûå '&' èëè '&&'.
'&&' îïðåäåëÿåò ïåðå-
ìåííóþ è õðàíèò çíà-
íèå; '&' íå âûïîëíÿåò
ýòîãî.
-25-
SQL Ñèíòàêñè÷åñêèå îïåðàòîðû
----------------------------------------------------------
Îïåðàòîð Ôóíêöèÿ Ïðèìåð
----------------------------------------------------------
() Âûäåëåíèå ïîäçàïðîñà SELECT * FROM EMP
WHERE COMP >
(SELECT COMP FROM EMP
WHERE ENAME='JONES');
, Âûäåëåíèå ñèìâîëüíûõ 'O''Brien'
êîíñòàíò èëè êîíñòàíò '17-JAN-86'
îáîçíà÷àþùèõ äàòû.Äëÿ
óêàçàíèÿ àïîñòðîôà â
ñèìâîëüíîé êîíñòàíòå
íåîáõîäèìî åãî óäâî-
èòü.
" Âûäåëåíèå èìåíè ñòîë- SELECT NAME "EMP
áöà èëè ïñåâäîíèìà, NAME" EMPNO "EMP NUM"
ñîäåðæàùåãî ñïåöèàëü- FROM EMP;
íûå ñèìâîëû.
" Âûäåëåíèå ëèòåðàëüíûõ 'dd "of" Month yyyy'
äàííûõ â ôîðìàòå äàòû
@ Îáîçíà÷åíèå òîãî, ÷òî ...FROM EMP@BOSTON
çà ýòèì çíàêîì ñëåäóåò
èìÿ ñâÿçè ñ áàçîé äàí-
íûõ âî ôðàçå FROM.
-26-
SQL ×èñëîâûå îïåðàòîðû
----------------------------------------------------------------
Îïåðàòîð Ôóíêöèÿ Ïðèìåð
-----------------------------------------------------------
() Ïåðåîïðåäåëåíèå îáû÷- SELECT (X+Y)/(X-Y)...;
íîãî ïîðÿäêà âûïîëíå-
íèÿ îïåðàòîðîâ.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ - Çíàê âûðàæåíèÿ, ñòîÿ- QTYSOLD = -1
ùèé ïåðåä ÷èñëîâûì ...WHERE A<-(5*B);
âûðàæåíèåì.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* / Äåëåíèå è óìíîæåíèå SELECT 2*X + 1
...WHERE X>Y/2;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ - Ñëîæåíèå è âû÷èòàíèå SELECT 2*X - 1
...WHERE X>Y-Z;
|| Êîíêàòåíàöèÿ ñèì- SELECT 'NAME IS' ||
âîëüíûõ âåëè÷èí. ENAME...
------------------------------------------------------------
Ëîãè÷åñêèå îïåðàòîðû SQL
----------------------------------------------------------------
Ñâÿçàííàÿ òåìà: îïåðàòîð LIKE
Îïåðàòîð Ôóíêöèÿ Ïðèìåð
----------------------------------------------------------------
() Ïåðåîïðåäåëåíèå îáû÷- ...NOT(A=1 OR B=1);
íîãî ïîðÿäêà âûïîëíå-
íèÿ îïåðàòîðîâ.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
= Ïðîâåðêà íà ðàâåíñòâî ...WHERE SALARY=1000
!= Ïðîâåðêà íà íåðàâåí- ...WHERE
èëè <> ñòâî SALARY !=10000
> >= "Áîëüøå"; "áîëüøå èëè ...WHERE
ðàâíî" SALARY >=10000
< <= "Ìåíüøå"; "ìåíüøå èëè
ðàâíî"
IN "Ðàâåíñòâî îäíîìó èç ...WHERE JOB IN
÷ëåíîâ..." ('CLERK','ANALIST')
IN Ýêâèâàëåíòíî '=ANY' ...WHERE SAL IN
ò.å., ðàâåíñòâî ëþáî- (SELECT SAL FROM EM
ìó. ...WHERE DEPTNO=30)
-27-
Îïåðàòîð Ôóíêöèÿ Ïðèìåð
----------------------------------------------------------------
NOT IN Ýêâèâàëåíòíî '!=ALL' ...WHERE SAL NOT IN
(íå ðàâíî íè îäíîìó) (SELECT SAL FROM EMP
WHERE DEPTNO=30)
ANY Ñðàâíèòü çíà÷åíèå ñ ...WHERE SAL = ANY
êàæäûì çíà÷åíèåì,âîç- (SELECT SAL FROM EMP
âðàùàåìûì ñïèñêîì èëè WHERE DEPTNO=30)
ïîäçàïðîñîì
ALL Ñðàâíèòü çíà÷åíèå ñ ...WHERE SAL > ALL
êàæäûì çíà÷åíèåì,âîç- (SELECT SAL FROM EMP
âðàùàåìûì ñïèñêîì èëè WHERE DEPTNO=30)
ïîäçàïðîñîì
[NOT] "[Íå](áîëüøå èëè ðàâíî ...WHERE A BETWEEN 1
BETWEEN x è ìåíüøå èëè ðàâíî AND 9
AND... y)"
EXISTS "Èñòèíà", åñëè ïîäçàï- ...WHERE EXISTS
ðîñ âîçâðàùàåò õîòÿ (SELECT SAL FROM EMP
áû îäíó ñòðîêó WHERE DEPTNO=30)
[NOT] LIKE "Ñîîòâåòñòâèå [ èëè ...WHERE COD LIKE
íåñîîòâåòñòâèå] ñëåäó- 'T%'
þùåìó øàáëîíó".
'%'óêàçûâàåò íà ñîîò-
âåòñòâèå ëþáîé ñòðîêå
çíàêîâ;
'_' - ñîîòâåòñòâèå
îäèíî÷íîìó ñèìâîëó
(ñì. îïèñàíèå LIKE).
IS [NOT] "Ðàâíî[íå ðàâíî] ïóñ- ...WHERE JOB IS NULL
NULL òîìó çíà÷åíèþ"
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOT Ïðåîáðàçîâàíèå ðåçóëü- ...WHERE NOT (JOB
òàòà ëîãè÷åñêîé îïåðà- IS NULL)
öèè â ïðîòèâîïîëîæíûé ...WHERE NOT(COD
LIKE'T%')
...WHERE NOT(SAL
BETWEEN 500 AND 999)
...WHERE NOT(A=1)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AND Êîìáèíàöèÿ 2-õ ëîãè- ...WHERE A=1
÷åñêèõ âûðàæåíèé, èñ- AND B=1
òèííàÿ (TRUE) òîãäà,
êîãäà èñòèíû îáà.
OR Êîìáèíàöèÿ 2-õ ëîãè÷å- ...WHERE A=1
ñêèõ âûðàæåíèé, èñòèí- OR B=1
íàÿ(TRUE) òîãäà, êîãäà
èñòèííî õîòÿ áû îäíî
èç íèõ.
-28-
ÎÏÅÐÀÒÎÐÛ Â ÂÛÐÀÆÅÍÈßÕ ÇÀÏÐÎÑÎÂ SQL.
Îïåðàòîð Ôóíêöèÿ Ïðèìåð
----------------------------------------------------------
( ) Ïåðåîïðåäåëåíèå îáû÷íîãî SELECT...UNION
ïîðÿäêà ñëåäîâàíèÿ îïåðà- (SELECT...MINUS
òîðîâ. SELECT...);
-----------------------------------------------------------
UNION Îáúåäèíåíèå çàïðîñîâ äëÿ ...SELECT...
ïîëó÷åíèÿ âñåõ ðàçëè÷íûõ UNION SELECT...;
ñòðîê, êîòîðûå âîçâðàùà-
þòñÿ êàæäûì ïîäçàïðîñîì
èíäèâèäóàëüíî.
INTERSECT Îáúåäèíåíèå çàïðîñîâ äëÿ ...SELECT...
ïîëó÷åíèÿ òåõ ðàçëè÷íûõ INTERSECT
ñòðîê, êîòîðûå âîçâðàùà- SELECT...;
þòñÿ â ðåçóëüòàòå îáîèõ
ïîäçàïðîñîâ.
MINUS Îáúåäèíåíèå çàïðîñîâ òàê, ...SELECT...
÷òîáû ïîëó÷èòü âñå(ðàç- MINUS SELECT...;
ëè÷íûå) ñòðîêè, âîçâðàùà-
åìûå ïåðâûì çàïðîñîì è íå
âîçâðàùàåìûå âòîðûì.
-----------------------------------------------------------
ÄÐÓÃÈÅ ÎÏÅÐÀÒÎÐÛ SQL
----------------------------------------------------------------
Îïåðàòîð Ôóíêöèÿ Ïðèìåð
(+) Óêàçàíèå òîãî, ÷òî ïðå- ...WHERE DEPT.
äûäóùèé ñòîëáåö ÿâëÿåò- DEPTNO=EMP.DEPTNO(+)
ñÿ âíåøíèì,îáúåäèíÿþùèì
ñòîëáöîì â ñîåäèíåíèè.
* Âûáîð âñåõ ñòîëáöîâ èç ...SELECT *...
òàáëèö çàïðîñà. Ìîæåò
ïðåäâîðÿòüñÿ èìåíåì òàá-
ëèöû äëÿ âûáîðà âñåõ
ñòîëáöîâ â ýòîé òàáëèöå.
Åñëè èñïîëüçóåòñÿ âìåñòî
èìåíè ñòîëáöà ïðè ïîäñ÷å-
òàõ, ïðèâîäèò ê âêëþ÷åíèþ
â ïîäñ÷åò ñòðîê ñ ïóñòûìè
çíà÷åíèÿìè.
ALL Ñîõðàíåíèå äóáëèðóþùèõ ...SELECT ALL*...
çíà÷åíèé â çàïðîñàõ è ...COUNT(ALL
â ñîñòàâíûõ âûðàæåíèÿõ. DEPTNO)
-29-
DISTINCT Èñêëþ÷åíèå äóáëèðóþùèõ ...SELECT
ñòðîê èç ðåçóëüòàòà çàï- DISTINCT*...
ðîñà èëè ñîñòàâíûõ âûðà- ...COUNT(DISTINCT
æåíèÿé. DEPTNO)...
PRIOR Îïðåäåëåíèå îòíîøåíèé ...CONNECT BY
ðîäèòåëü-ïîòîìîê â çàïðî- PRIOR EMPNO=MGR
ñå ñî ñòðóêòóðîé äåðåâà.
Âûðàæåíèå ïåðåä PRIOR îï-
ðåäåëÿåò ðîäèòåëÿ;äðóãîå
âûðàæåíèå ïîòîìêà. Ìîæåò
èñïîëüçîâàòüñÿ â ëþáîì âû-
ðàæåíèè â çàïðîñå ñ äðåâî-
âèäíîé ñòðóêòóðîé (íå òîëü-
êî â CONNECT BY).
-----------------------------------------------------------
-30-
ÔÓÍÊÖÈÈ SQL
----------------------------------------------------------------
Âîîáùå ãîâîðÿ, ôóíêöèè ìîãóò áûòü èñïîëüçîâàíû âåçäå, ãäå
èñïîëüçóþòñÿ ïåðåìåííûå ïîëüçîâàòåëÿ, ñòîëáöû èëè âûðàæåíèÿ
(ñîîòâåòñòâóþùåãî òèïà).
 ñëåäóþùèõ òàáëèöàõ "Òèï" óêàçûâàåò òèï çíà÷åíèÿ, âîçâðà-
ùàåìûé ôóíêöèåé. Ãäå âîçìîæíî, òèï îáîçíà÷àåòñÿ àááðåâèàòó-
ðîé.
* 'C' îçíà÷àåò "char" (ñèìâîëû)
* 'D' îçíà÷àåò"date" (äàòà)
* 'N' îçíà÷àåò"number" (÷èñëà)
* 'R' îçíà÷àåò"rowID" (èäåíòèôèêàòîð ñòðîêè)
* 'W' îçíà÷àåò"raw" (èñõîäíûå äàííûå)
* '*' îçíà÷àåò òèï äàííûõ, çàâèñÿùèé îò êîíòåêñòà ôóíê-
öèè.
* n,m óêàçûâàþò íà ÷èñëåííûå âûðàæåíèÿ.
* "ñèìâîë" , "ñèìâîë1" , "ñèìâîë2" , "íàáîð" îçíà÷àþò
ñèìâîëüíûå âûðàæåíèÿ.
* "âûðàæ" , "ñòðîê", "ðåçóëüò" è "ïî_óìîë÷" îáîçíà÷àþò
âûðàæåíèÿ ëþáîãî òèïà.
* d,l îáîçíà÷àåò âûðàæåíèÿ òèïà äàòû
×ÈÑËÎÂÛÅ ÔÓÍÊÖÈÈ
----------------------------------------------------------------
Òèï Ôóíêöèè Âîçâðàùàåìîå çíà÷åíèå
-----------------------------------------------------------
N ABS(n) Àáñîëþòíîå çíà÷åíèå n
N CEIL(n) Íàèìåíüøåå öåëîå, íå ìåíüøåå n.
N FLOOR(n) Íàèáîëüøåå öåëîå, íå áîëüøå n.
N MOD(m,n) Îñòàòîê îò äåëåíèÿ m íà n.
N POWER(m,n) m â ñòåïåíè n. Åñëè n íå öåëîå,
òî îíî óñåêàåòñÿ äî öåëîãî.
N ROUND(n[,m]) n, îêðóãëåííîå äî m-òîãî äåñÿòè÷-
íîãî çíàêà; åñëè m îïóùåíî,òî îíî
ïðèíèìàåòñÿ ðàâíûì 0.m ìîæåò áûòü
îòðèöàòåëüíûì äëÿ îêðóãëåíèÿ öèôð
ëåâåå äåñÿòè÷íîé òî÷êè.
N SIGN(n) Åñëè n<0, òî -1; åñëè n=0, òî 0;
åñëè n>0, òî 1.
N SQRT(n) Êîðåíü êâàäðàòíûé èç n, åñëè n<0,
òî NULL.
N TRUNC(n[,m]) n, óñå÷åííîå äî m äåñÿòè÷íûõ çíà-
êîâ; åñëè m îïóùåíî, òî îíî ïðè-
íèìàåòñÿ ðàâíûì 0. m ìîæåò áûòü
îòðèöàòåëüíûì äëÿ óñå÷åíèÿ(îáíó-
ëåíèÿ) öèôð ñëåâà îò äåñÿòè÷íîé
òî÷êè.
-31-
ÑÈÌÂÎËÜÍÛÅ ÔÓÍÊÖÈÈ
----------------------------------------------------------------
Òèï Ôóíêöèÿ Âîçâðàùàåìîå çíà÷åíèå
-----------------------------------------------------------
N ASCII(ñèìâîë) Êîä ASCII ïåðâîãî ñèìâîëà ñèì-
âîëüíîé ïåðåìåííîé "ñèìâîë".
Ñ CHR(n) Ñèìâîë,êîä ASCII êîòîðîãî ðàâåí n
C INITCAP(ñèìâîë) Ñèìâîëüíàÿ ïåðåìåííàÿ ñ ïåðâûìè
áóêâàìè ñëîâ, íà÷èíàþùèõñÿ ñ
çàãëàâíîé áóêâû.
N INSTR(ñèìâîë1,
ñèìâîë2[,n[,m]]) Ïîçèöèÿ m-òîãî âêëþ÷åíèÿ "cèìâîë2"
â "ñèìâîë1" ïðè íà÷àëå ïîèñêà ñ
ïîçèöèè n. Åñëè m îïóùåíî,ïî óìîë-
÷àíèþ ïðåäïîëàãàåòñÿ 1;àíàëîãè÷íî
äëÿ n. Ïîçèöèè äàþòñÿ îòíîñèòåëü-
íî ïåðâîãî çíàêà "ñèìâîë1", äàæå
åñëè n>1.
N LENGTH(ñèìâîë) Äëèíà â çíàêàõ ñèìâîëüíîé ïåðå-
ìåííîé "ñèìâîë".
C LOWER(ñèìâîë) "ñèìâîë",ãäå âñå áóêâû óñòàíàâëè-
âàþòñÿ ìàëåíüêèìè.
C LPAD(ñèìâîë1 ñòðîêà " ñèìâîë1" , äîáàâëåííàÿ
n[,ñèìâîë2]) ñëåâà äî äëèíû n ïîñëåäîâàòåëü-
íîñòüþ çíàêîâ èç ñòðîêè "ñèìâîë2"
ñ ïîâòîðåíèåì ýòîé ïîñëåäîâàòåëü-
íîñòè ñòîëüêî ðàç ñêîëüêî íåîáõî-
äèìî. Åñëè "ñèìâîë2" îïóùåíî,
èñïîëüçóþòñÿ ïðîáåëû.
C LTRIM(ñèìâîë, ñòðîêà "ñèìâîë", â êîòîðîé âû÷åð-
íàáîð) êíóòû íà÷àëüíûå çíàêè âïëîòü äî
ïåðâîãî íå âñòðå÷àþùåãîñÿ â
"íàáîð" çíàêà.
Ñ RPAD(ñèìâîë1, ñòðîêà "ñèìâîë1" , äîáàâëåííàÿ
n[,ñèìâîë2]) ñïðàâà ñèìâîëàìè "ñèìâîë2",ñ ïî-
âòîðåíèåì, åñëè íåîáõîäèìî; åñëè
"ñèìâîë2" îïóùåíà , èñïîëüçóþòñÿ
ïðîáåëû.
C SOUNDEX(ñèìâîë) Ñèìâîëüíàÿ ïåðåìåííàÿ, ïðåäñòàâ-
ëÿþùàÿ çâóêè ñëîâ â "ñèìâîë".
C SUBSTR(ñèìâîë, Ïîäñòðîêà, ïîëó÷àåìàÿ èç "ñèìâîë",
m[,n]) íà÷èíàþùàÿñÿ ñ ñèìâîëà m è äëè-
íîé n ñèìâîëîâ (åñëè n îïóùåíî,
òî äî êîíöà "ñèìâîë").
-32-
C TRANSLATE ñòðîêà "ñèìâîë1",ñòðàíñëèðîâàííàÿ
(ñèìâîë1,ñèìâîë2, èç ìíîæåñòâà ñèìâîëîâ "ñèìâîë2" â
ñèìâîë3) ìíîæåñòâî "ñèìâîë3";êàæäûé ñèìâîë
èç "ñèìâîë1" ïåðåâîäèòñÿ â ñîîò-
âåòñòâóþùèé ñèìâîë èç "ñèìâîë3".
C UPPFR(ñèìâîë) ñòðîêà èç ñèìâîëîâ âåðõíåãî ðå-
ãèñòðà (çàãëàâíûå áóêâû).
C USERNV(ñèìâîë) Âîçâðàùàåò èíôîðìàöèþ î ïîëüçîâà-
òåëå, êîòîðàÿ ïîëåçíà äëÿ ñîñòàâ-
ëåíèÿ ïðèêëàäíûõ òàáëèö ñëåæåíèÿ
çà îêîí÷àíèåì êàêîãî-ëèáî ïðîöåñ-
ñà . Åñëè "ñèìâîë" åñòü'ENTRYID'-
âîçâðàùàåòñÿ äîñòóïíûé èäåíòèôè-
êàòîð ýëåìåíòà , çà êîòîðûì èäåò
ñëåæåíèå ; åñëè "ñèìâîë" åñòü
'SESSIONID'- âîçâðàùàåòñÿ èäåíòè-
ôèêàòîð ïîëüçîâàòåëÿ,íàõîäÿùåãîñÿ
â ñåàíñå ðàáîòû ñ áàçîé ; åñëè
"ñèìâîë" åñòü 'TERMINAL'- âîçâðà-
ùàåòñÿ èäåíòèôèêàòîð òåðìèíàëà
ïîëüçîâàòåëÿ (â òåðìèíàõ îïåðàöè-
îííîé ñèñòåìû). LANGUAGE âîçâðà-
ùàåò èñïîëüçóåìûé ÿçûê (íàïðèìåð,
'ENGLISH').
-33-
ÃÐÓÏÏÎÂÛÅ ÔÓÍÊÖÈÈ
----------------------------------------------------------------
Ãðóïïîâûå ôóíêöèè èìåþò çíà÷åíèå òîëüêî â çàïðîñàõ è ïîä-
çàïðîñàõ.
DISTINCT ïðèâîäèò ê ãðóïïîâîé ôóíêöèè, ðàññìàòðèâàþùåé
òîëüêî ðàçëè÷íûå çíà÷åíèÿ âûðàæåíèÿ; ALL ïðèíóæäàåò ðàññìà-
òðèâàòü âñå çíà÷åíèÿ. Íàïðèìåð, DISTINCT ïðè íàõîæäåíèè
ñðåäíåãî çíà÷åíèÿ èç 1,1,1, è 3 åñòü 2, òîãäà êàê ALL ïðè
ýòîé æå îïåðàöèè åñòü 1.5.
Ïî óìîë÷àíèþ âñåãäà áåðåòñÿ ALL.
Òèï Ôóíêöèÿ Âîçâðàùàåìîå çíà÷åíèå
-----------------------------------------------------------
N AVG([DISTINCT|ALL]n) Ñðåäíåå çíà÷åíèå n, ñ èãíîðè-
ðîâàíèåì ïóñòûõ çíà÷åíèé.
N COUNT({[DISTINCT|ALL] Êîëè÷åñòâî ñòðîê,â êîòîðûõ "âû-
âûðàæ|*}) ðàæ" íå ÿâëÿåòñÿ ïóñòûì(NULL).
'*'-îáîçíà÷àåò, ÷òî COUNT ïîä-
ñ÷èòûâàåò âñå âûáðàííûå ñòðîêè
N MAX([DISTINCT|ALL] Ìàêñèìàëüíîå çíà÷åíèå "âûðàæ"
âûðàæ)
N MIN([DISTINCT|ALL] Ìèíèìàëüíîå çíà÷åíèå "âûðàæ"
âûðàæ)
N STDDEV([DISTINCT| Ñðåäíåêâàäðàòè÷íîå (ñòàíäàðò-
ALL]n) íîå) îòêëîíåíèå îò n, ñ èãíî-
ðèðîâàíèåì ïóñòûõ çíà÷åíèé.
N SUM([DISTINCT|ALL]n) Cóììà çíà÷åíèé n.
N VARIANCE([DISTINCT| Äèñïåðñèÿ n, ñ èãíîðèðîâàíèåì
ALL]n) ïóñòûõ çíà÷åíèé.
-34-
ÔÓÍÊÖÈÈ ÏÐÅÎÁÐÀÇÎÂÀÍÈß
----------------------------------------------------------------
Òèï Ôóíêöèÿ Ðåçóëüòàò(âîçâðàùàåìîå çíà÷åíèå)
-----------------------------------------------------------
C CHARTOROWID(ñèìâîë) Ïðåîáðàçîâàíèå ñòðîêè "ñèìâîë"
â èäåíòèôèêàòîð ñòðîêè.
W HEXTORAW(ñèìâîë) Ïðåîáðàçîâàíèå ñòðîêè "ñèìâîë",
ñîäåðæàùåé øåñòíàäöàòèðè÷íûå
çíà÷åíèÿ â ñòðîêó ñ äâîè÷íûìè
çíà÷åíèÿìè (óäîáíûìè äëÿ âêëþ-
÷åíèÿ â RAW-ñòîëáåö(ñòîëáåö ñ
èñõîäíûìè äàííûìè)).
C RAWTOHEX(èñõ_äàíí) Ïðåîáðàçîâàíèå "èñõ_äàíí"(èñõî-
äíûå äàííûå) â ñòðîêó, ñîäåðæà-
ùóþ øåñòíàäöàòèðè÷íûå çíà÷åíèÿ.
C ROWIDTOCHAR(èäåíò_ñòð) Ïðåîáðàçîâàíèå èäåíòèôèêàòîðà
ñòðîêè â ñòðîêó, äëèíîé 18
ñèìâîëîâ.
C TO_CHAR(n[,ôìò])
C TO_CHAR(d[,ôìò]) Ïðåîáðàçîâàíèå n èëè d â ñèì-
âîëüíûé âèä ïî ôîðìàòó, îïðå-
äåëåííîìó ñ ïîìîùüþ "ôìò"(ñèì-
âîëüíàÿ ïåðåìåííàÿ).
Îá "ôìò" ñìîòðè "Ìîäåëè ôîðìà-
òîâ" â ýòîé ãëàâå.
Åñëè "ôìò" îïóùåíî n ïðåîáðàçó-
åòñÿ â ñòðîêó òàêîé äëèíû, êî-
òîðàÿ âìåùàåò òîëüêî çíà÷àùèå
öèôðû; d ïðåîáðàçóåòñÿ â ñòðî-
êó ñîãëàñíî óìîë÷àíèþ ORACLE
ïî äàòå: 'DD-MON-YY'.
D TO_DATE("ñèìâîë" Ïðåîáðàçîâàíèå äàòû â ñèìâîëü-
[,ôìò]) íîì âèäå â çíà÷åíèå äàòû.
"ôìò"- ýòî ñòðîêà,îïðåäåëÿþùàÿ
ôîðìàò ñòðîêè "ñèìâîë" . Îá
"ôìò" ñìîòðè "Ìîäåëè Ôîðìàòîâ"
â ýòîé ãëàâå.
Åñëè "ôìò" îïóùåíà,"ñèìâîë" äî-
ëæíà èìåòü ôîðìàò äàòû ïî óìîë-
÷àíèþ 'DD-MON-YY'.
D TO_DATE(n,[ôìò]) Ïðåîáðàçîâàíèå ÷èñëà n â äàòó.
"ôìò" äîëæíà áûòü òàêîé æå êàê
è â TO_CHAR,(íàïð.,'I' èëè 'MM').
N TO_NUMBER(ñèìâîë) Ïðåîáðàçîâàíèå ñòðîêè "ñèìâîë",
ïðåäñòàâëÿþùåé ÷èñëî, â ÷èñëî-
âîå çíà÷åíèå.
-35-
ÔÓÍÊÖÈÈ ÐÀÁÎÒÛ Ñ ÄÀÒÀÌÈ
----------------------------------------------------------------
Òèï Ôóíêöèè Ðåçóëüòàò
-----------------------------------------------------------
D ADD_MONTHS(d,n) Äàòà d ïëþñ n ìåñÿöåâ
D LAST_DAY(d) Äàòà ïîñëåäíåãî äíÿ ìåñÿöà
ñîäåðæàùåãî d
N MONTHS_BETWEEN(d,e) Êîëè÷åñòâî ìåñÿöåâ ìåæäó d è e.
Eñëè d áîëåå ïîçäíÿÿ äàòà, ÷åì
e, ðåçóëüòàò ïîëîæèòåëåí, èíà-
÷å îòðèöàòåëåí.
D NEW_TIME(d,a,b) Äàòà è âðåìÿ âî âðåìåííîé çîíå
b , åñëè âî âðåìåííîé çîíå a
îíè ðàâíû d.
a è b ñèìâîëüíûå âûðàæåíèÿ
ñëåäóþùèõ çíà÷åíèé:
AST , ADT Âðåìÿ ïî ñòàíäàðòó
Àòëàíòèêè , äíåâíîå
âðåìÿ.
BST,BDT Âðåìÿ ïî ñòàíäàðòó
Áåðèíãà , äíåâíîå
âðåìÿ.
CST,CDT Âðåìÿ ïî Öåíòðàëüíî-
ìó ñòàíäàðòó , äíåâ-
íîå âðåìÿ.
EST,EDT Âðåìÿ ïî Âîñòî÷íîìó
ñòàíäàðòó , äíåâíîå
âðåìÿ.
GMT Ñðåäíåå âðåìÿ ïî
Ãðèíâè÷ó.
HST, HDT Âðåìÿ ïî ñòàíäàðòó
Àëÿñêà-Ãàâàéè, äíåâ-
íîå âðåìÿ.
MST,MDT Âðåìÿ ïî ñòàíäàðòó
Mountain , äíåâíîå
âðåìÿ.
NST Âðåìÿ ïî ñòàíäàðòó
Íüþ-Ôàóíëåíäà.
PST,PDT Òèõîîêåàíñêèé ñòàí-
äàðò , äíåâíîå âðåìÿ
YST,YDT Âðåìÿ ïî ñòàíäàðòó
Þêîíà, äíåâíîå âðåìÿ
D NEXT_DAY(d,ñèìâîë) Äàòà ïåðâîãî èç äíåé íåäåëè,
îáîçíà÷åííîé "ñèìâîë", êîòîðàÿ
áîëüøå èëè ðàâíà d.
N TRUNC(d) d ñ óñå÷åííûì âðåìåíåì ñóòîê
-36-
Äpóãèå ôóíêöèè
----------------------------------------------------------------
Òèï Ôóíêöèÿ Ðåçóëüòàò (âîçâpàùàåìîå çíà÷åíèå)
-----------------------------------------------------------
* DECODE (âûðàæ,ñòðîê1,ðåçóëüò1,ñòðîê2,ðåçóëüò2,
... [ïî_óìîë÷] )
Åñëè "âûðàæ" pàâíî ëþáîé èç ñòpîê "ñòðîê1",
âîçâpàùàåò ñîîòâåòñòâóþùåå "ðåçóëüò"; åñëè
íåò,òî âîçâpàùàåò "ïî_óìîë÷". Åñëè ñîîòâåò-
ñòâèÿ íå íàéäåíî,à "ïî_óìîë÷" îïóùåí , òî
âîçâpàùàåòñÿ NULL (ïóñòîå çíà÷åíèå)."âûðàæ"
ìîæåò áûòü ëþáîãî òèïà; "ñòðîê" äîëæåí áûòü
òàêîãî æå òèïà.Âîçâpàùàåìîå çíà÷åíèå âñåãäà
èìååò òîò æå òèï äàííûõ,÷òî è 1-ûé"ðåçóëüò".
* DUMP (âûðàæ[,radix[,íà÷_ïîçèöèÿ[,áèòû]]] )
Âûñâå÷èâàåò çíà÷åíèå âûpàæåíèÿ "âûðàæ" âî
âíóòpåííåì ôîpìàòå.
* GREATEST ( âûðàæ,âûðàæ,... )
Âîçâpàùàåò íàèáîëüøåå èç ñïèñêà çíà÷åíèé.
Ïåpåä ñpàâíåíèåì âñå âûpàæåíèÿ ïpåîápàçóþò-
ñÿ ê òèïó ïåpâîãî âûpàæåíèÿ.
* LEAST (âûðàæ,âûðàæ,...)
Âîçâpàùàåò íàèìåíüøåå èç ñïèñêà çíà÷åíèé.
Ïåpåä ñpàâíåíèåì âñå âûpàæåíèÿ ïpåîápàçóþò-
ñÿ ê òèïó ïåpâîãî âûpàæåíèÿ.
* NVL ( x,âûðàæ )
Åñëè õ èìååò ïóñòîå çíà÷åíèå (null), âîçâ-
pàùàåò "âûðàæ";åñëè õ èìååò íåïóñòîå çíà÷å-
íèå, òî âîçâpàùàåòñÿ õ. x è "âûðàæ" ìîãóò
áûòü ëþáîãî òèïà. Òèï âîçâpàùàåìîé âåëè÷èíû
òàêîé æå êàê äëÿ õ.
N VSIZE ( âûðàæ )
Âîçâpàùàåò êîëè÷åñòâî áàéòîâ, êîòîpîå çàíè-
ìàåò "âûðàæ" âî âíóòpåííåì ïpåäñòàâëåíèè
ORACLE.
-37-
ÏÑÅÂÄÎ-ÑÒÎËÁÖÛ
----------------------------------------------------------------
Òèï Ôóíêöèÿ Ðåçóëüòàò (âîçâpàùàåìîå çíà÷åíèå)
-----------------------------------------------------------
N LEVEL Âîçâpàùàåò 1 äëÿ êîpíÿ, 2 äëÿ äî÷åpíåãî
ópoâíÿ êîpíÿ, è.ò.ä. Èñïîëüçóåòñÿ â êîìàíäå
SELECT ... CONNECT BY
- NULL Ïóñòîå çíà÷åíèå.
R ROWID Âîçâpàùàåò èäåíòèôèêàòîp ñòpîêè. Èñïîëüçó-
éòå èäåíòèôèêàòîp ñòpîêè â êîìàíäàõ UPDATE
... WHERE è SELECT ... FOR UPDATE äëÿ óâå-
påííîñòè â òîì, ÷òî êîìàíäà áóäåò êîppåêòè-
pîâàòü òpåáóåìóþ ñòpîêó, à íå äpóãèå.
N ROWNUM Âîçâpàùàåò ÷èñëî, óêàçûâàþùåå ïîñëåäîâàòå-
ëüíîñòü, â êîòîpîé ñòpîêà áûëà âûápàíà èç
òàáëèöû èëè ìíîæåñòâà ñâÿçàííûõ òàáëèö.
Ïåpâàÿ âûápàííàÿ ñòpîêà èìååò ROWNUM 1,
âòîpàÿ 2, è ò. ä.
ROWNUM â îñíîâíîì èñïîëüçóåòñÿ äëÿ îãpàíè-
÷åíèÿ ÷èñëà ñòpîê,âîçâpàùàåìûõ â påçóëüòàòå
çàïpîñà ( íàïpèìåp, ... WHERE ROWNUM < 5 ).
ROWNUM òàêæå ìîæåò áûòü èñïîëüçîâàíà äëÿ
íàçíà÷åíèÿ óíèêàëüíûõ çíà÷åíèé êàæäîé ñòpî-
êå â òàáëèöå ( íàïpèìåp, UPDATE table SET
column = ROWNUM ).
D SYSDATE Òåêóùàÿ äàòà è âpåìÿ.
N UID ×èñëî,èäåíòèôèöèpóþùåå äàííîãî ïîëüçîâàòåëÿ
( íà êàæäîãî ïîëüçîâàòåëÿ ïpèõîäèòñÿ îäèí
èäåíòèôèêàòîp ).
C USER Èìÿ òåêóùåãî ïîëüçîâàòåëÿ.
-38-
ÎÁÇÎÐ ÑËÎÂÀÐß ÄÀÍÍÛÕ
----------------------------------------------------------------
Ñëîâàðü äàííûõ ñîäåpæèò èíôîpìàöèþ îá îïpåäåëåíèÿõ â áàçå
äàííûõ . Ïîëüçîâàòåëü èìååò äîñòóï ê ýòîé èíôîpìàöèè ñ ïî-
ìîùüþ pàçëè÷íûõ îáçîpîâ ( ýêpàííûõ ôîpì ïpîñìîòpà ) ýòîãî
ñëîâàpÿ. Èñïîëüçóéòå èìåíà ýòèõ îáçîpîâ â êîìàíäå SELECT ,
åñëè æåëàåòå èìåòü èíôîpìàöèþ î ñîäåpæèìîì ñëîâàpÿ.
Îáçîp Îïèñàíèå
----------------------------------------------------------------
AUDIT_ACTIONS Êîäû, îïpåäåëÿþùèå äåéñòâèÿ ïpîöåññà ñëå-
æåíèÿ è èõ îïèñàíèÿ.
AUDIT_ACCESS Èíôîpìàöèÿ ïpîöåññà ñëåæåíèÿ ( âûõîä êî-
ìàíäû ORACLE AUDIT ) çà äîñòóïîì ê òàáëè-
öå ïîëüçîâàòåëÿ ORACLE.Äëÿ àäìèíèñòpàòîpà
áàçû (DBA) îòíîñèòñÿ êî âñåì òàáëèöàì
ïîëüçîâàòåëÿ.
AUDIT_CONNECT Èíôîpìàöèÿ ïpîöåññà ñëåæåíèÿ, îòíîñÿùàÿñÿ
ê ñåàíñàì pàáîòû ïîëüçîâàòåëÿ.
Äëÿ àäìèíèñòpàòîpà áàçû (DBA) îòíîñèòñÿ
êî âñåì ïîëüçîâàòåëÿì.
AUDIT_DBA Èíôîpìàöèÿ ïpîöåññà ñëåæåíèÿ, îòíîñÿùàÿñÿ
òîëüêî ê îïåpàöèÿì àäìèíèñòpàòîpà áàçû
(DBA).
AUDITXISTS Èíôîpìàöèÿ ïpîöåññà ñëåæåíèÿ çà äîñòóïàìè
ê òàáëèöå, êîòîpûå áûëè íåóäà÷íû ïî
óñëîâèþ "does not exist" (íå ñóùåñòâóåò).
Îòíîñèòñÿ òîëüêî ê àäìèíèñòpàòîpó áàçû
(DBA).
AUDIT_TRAIL Âûõîä ïpîöåññà ñëåæåíèÿ, îòíîñÿùåãîñÿ ê
ïîëüçîâàòåëþ. Äëÿ àäìèíèñòpàòîpà áàçû
(DBA) îòíîñèòñÿ êî âñåì ïîëüçîâàòåëÿì.
CATALOG Òàáëèöû, îáçîpû (ýêpàííûå ôîpìû) è êëàñ-
òåpû äîñòóïíûå ïîëüçîâàòåëþ, çà èñêëþ÷å-
íèåì ñàìîãî ñëîâàpÿ áàçû äàííûõ.
CLUSTERS Êëàñòåpû ïîëüçîâàòåëÿ.
CLUSTERCOLUMNS Ñòîëáöû â êëàñòåpàõ ïîëüçîâàòåëÿ.
COL Ñòîëáöû â òàáëèöàõ ïîëüçîâàòåëÿ.
-39-
DBLINKS Ñâÿçè ñ áàçîé äàííûõ, äîñòóïíûå ïîëüçîâà-
òåëþ.
DEFAULT_AUDIT Ïàpàìåòpû ïpîöåññà ñëåæåíèÿ äëÿ âíîâü
ñîçäàâàåìûõ òàáëèö.
DTAB Òàáëèöû è ýêðàííûå ôîpìû â ñëîâàpå äàííûõ.
EXTENTS Ñòpóêòópà äàííûõ ýêñòåíòîâ âíóòpè òàáëèö.
INDEXES Èíäåêñàöèÿ ïîëüçîâàòåëÿ è èíäåêñàöèÿ
òàáëèö, ñîçäàâàåìûõ ïîëüçîâàòåëåì.
PARTITIONS Ôàéëîâàÿ ñòpóêòópà ôàéëîâ, íàõîäÿùèõñÿ â
pàçäåëå ( òîëüêî äëÿ àäìèíèñòpàòîpà ).
PRIVATESYN Ñèíîíèìû ïîëüçîâàòåëÿ.
PUBLICSYN PUBLIC (îáùèå) ñèíîíèìû.
SESSION Ïîêàçûâàåò påãèñòàöèþ ïîëüçîâàòåëÿ (åñëè
ñëåæåíèå çà påãèñòpàöèåé óñòàíîâëåíî àä-
ìèíèñòpàòîpîì áàçû ).
SPACES Îïpåäåëåíèå ïpîñòpàíñòâà äëÿ ñîçäàíèÿ
òàáëèö è êëàñòåpîâ.
STORAGE Ðàñïpåäåëåíèå ïàìÿòè äëÿ äàííûõ è èíäåê-
ñîâ ïîëüçîâàòåëüñêîé òàáëèöû.
SYNONYMS Ñèíîíèìû ïîëüçîâàòåëÿ è PUBLIC (îáùèå)
ñèíîíèìû.
SYSCATALOG Òàáëèöû, ýêðàííûå ôîpìû è êëàñòåpû, äî-
ñòóïíûå ïîëüçîâàòåëþ.
SYSCOLUMNS Ñòîëáöû â òàáëèöå è ýêðàííûå ôîðìû, äîñ-
òóïíûå ïîëüçîâàòåëþ.
SYSDBLINKS Ñâÿçè â áàçå äàííûõ â ñèñòåìå(òîëüêî äëÿ
àäìèíèñòpàòîpà áàçû äàííûõ ).
SYSEXTENTS Ñòpóêòópà äàííûõ òàáëèö â ñèñòåìå (òîëü-
êî äëÿ àäìèíèñòpàòîpà áàçû äàííûõ).
SYSINDEXES Èíäåêñû, ñîîòâåòñòâóþùèå ñòîëáöû ,îïöèè,
ïîëüçîâàòåëü, ñîçäàâøèé òàáëèöó è ïàpà-
ìåòpû.
SYSPROGS Ñïèñîê ìîäóëåé ïîëüçîâàòåëÿ , íå èñïî-
ëüçóåìûõ â äàííûé ìîìåíò.
SYSSESSIONS Âûñâå÷èâàíèå âñåõ påãèñòpàöèé ïîëüçîâàòå-
ëÿ ( åñëè êîíòpîëü påãèñòpàöèé çàäàí àä-
ìèíèñòpàòîpîì áàçû ).
-40-
SYSSTORAGE Îáùåå êîëè÷åñòâî ïàìÿòè , çàíèìàåìîå áà-
çîé äàííûõ ( òîëüêî äëÿ àäìèíèñòpàòîpà
áàçû).
SYSTABALLOC Ðàçìåùåíèå äàííûõ è èíäåêñîâ äëÿ âñåõ
òàáëèö (òîëüêî äëÿ àäìèíèñòpàòîpà áàçû).
SYSTABAUTH Ñïpàâî÷íèê , îïèñûâàþùèé pàçpåøåíèå äîñ-
òóïà, ïpåäîñòàâëåííîå ïîëüçîâàòåëåì èëè
ïîëüçîâàòåëþ.
SYSTEM_AUDIT Èíôîpìàöèÿ îá èñïîëüçîâàíèè ñèñòåìíûõ
påñópñîâ, êîòîpóþ ORACLE ôîpìèpóåò ïîñëå
èçäàíèÿ êîìàíäû AUDIT (òîëüêî äëÿ àäìè-
íèñòpàòîpà áàçû ).
SYSUSERAUTH Ñïèñîê ïîëüçîâàòåëåé ORACLE (òîëüêî äëÿ
àäìèíèñòpàòîpà áàçû ).
TAB Òàáëèöû, ýêpàííûå ôîpìû è êëàñòåpû, ïpè-
íàäëåæàùèå ïîëüçîâàòåëþ.
TABALLOC Ðàçìåùåíèå äàííûõ è èíäåêñîâ äëÿ âñåõ
òàáëèö ïîëüçîâàòåëÿ.
TABLE_AUDIT Ïàpàìåòpû AUDIT, îòíîñÿùèåñÿ ê òàáëèöàì
ïîëüçîâàòåëÿ . Äëÿ àäìèíèñòpàòîpà áàçû
äàííûõ ïàpàìåòpû AUDIT îòíîñÿòñÿ êî âñåì
òàáëèöàì.
VIEWS Òåêñò çàïpîñà â êîìàíäå CREATE VIEW ,êî-
òîpàÿ ñîçäàåò ëþáóþ ýêpàííóþ ôîpìó â
áàçå äàííûõ.
-41-
ÏÀÐÀÌÅÒÐÛ È ÏÎÄÑÒÀÂËßÅÌÛÅ ÏÅÐÅÌÅÍÍÛÅ
----------------------------------------------------------------
Êîìàíäíûé ôàéë ìîæåò ñîäåðæàòü ïàðàìåòðû, êîòîðûå ïðåäñòàâ-
ëÿþò ñîáîé îáîçíà÷åíèå âåëè÷èí, ïîäñòàâëÿåìûõ âî âðåìÿ âû-
ïîëíåíèÿ ôàéëà. Êàæäûé ïàðàìåòð ñîñòîèò èç àìïåðñàíäà ('&')
çà êîòîðûì ñëåäóåò ÷èñëî, íàïð., '&1'. Åñëè ïàðàìåòð ïðåä-
ñòàâëÿåò ñîáîé ñèìâîëüíîå çíà÷åíèå èëè äàòó, òî îí äîëæåí
áûòü çàêëþ÷åí â àïîñòðîôû, êàê åñëè áû îí áûë êîíñòàíòîé:
SELECT * FROM EMP WHERE JOB = 'CLERK'; (êîíñòàíòà)
SELECT * FROM EMP WHERE JOB = '&1'; (ïàðàìåòð)
Ââîäèòå çíà÷åíèÿ ïàðàìåòðîâ êàê àðãóìåíòû êîìàíäû START ïðè
çàïóñêå êîìàíäíîãî ôàéëà.Ïåðâûé àðãóìåíò ïîñëå èìåíè êîìàí-
äíîãî ôàéëà ïðåäñòàâëÿåò ñîáîé ïåðâûé ïàðàìåòð,âòîðîé àðãó-
ìåíò ïðåäñòàâëÿåò ñîáîé âòîðîé ïàðàìåòð è.ò.ä., íàïð.,:
SQL>START JOBS CLERK;
ÏÎÄÑÒÀÂËßÅÌÛÅ ÏÅÐÅÌÅÍÍÛÅ
----------------------------------------------------------------
Ïîäñòàâëÿåìàÿ ïåðåìåííàÿ îáîçíà÷àåòñÿ èäåíòèôèêàòîðîì ïå-
ðåìåííîé ïîëüçîâàòåëÿ ñ ïðåäøåñòâóþùèìè àìïåðñàíäàìè, îäíèì
èëè äâóìÿ.Êîãäà SQL*PLUS âñòðå÷àåò ïîäñòàâëÿåìóþ ïåðåìåííóþ
â êîìàíäå, òî âûïîëíÿåò åå ñ ó÷åòîì çàäàííîãî çíà÷åíèÿ.Íàï-
ðèìåð, åñëè ïåðåìåííàÿ TABNAME èìååò çíà÷åíèå 'EMP', òî êî-
ìàíäà:
SELECT * FROM &TABNAME;
áóäåò âûïîëíåíà êàê:
SELECT * FROM EMP;
Êîãäà SQL*PLUS âñòðå÷àåò ïîäñòàâëÿåìóþ ïåðåìåííóþ, çíà÷åíèå
êîòîðîé íå îïðåäåëåíî, îí äàåò ïîäñêàçêó äëÿ ââîäà çíà÷åíèÿ
ñ êëàâèàòóðû. Ýòî óäîáíûé ñïîñîá ïîëó÷åíèÿ äèíàìè÷åñêîé èí-
ôîðìàöèè îò ïîëüçîâàòåëÿ âî âðåìÿ âûïîëíåíèÿ êîìàíäíîãî
ôàéëà. Íàïðèìåð, åñëè ïåðåìåííàÿ GIVENNAME íå îïðåäåëåíà, è
â êîìàíäíîì ôàéëå èñïîëüçóåòñÿ ñëåäóþùàÿ êîìàíäà:
SELECT * FROM EMP WHERE ENAME = '&GIVENNAME';
òî SQL*PLUS âûâåäåò ïîäñêàçêó:
Enter value for given name: .
Ïàðàìåòðû è ïîäñòàâëÿåìûå ïåðåìåííûå ìîãóò èñïîëüçîâàòüñÿ
âåçäå â êîìàíäàõ SQL*PLUS è SQL. Çàìåòèì, ÷òî äðóãèå ïðî-
äóêòû ORACLE ìîãóò èñïîëüçîâàòü äðóãèå ñîãëàøåíèÿ äëÿ ïîäñ-
òàíîâîê â SQL êîìàíäàõ.
-42-
SQL*Plus îòîáðàæàåò ïîäñêàçêó íà ýêðàíå âàøåãî òåðìèíàëà è
÷èòàåò âàø îòâåò ñ êëàâèàòóðû , äàæå åñëè òåðìèíàëüíûé ââîä
èëè âûâîä ïåðåíàçíà÷åí ê ôàéëó . Åñëè òåðìèíàë íå äîñòóïåí
(íàïðèìåð, åñëè êîìàíäíûé ôàéë âûïîëíÿåòñÿ â ïàêåòíîì ðåæè-
ìå), èñïîëüçóåòñÿ ôàéë ïåðåíàçíà÷åíèÿ.
Åñëè óêàçàòåëü íà ïåðåìåííóþ ïîäñòàíîâêè äîëæåí ïðîäîëæàòü-
ñÿ ñèìâîëîì , êîòîðûé äîëæåí èíòåðïðåòèðîâàòüñÿ êàê ÷àñòü
èìåíè ïåðåìåííîé , íåîáõîäèìî èñïîëüçîâàòü òî÷êó(.) äëÿ îò-
äåëåíèÿ ïåðåìåííîé îò ïîñëåäóþùåãî ñèìâîëà:
DEFINE E=123
SELECT * FROM EMP WHERE EMPNO='&E.0';
áóäåò èíòåðïðåòèðîâàíî êàê:
SELECT * FROM EMP WHERE EMPNO='1230';
Åñëè ñèìâîë, ñëåäóþùèé çà èìåíåì ïîäñòàâëÿåìîé ïåðåìåííîé ,
ÿâëÿåòñÿ òî÷êîé òî, íåîáõîäèìî íàïèñàòü äâå òî÷êè . Ïåðâàÿ
çàâåðøàåò èìÿ ïåðåìåííîé , à âòîðàÿ èíòåðïðåòèðóåòñÿ êàê
îáû÷íûé ñèìâîë.
DEFINE P =94805
SELECT * FROM INVENTORY WHERE PARTNO='&P..0C';
áóäåò èíòåðïðåòèðîâàíî êàê:
SELECT * FROM INVENTORY WHERE PARTNO='94805.0C';
Îäèíî÷íûé è Äâîéíîé Àìïåðñàíäû : & è &&
----------------------------------------------------------------
Åñëè âû èñïîëüçóåòå ïîäñòàâëÿåìóþ ïåðåìåííóþ ñ îäíèì àìïåð-
ñàíäîì, SQL*Plus íå îïðåäåëÿåò ïåðåìåííóþ ïîñëå çàïðîñà âà-
øåãî çíà÷åíèÿ.Òî åñòü, åñëè SQL*Plus âïîñëåäñòâèè âûïîëíÿåò
òàêóþ æå êîìàíäó ( èëè ïîäîáíóþ åé , ñîäåðæàùóþ òó æå ñàìóþ
ïåðåìåííóþ äëÿ ïîäñòàíîâêè ) , îí áóäåò ñíîâà çàïðàøèâàòü
çíà÷åíèÿ ïåðåìåííûõ.
Åñëè âû èñïîëüçóåòå ïîäñòàâëÿåìóþ ïåðåìåííóþ ñ äâóìÿ àì-
ïåðñàíäàìè, SQL*Plus âûïîëíÿåò îïðåäåëåíèå ïåðåìåííîé ïðè
âûäà÷å ïðèãëàøåíèÿ äëÿ ââîäà çíà÷åíèÿ . Òàê , åñëè ïîçäíåå
SQL*Plus âûïîëíÿåò òàêóþ æå êîìàíäó , îí íå áóäåò çàïðàøè-
âàòü âàñ î ââîäå íîâîãî çíà÷åíèÿ.
Íàïðèìåð, êîìàíäíûé ôàéë STATS äëÿ ïîäñ÷åòà ñòàòèñòè÷åñêèõ
äàííûõ ïîäãðóïï â ÷èñëîâûõ ñòîëáöàõ ìîã áû ñîäåðæàòü
ñëåäóþùåå:
SELECT &&GROUP_COL, MAX(&&NUMBER_COL) MAXIMUM,
MIN(&&NUMBER_COL) MINIMUM,
SUM(&&NUMBER_COL) TOTAL,
AVG(&&NUMBER_COL) AVERAGE
FROM &TABLE
GROUP BY &&GROUP_COL;
-43-
Êîãäà âû çàïóñêàåòå ýòîò êîìàíäíûé ôàéë ( äî òîãî êàê
SQL*Plus âûïîëíèò îïèñàííóþ äàííûì ôàéëîì ïðîöåäóðó)âàì áó-
äåò äàíî ïðèãëàøåíèå íà ââîä çíà÷åíèÿ ïî èìåíè:
Enter value for GROUP_COL: PROJNO
Enter value for NUMBER_COL: SAL
Enter value for TABLE: EMP
PROJNO MAXIMUM MINIMUM TOTAL AVERAGE
------ ------- ------- ------- -------
101 3910 920 28813.8 2881.38
102 5500 800 13050 1864.29
103 1600 1312.5 4225 1408.33
Åñëè âû âíîâü äåëàåòå çàïðîñ âî âðåìÿ òåêóùåãî ñåàíñà, âàì
áóäåò äàíî ïðèãëàøåíèå äëÿ TABLE (ò.ê. åå èìÿ èìååò îäèíî÷-
íûé àìïåðñàíä),íî íå äëÿ GROUP_COL èëè NUMBER_COL (ò. ê. èõ
èìåíà ñîääåðæàò äâîéíûå àìïåðñàíäû).
Îãðàíè÷åíèÿ
----------------------------------------------------------------
Ïîäñòàíîâî÷íûå ïåðåìåííûå íå ìîãóò áûòü èñïîëüçîâàíû â ñëå-
äóþùèõ êîíòåêñòàõ:
* Âûðàæåíèÿ
* Êîìàíäû ðåäàêòèðîâàíèÿ áóôåðà: APPEND, CHANGE, DEL ,
INPUT, LIST.
* Íåêîòîðûå äðóãèå êîìàíäû, ãäå ïîäñòàíîâêà íå èìååò
ñìûñëà, òàêèå êàê HELP,REMARK è TIMING.
SET - ôðàçû äëÿ óïðàâëåíèÿ ïîäñòàíîâêîé
----------------------------------------------------------------
* SET SCAN ðàçðåøàåò èëè çàïðåùàåò çàìåíó.
* SET DEFINE îïðåäåëÿåò èäåíòèôèêàòîð ïîäñòàíîâêè
(îáû÷íî '&').
* SET VERIFY ON çàñòàâëÿåò SQL*Plus îòîáðàçèòü êàæäóþ
ñòðîêó êîìàíäíîãî ôàéëà äî è ïîñëå ïîäñòàíîâêè.
* SET DCLSEP çàäàåò ñèìâîë , êîòîðûé îòäåëÿåò èìÿ ïîä-
ñòàíîâî÷íîé ïåðåìåííîé îò ñèìâîëîâ, êîòîðûå ñëåäóþò
íåïîñðåäñòâåííî çà ïåðåìåííîé.
-44-
ÍÀÈÁÎËÅÅ ÂÀÆÍÛÅ ÔÐÀÇÛ È ÏÎÍßÒÈß
----------------------------------------------------------------
DUMMY Table ( ïóñòàÿ òàáëèöà )
----------------------------------------------------------------
Îïèñàíèå: Íåîáõîäèìîé äëÿ êîìàíäû SELECT ôðàçîé ÿâëÿåòñÿ
FROM . Îäíàêî , èíîãäà îíà ïîëåçíà äëÿ îáðàùåíèÿ êîìàíäû
SELECT, ê ïñåâäî-ñòîëáöó èëè âûðàæåíèþ , íå ñâÿçàííûì ñ êà-
êîé-ëèáî òàáëèöåé .  ýòîì ñëó÷àå äëÿ óäîâëåòâîðåíèÿ òðåáî-
âàíèé ôðàçû FROM îáû÷íî èñïîëüçóåòñÿ ôðàçà FROM DUMMY.
D U M M Y ä î ë æ í à á û ò ü ô à ê ò è ÷ å ñ ê è ñ ó -
ù å ñ ò â ó þ ù å é ò à á ë è ö å é . Îáû÷íî îíà çàäàåòñÿ
ñ îäíèì ñòîëáöîì è îäíîé ñòðîêîé . Èìÿ è îïèñàíèå ñòîëáöà
íå èìåþò çíà÷åíèÿ.
Ïðèìåðû: ×òîáû îòîáðàçèòü òåêóùóþ äàòó, ââåäèòå:
SQL> SELECT SYSDATE FROM DUMMY;
-45-
Ôðàçà FROM
----------------------------------------------------------------
DELETE FROM[èä_ïîëüç.]òàáëèöà...;
SELECT ...
FROM[èä_ïîëüç.]òàáë.[ïñåâäîíèì],[èä_ïîëüç.]
òàáë[@ñâÿçü][ïñåâäîíèì],............;
-----------------------------------------------------------
Îïèñàíèå: FROM - íåîáõîäèìàÿ ôðàçà êîìàíä DELETE è SELECT.
Îíà èäåíòèôèöèðóåò òàáëèöó, èç êîòîðîé óäàëÿþòñÿ ñòðîêè,èëè
òàáëèöû, èç êîòîðûõ âûáèðàþòñÿ ñòðîêè.
Åñëè òàáëèöåé âëàäååò äðóãîé ïîëüçîâàòåëü, èìÿ òàáëèöû äîë-
æíî áûòü óòî÷íåíî ñ ïîìîùüþ èäåíòèôèêàòîðà ïîëüçîâàòåëÿ
ïðèíàäëåæàùåãî âëàäåëüöó. Èäåíòèôèêàòîð ïîëüçîâàòåëÿ è èìÿ
òàáëèöû ðàçäåëÿþòñÿ ñ ïîìîùüþ òî÷êè(.) .
Ïñåâäîíèì èñïîëüçóåòñÿ äëÿ äîñòóïà ê îäíîé è òîé æå òàáëèöå,
óïîìèíàåìîé áîëåå îäíîãî ðàçà âî ôðàçå FROM èëè â ïîäçàïðî-
ñå.
Åñëè òàáëèöà íàõîäèòñÿ â óäàëåííîé áàçå äàííûõ, äîëæåí áûòü
îïèñàí óêàçàòåëü áàçû äàííûõ ê ýòîé áàçå. " @ñâÿçü" îïèñû-
âàåò ëèíèþ ñâÿçè. Åñëè ââîäèòñÿ "ñâÿçü" è íå çàäàåòñÿ ïîëü-
çîâàòåëü, çàïðîñ ïðîâåðÿåòñÿ äëÿ òàáëèöû, ïðèíàäëåæàùåé ïî-
ëüçîâàòåëþ, óêàçàííîìó â îïèñàíèè êàíàëà ñâÿçè áàçû äàííûõ
Êîìàíäû COPY è REVOKE òàêæå èìåþò ôðàçû FROM , ñëóæàùèå äëÿ
äðóãèõ ôóíêöèé. Ýòî îïèñàíèå ê íèì íå îòíîñèòñÿ.
Ïðèìåðû: ×òîáû óäàëèòü ñòðîêó ñî çíà÷åíèåì 50 â ñòîëáöå
DEPTNO èç òàáëèöû ñ èìåíåì EMP, ââåäèòå:
SQL> DELETE FROM EMP WHERE DEPTNO=50;
×òîáû âûáðàòü ñòðîêè ñî çíà÷åíèåì 40 â ñòîëáöå DEPTNO èç
òàáëèöû ñ èìåíåì EMP, ââåäèòå:
SQL> SELECT * FROM EMP WHERE DEPTNO=40;
Äëÿ âûäåëåíèÿ òàêèõ ñòðîê èç äâóõ òàáëèö , íàçâàííûõ EMP è
EMP2, ââåäèòå:
SQL> SELECT * FROM EMP, EMP2
WHERE EMP.EMPNO=EMP2.EMPNO
AND DEPTNO=40;
Åñëè EMP2 ïðèíàäëåæèò äðóãîìó ïîëüçîâàòåëþ ñ èäåíòèôèêàòî-
ðîì BEN, ââåäèòå:
SQL> SELECT * FROM EMP, BEN.EMP2
WHERE EMP.EMPNO=EMP2.EMPNO
WHERE DEPTNO=40;
-46-
Ôðàçû GROUP BY è HAVING
----------------------------------------------------------------
SELECT ...
GROUP BY âûð,âûð,âûð ... HAVING óñëîâèå
...;
-----------------------------------------------------------
Ñâÿçàííûå òåìû: SELECT, Ãðóïïîâûå Ôóíêöèè.
Îïèñàíèå: Èñïîëüçîâàíèå GROUP BY çàñòàâëÿåò SELECT îòîáðà-
çèòü îäíó ñòðîêó äëÿ êàæäîé ãðóïïû âûáðàííûõ ñòðîê ñ îäèíà-
êîâûìè çíà÷åíèÿìè.Âûáîð òàêèõ ãðóïï ñòðîê ìîæåò âûïîëíÿòüñÿ
èç îäíîãî èëè áîëåå óêàçàííûõ ñòîëáöîâ èëè âûðàæåíèé.
Êàæäîå "â û ð" â ïðåäëîæåíèè SELECT äîëæíî èìåòü îäèíàêîâîå
çíà÷åíèå äëÿ êàæäîãî ýëåìåíòà ãðóïïû. Ò.å., îíî äîëæíî áûòü
èëè êîíñòàíòîé,èëè ãðóïïîâîé ôóíêöèåé,òàêîé êàê MAX,èëè îä-
íèì èç ñòîëáöîâ GROUP BY, èëè âûðàæåíèåì, ñîñòàâëåííûì èñê-
ëþ÷èòåëüíî èç òàêèõ ýëåìåíòîâ.
Âûðàæåíèÿ GROUP BY ìîãóò óêàçûâàòü íà ëþáîé ñòîëáåö â òàá-
ëèöàõ ôðàçû FROM â íå çàâèñèìîñòè îò òîãî, óïîìèíàþòñÿ ëè
îíè â ñïèñêå SELECT èëè íåò.
×òîáû óêàçàòü, êàêèå ãðóïïû GROUP BY ðàñïå÷àòûâàòü, èñïîëü-
çóåòñÿ HAVING.Íåîáõîäèìî îòëè÷àòü åå îò WHERE, êîòîðàÿ èñ-
ïîëüçóåòñÿ äëÿ óêàçàíèÿ ñòðîê òàáëèöû âêëþ÷àåìûõ â ãðóïïû.
GROUP BY è HAVING íóæíî óêàçûâàòü ïîñëå WHERE è CONNECT BY
... START WITH. Åñëè ñïåöèôèöèðóþòñÿ è GROUP BY, è HAVING ,
òî îíè ìîãóò áûòü çàäàíû â ëþáîì ïîðÿäêå.
Ïðèìåðû: ×òîáû îòîáðàçèòü íà ýêðàíå ìèíèìàëüíûé è ìàêñè-
ìàëüíûé îêëàä (salary) äëÿ êàæäîãî îòäåëà (departament) èç
EMP, ââåäèòå:
SQL> SELECT DEPTNO, MIN(SAL), MAX(SAL) FROM EMP
2 GROUP BY DEPTNO;
×òîáû èñïîëüçîâàòü ýòîò çàïðîñ òîëüêî äëÿ êîììèâîÿæåðîâ(sa-
lesman), ââåäèòå:
SQL> SELECT DEPTNO, MIN(SAL), MAX(SAL) FROM EMP
2 WHERE JOB='SALESMAN'
3 GROUP BY DEPTNO;
×òîáû ÷åðåç çàïðîñ îòîáðàçèòü òîëüêî òå îòäåëû, äëÿ êîòîðûõ
MIN(SAL) (ìèíèìàëüíûé îêëàä) íèæå 750$, ââåäèòå:
SQL> SELECT DEPTNO, MIN(SAL), MAX(SAL) FROM EMP
2 GROUP BY DEPTNO HAVING MIN(SAL)<750;
-47-
Ñîåäèíåíèÿ â Çàïðîñàõ
---------------------------------------------------------------
SELECT ... FROM òàáë,òàáë,...
WHERE óñëîâèå...;
----------------------------------------------------------
Ñâÿçàííàÿ òåìà: SELECT.
Îïèñàíèå: Êîãäà ñòðîêè âûáèðàþòñÿ èç äâóõ èëè áîëåå òàáëèö,
äëÿ èõ ñîåäèíåíèÿ â ðàçíûõ òàáëèöàõ ìîæåò èñïîëüçîâàòü-
ñÿ ôðàçà WHERE. Ëþáîå ëîãè÷åñêîå âûðàæåíèå âî ôðàçå WHERE,
ñðàâíèâàþùåå ïîëÿ â ðàçëè÷íûõ òàáëèöàõ,îïðåäåëÿåò ñîåäèíå-
íèå ; ñîåäèíÿþòñÿ ñòðîêè, äëÿ êîòîðûõ âûðàæåíèå èñòèííî.
Îïåðàòîð '(+)' ìîæíî èñïîëüçîâàòü ñ ëþáîé ñòîðîíû ëîãè÷åñ-
êîãî âûðàæåíèÿ äëÿ óêàçàíèÿ âíåøíåãî ñîåäèíåíèÿ, ïðè êîòîð-
îì êàæäàÿ ñòðîêà îäíîé òàáëèöû ñîåäèíÿåòñÿ ïî ìåíüøåé ìåðå
ñ îäíîé ñòðîêîé äðóãîé òàáëèöû (óêàçàííîé ñ '(+)'). Åñëè
îòñóòñòâóåò ñòðîêà äëÿ ñîåäèíåíèÿ, òî, ïî ïðàâèëàì ñîåäèíå-
íèÿ , îïðåäåëåííûì ñ ïîìîùüþ ëîãè÷åñêîãî âûðàæåíèÿ , ñòðîêà
ñîåäèíÿåòñÿ ñ ìíèìîé ñòðîêîé , â êîòîðîé âñå ïîëÿ ñîäåðæàò
ïóñòûå çíà÷åíèÿ.
Ïðèìåðû: Ï ð î ñ ò î å ñ î å ä è í å í è å: ×òîáû äëÿ êàæ-
äîãî ñëóæàùåãî îòîáðàçèòü åãî èìÿ,îêëàä(SAL),äîëæíîñòü(JOB),
è íàçâàíèå îòäåëà(DNAME), ãäå íîìåð îòäåëà íå áîëüøå 30,
ââåäèòå:
SQL> SELECT ENAME, SAL, JOB, DNAME
2 FROM EMP, DEPT
3 WHERE EMP, DEPTNO<=30 AND EMP.DEPTNO=
4 DEPT.DEPTNO;
Òàê êàê èíôîðìàöèÿ äëÿ îòîáðàæåíèÿ õðàíèòñÿ â äâóõ ðàçëè÷-
íûõ òàáëèöàõ , òðåáóåòñÿ ñîåäèíåíèå . Ñòðîêè èç äâóõ òàáëèö
ñîåäèíÿþòñÿ ñîãëàñíî ïðàâèëó EMP.DEPTNO=DEPT.DEPTNO.
Çàìåòèì , ÷òî DEPTNO íå îáÿçàòåëüíî äîëæåí áûòü âûáðàí èç
òàáëèöû . Êðîìå òîãî ôðàçà WHERE ( ñ ëîãè÷åñêèì âûðàæåíèåì
DEPTNO<=30 ) èñïîëüçóåòñÿ äëÿ âûäåëåíèÿ ñòðîê òî÷íî òàêæå,
êàê è äëÿ îïèñàíèÿ ñîåäèíåíèÿ.
 í å ø í å å ñ î å ä è í å í è å: ×òîáû îòîáðàçèòü òó æå
ñàìóþ èíôîðìàöèþ, íî îáåñïå÷èòü âûâîä íà ýêðàí êàæäîé âûá-
ðàííîé èç EMP ñòðîêè, äàæå , åñëè DEPT íå ñîäåðæèò ñòðîêè
äëÿ ñîîòâåòñòâåííîãî íîìåðà îòäåëà , íóæíî èñïîëüçîâàòü
îïåðàòîð âíåøíåãî ñîåäèíåíèÿ â DEPT.DEPTNO. Òîãäà, åñëè
ñòðîêà èç EMP íå ñîåäèíèòñÿ ñ êàêîé ëèáî ñòðîêîé èç DEPT,
îíà áóäåò ñëèâàòüñÿ ñ ìíèìîé ñòðîêîé èç NULL-òàáëèö:
SQL> SELECT ENAME, SAL, JOB, DNAME
2 FROM EMP, DEPT
3 WHERE EMP, DEPTNO<=30 AND EMP.DEPTNO=
4 DEPT.DEPTNO(+);
-48-
Îïåðàòîð LIKE
----------------------------------------------------------------
SELECT ...
WHERE ñèìâ LIKE ñèìâ ...;
-----------------------------------------------------------
Ñâÿçàííàÿ òåìà: Ëîãè÷åñêèå îïåðàòîðû.
Îïèñàíèå: Êîãäà ôðàçà WHERE ïðèìåíÿåòñÿ äëÿ ñèìâîëüíîãî
ñòîëáöà , îïåðàòîð LIKE ïðåäïî÷òèòåëüíåå èñïîëüçîâàòü äëÿ
ñðàâíåíèÿ ñèìâîëüíîãî ñòîëáöà ñ øàáëîíîì, íåæåëè ñ ôèêñèðî-
âàííîé âåëè÷èíîé.
Ñèìâîëüíûé øàáëîí ìîæåò âêëþ÷àòü äâà ñïåöèàëüíûõ ñèìâîëà,
êîòîðûå ìîãóò îòîæäåñòâëÿòü ðàçëè÷íûå ñèìâîëû â ñòîëáöå.
Ñïåöèàëüíûé ñèìâîë '_'(ñèìâîë ïîä÷åðêèâàíèÿ) ñîïîñòàâëÿåòñÿ
ñ êàêèì-ëèáî îäèíî÷íûì ñèìâîëîì.Ñïåöèàëüíûé ñèìâîë '%'ñîîò-
âåòñòâóåò ëþáîé ïîñëåäîâàòåëüíîñòè ñèìâîëîâ,âêëþ÷àÿ íóëåâûå
ñèìâîëû.
LIKE ìîæåò áûòü èñïîëüçîâàí â ëþáîì ëîãè÷åñêîì âûðàæåíèè,
ñîäåðæàùåì ñèìâîëüíûå çíà÷åíèÿ, à íå òîëüêî äëÿ ôðàçû WHERE
êîìàíäû SELECT.
Êîãäà îïåðàòîð LIKE èñïîëüçóåòñÿ äëÿ ïîèñêà ïî øàáëîíó èí-
äåêñèðîâàííîãî ñòîëáöà, ñêîðîñòíîå ïðåèìóùåñòâî èíäåêñèðî-
âàíèÿ ïîíèæàåòñÿ, åñëè ïåðâûì ñèìâîëîì â øàáëîíå ÿâëÿåòñÿ
'_' èëè '%'.Åñëè ïåðâûì ñèìâîëîì â øàáëîíå ÿâëÿåòñÿ îáû÷íûé
ñèìâîë , ñêîðîñòíîå ïðåèìóùåñòâî ðåàëèçóåòñÿ â íàèáîëüøåé
ñòåïåíè,ò.ê., ORACLE ìîæåò îãðàíè÷èâàòü ñðàâíåíèå ñòðîê,êî-
òîðûå íà÷èíàþòñÿ çàäàííûì ïåðâûì ñèìâîëîì.
Ïðèìåðû: Ôðàçà "WHERE ENAME='SMITH%'" èñòèííà äëÿ òàêèõ
çíà÷åíèé, êàê SMITH,SMITHE,SMITHERS è ò.ä.
Ïðåäëîæåíèå "...WHERE ENAME='SMITH_'" èñòèííî äëÿ òàêèõ
çíà÷åíèé, êàê SMITHE,SMITHY,SMITHS è ò.ä., íî íå äëÿ SMITH,
òàê êàê ñïåöèàëüíûé ñèìâîë '_' äîëæåí îòîæäåñòâëÿòüñÿ ïðè
ñðàâíåíèè ñ îäíèì è òîëüêî îäíèì ñèìâîëîì.
-49-
Ïóñòûå Âåëè÷èíû ( Null Values )
----------------------------------------------------------------
Ïîëå â ñòîëáöå ëþáîãî òèïà ìîæåò èìåòü ïóñòîå çíà÷åíèå. Òà-
êèå çíà÷åíèÿ ïðèñâàèâàþòñÿ, êîãäà äåéñòâèòåëüíàÿ âåëè÷èíà
íåèçâåñòíà èëè, íå èìååò çíà÷åíèÿ. Ïóñòîå çíà÷åíèå â ÷èñëî-
âîì ñòîëáöå íå ýêâèâàëåíòíî íóëåâîìó.
Ôóíêöèÿ NVL ïðåîáðàçóåò ïóñòîå çíà÷åíèå ê âåëè÷èíå äðóãîãî
òèïà. Íàïðèìåð, NVL(COMM,0) âîçâðàùàåò 0,åñëè ÑÎÌÌ ÿâëÿåòñÿ
ïóñòûì è çíà÷åíèå COMM, åñëè COMM - íå ïóñòàÿ âåëè÷èíà.
Ãðóïïîâûå ôóíêöèè èãíîðèðóþò ïóñòûå çíà÷åíèÿ . Íàïðèìåð, â
çàïðîñå, êîòîðûé âûáèðàåò çíà÷åíèÿ 1000, NULL, NULL, NULL è
2000 äëÿ COMM , âåëè÷èíà AVG(COMM) ðàâíà 1500, ïîòîìó ÷òî
(1000+2000)/2=1500
Îñòàëüíûå ôóíêöèè è âûðàæåíèÿ âîçâðàùàþò ïóñòîå çíà÷åíèå ,
åñëè àðãóìåíò èìååò ïóñòîå çíà÷åíèå . Íàïðèìåð , çíà÷åíèå
NULL+1000 ðàâíî NULL,âåëè÷èíà GREATES(NULL,1000) ðàâíà òàê-
æå NULL.
 ëîãè÷åñêèõ ôðàçàõ òåñòèðîâàòü íà NULL íåîáõîäèìî ñ èñïî-
çîâàíèåì âûðàæåíèé ïîäîáíûõ COMM IS NULL èëè COMM IS NOT
NULL. Âûðàæåíèÿ, ïîäîáíûå COMM=NULL, COMM!=NULL, COMM!=1000
íå áóäóò âîçâðàùàòü ïóñòûå çíà÷åíèÿ.
Ñèìâîëüíûå âåëè÷èíû íóëåâîé äëèíû èíòåðïðåòèðóþòñÿ êàê ïóñ-
òàÿ âåëè÷èíà.
-50-
Ôðàçà ORDER BY
----------------------------------------------------------------
SELECT ...
ORDER BY {âûðàæ|N_ïîçèöèè} [ASC]|DESC],.......;
-----------------------------------------------------------
Ñâÿçàííàÿ òåìà: êîìàíäà SELECT
Îïèñàíèå: îïåðàòîð ORDER BY èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ
ïîðÿäêà, â êîòîðîì ðåçóëüòàòû çàïðîñà áóäóò îòîáðàæàòüñÿ íà
äèñïëåå.
Êàæäîå "âûðàæ" ÿâëÿåòñÿ âûðàæåíèåì , áàçèðóþùåìñÿ íà îäíîì
èëè áîëåå ñòîëáöàõ â îïåðàòîðå SELECT. Êàæäûé "N_ïîçèöèè"
ÿâëÿåòñÿ ÷èñëîì, èäåíòèôèöèðóþùèì ïîçèöèþ ýëåìåíòà äàííûõ â
îïåðàòîðå SELECT. Åñëè èñïîëüçóþòñÿ îïåðàòîðû UNION, MINUS,
INTERSECT, ïîëüçîâàòåëü äîëæåí óêàçûâàòü ýëåìåíòû äàííûõ
ORDER BY ñ ïîìîùüþ "N_ïîçèöèè".
Ñòðîêè óïîðÿäî÷èâàþòñÿ ñ ïîìîùüþ çíà÷åíèÿ èç ïåðâîãî "âû-
ðàæ" èëè "N_ïîçèöèè" . Ñòðîêè ñ îäíèìè è òåìè æå çíà÷åíèÿìè
óïîðÿäî÷èâàþòñÿ ñ ïîìîùüþ çíà÷åíèÿ ñëåäóþùåãî ýëåìåíòà (åñ-
ëè îí óêàçàí) è ò.ä..
ASC èëè DESC çàäàåò ïîðÿäîê âîçðàñòàíèÿ èëè óáûâàíèÿ . Ïóñ-
òûå çíà÷åíèÿ ïðåäøåñòâóþò âñåì îñòàëüíûì è â ïîðÿäêå âîç-
ðàñòàíèÿ, è â ïîðÿäêå óáûâàíèÿ.
ORDER BY äîëæåí áûòü óêàçàí ïîñëå âñåõ îñòàëüíûõ ôðàç,
èñêëþ÷àÿ FOR UPDATE OF.
Åñëè îïðåäåëåíû è ORDER BY, è DISTINCT , òî ORDER BY íå ìî-
æåò ññûëàòüñÿ íà ñòîëáöû , êîòîðûå íå óïîìèíàþòñÿ â êîìàíäå
SELECT.
Åñëè ORDER BY íå óêàçàí, ïîðÿäîê , â êîòîðîì ñòðîêè âûáèðà-
þòñÿ èç òàáëèöû, íå îïðåäåëÿåòñÿ è ìîæåò âàðüèðîâàòüñÿ îò
îäíîãî çàïðîñà ê äðóãîìó.
Ïðèìåð: ×òîáû âûáðàòü âñå çàïèñè î êîììèâîÿæåðàõ èç EMP è
ñïèñîê èõ ïîðó÷åíèé â íèñõîäÿùåì ïîðÿäêå, ââåäèòå:
SQL> SELECT * FROM EMP WHERE JOB='SALESMAN'
2 ORDER BY COMM DESC;
-51-
Ïîäçàïðîñû è Âëîæåííûå Çàïðîñû
----------------------------------------------------------------
COPY ... USING çàïðîñ;
CREATE ... AS çàïðîñ;
DELETE ... WHERE ñòîëáåö=(ïîäçàïðîñ)...;
INSERT ... çàïðîñ;
SELECT ... çàïðîñ;
UPDATE ...
SET (ñòîëáåö,ñòîëáåö,...)=(ïîäçàïðîñ)
[WHERE óñëîâèå];
... WHERE ñòîëáåö=(ïîäçàïðîñ)...;
Ñâÿçàííûå òåìû: Êîìàíäà COPY; êîìàíäà CREATE ... AS; êîìàí-
äà CREATE TABLE;CREAT VIEW; êîìàíäà DELETE; êîìàíäà INSERT;
êîìàíäà SELECT; êîìàíäà UPDATE.
Îïèñàíèå: Çàïðîñ ìîæåò áûòü èñïîëüçîâàí âî ôðàçå äðóãîé
êîìàíäû, òàêîé êàê SELECT èëè UPDATE. Òàêàÿ êîìàíäà SELECT
íàçûâàåòñÿ "ïîäçàïðîñîì" , êîãäà îíà çàêëþ÷åíà â êðóãëûå
ñêîáêè (íàïðèìåð,â SELECT), è "çàïðîñîì", êîãäà ýòî íå òðå-
áóåòñÿ ïî ñèíòàêñèñó (íàïðèìåð , â CREATE TABLE èëè INSERT,
èëè â ñîåäèíåíèè ñ îïåðàòîðîì çàïðîñà). Çäåñü è äàëåå òàêèå
êîìàíäû áóäóò íàçûâàòüñÿ ïîäçàïðîñîì . Ñòðîêè , âûáèðàåìûå
ñ ïîìîùüþ ïîäçàïðîñà, íå îòîáðàæàþòñÿ íà ýêðàíå;âìåñòî ýòî-
ãî îíè ïîäàþòñÿ â êîìàíäó SQL, âêëþ÷àþùóþ ïîäçàïðîñ îäíèì
èç ñëåäóþùèõ ñïîñîáîâ:
* Åñëè ïîäçàïðîñ èñïîëüçóåòñÿ ñ ïðàâîé ñòîðîíû ëîãè÷.
âûðàæåíèé èëè ñîñòàâíûõ âûðàæåíèé, îí áóäåò âîçâðà-
ùàòü îäèíî÷íîå çíà÷åíèå èëè êîëîíêó çíà÷åíèé. Ýòî(è)
çíà÷åíèå(èÿ) ñðàâíèâàþòñÿ ñî çíà÷åíèåì(ÿìè) ëåâîé
ñòîðîíû âûðàæåíèÿ ñïîñîáîì, óêàçàííûì ñ ïîìîùüþ îïå-
ðàòîðà, ñâÿçûâàþùåãî äâå ñòîðîíû.
* Åñëè ïîäçàïðîñ èñïîëüçóåòñÿ , ÷òîáû óêàçàòü çíà÷åíèÿ
â CREATE TABLE, INSERT èëè UPDATE, îí áóäåò âîçâðà-
ùàòü îäíî çíà÷åíèå äëÿ êàæäîãî ââåäåííîãî èëè îáíîâ-
ëåííîãî ñòîëáöà . Ýòî(è) çíà÷åíèå(èÿ) èñïîëüçóþòñÿ
äëÿ âñòàâêè èëè îáíîâëåíèÿ çàäàííûõ ñòðîê.
Ôðàçû ORDER BY è FOR UPDATE OF íå ìîãóò èñïîëüçîâàòñÿ â
ïîäçàïðîñå
Ê î ð ð å ë ÿ ò è â í û é ï î ä ç à ï ð î ñ èñïîëüçóåòñÿ
òîëüêî â ïðåäëîæåíèè WHERE êîìàíäû SELECT UPDATE èëè êîìàí-
äû DELETE. Îí óêàçûâàåò íà èìÿ ïñåâäîíèìà äëÿ òàáëèöû , èñ-
ïîëüçóåìîé êîìàíäîé SELECT,è îïðåäåëÿåòñÿ îäèí ðàç äëÿ êàæ-
äîé ñòðîêè, ïðîñìàòðèâàåìîé êîìàíäîé SELECT äëÿ âûáîðà.
-52-
Âíóòðåííèé çàïðîñ ìîæåò óêàçûâàòü íà ñòðîêó èç âíåøíåãî çà-
ïðîñà. Òàêîå óêàçàíèå ìîæåò ïîÿâëÿòüñÿ è â ïåðå÷íå SELECT è
/èëè ôðàçå WHERE. Ñòîëáöû äëÿ ÿñíîñòè ìîãóò áûòü ïðåôèêñè-
ðîâàíû èìåíåì òàáëèöû. Åñëè òàáëèöû âî âíóòðåííåì çàïðîñå
ñîäåðæàò ñòðîêè ñ îäèíàêîâûìè èìåíàìè , òî óêàçàòåëü âíå-
øíåãî çàïðîñà äîëæåí áûòü ïðåôèêñèðîâàí èìåíåì òàáëèöû.
Íåîïðåäåëåííûå ñòîëáöû â ïîäçàïðîñå èùóòñÿ â òàáëèöàõ ýòîãî
çàïðîñà, çàòåì â òàáëèöàõ ñëåäóþùåãî âíåøíåãî çàïðîñà è ò.ä.
Ïðèìåðû: Äëÿ ïîèñêà ñëóæàùèõ, íàõîäÿùèõñÿ â ×èêàãî, êîòîðûå
èìåþò òàêóþ æå ðàáîòó , êàê Àëëåí , íåîáõîäèìî èñïîëüçîâàòü
ïîäçàïðîñ , âûáèðàþùèé JOB ( ðàáîòà ) èç ñòðîêè , â êîòîðîé
ENAME , èñïîëüçóåìîå âî ôðàçå WHERE , âûäåëÿþùåé ñòðîêè ñ
îäèíàêîâûì ïàðàìåòðîì JOB, çàäàåòñÿ êàê ALLEN.
SQL> SELECT ENAME, LOC, SAL, JOB
2 FROM EMP, DEPT
3 WHERE LOC='CHICAGO'
4 AND JOB IN
5 (SELECT JOB
6 FROM EMP
7 WHERE ENAME ='ALLEN')
8 ORDER BY DEPTNO;
Çàìåòèì , ÷òî óñëîâèåì WHERE ÿâëÿåòñÿ JOB IN... , à íå
JOB=... , òàê êàê ïîäçàïðîñ âîçâðàùàåò íå çíà÷åíèå ïîëÿ,
à òàáëèöó , õîòÿ ýòîò çàïðîñ âîçâðàùàåò òàáëèöó òîëüêî ñ
îäíèì ñòîëáöîì è ( åñëè âñå èäåò óñïåøíî ) òîëüêî ñ îäíîé
ñòðîêîé.
Äëÿ îòîáðàæåíèÿ èíôîðìàöèè î ñëóæàùèõ, ÷åé îêëàä ïðåâûøàåò
ñðåäíèé îêëàä èõ îòäåëà, âû äîëæíû èñïîëüçîâàòü êîððåëÿòèâ-
íûé ïîäçàïðîñ. Ýòî äåëàåòñÿ ïðè ïîìîùè ïðèñâàèâàíèÿ ïñåâäî-
íèìà äëÿ EMP òàáëèöû, êîòîðàÿ ñîäåðæèò èíôîðìàöèþ îá îêëà-
äàõ è ññûëêè ê ýòîìó ïñåâäîíèìó â ïîäçàïðîñå:
SQL> SELECT DEPTNO, ENAME, SAL
2 FROM EMP X
3 WHERE SAL > (SELECT AVG(SAL)
4 FROM EMP
5 WHERE X.DEPTNO=DEPTNO)
6 ORDER BY DEPTNO;
Âíåøíèé çàïðîñ äëÿ êàæäîé ñòðîêè èç EMP èñïîëüçóåò âíóòðå-
ííèé(êîððåëÿòèâíûé) ïîäçàïðîñ äëÿ âû÷èñëåíèÿ ñðåäíåãî îêëà-
äà ñëóæàùèõ îäíîãî è òîãî æå îòäåëà ( DEPTNO ýòî DEPTNO
ñòðîêè, ïðîñìàòðèâàåìîé äëÿ âûáîðà ïîñðåäñòâîì êîððåëÿòèâ-
íîãî ïîäçàïðîñà, ýêâèâàëåíòíî X.DEPTNO - çíà÷åíèþ â ñòðîêå
âûáèðàåìîé ñ ïîìîùüþ âíåøíåãî çàïðîñà ).
Ïðèìå÷àíèå: ïðèìåðû ïîäçàïðîñîâ äëÿ CREATE TABLE, INSERT è
UPDATE ïðåäñòàâëåíû â îïèñàíèè êàæäîé êîìàíäû â îòäåëüíîñ-
òè.
-53-
Ôðàçà WHERE
----------------------------------------------------------------
DELETE FROM [èä_ïîëüç.]òàáë ...
WHERE óñëîâèå;
SELECT ...
WHERE óñëîâèå...;
UPDATE òàáë [ïñåâäîíèì] ...
[WHERE óñëîâèå];
-----------------------------------------------------------
Ñâÿçàííûå òåìû: Ëîãè÷åñêèå Îïåðàòîðû ; êîìàíäà DELETE ; êî-
ìàíäà SELECT; êîìàíäà UPDATE.
Îïèñàíèå: Çàäàåò óñëîâèå. Êîìàíäà, ñîäåðæàùàÿ ôðàçó WHERE
áóäåò äåéñòâèòåëüíà òîëüêî â ñòðîêàõ, êîòîðûå óäîâëåòâîðÿþò
"óñëîâèþ".
Óñëîâèå îïðåäåëÿåòñÿ ñ ïîìîùüþ ëîãè÷åñêîãî âûðàæåíèÿ.Íàïðè-
ìåð, 'DEPTNO=30' ÿâëÿåòñÿ ëîãè÷åñêèì âûðàæåíèåì,êîòîðîå èñ-
òèííî,åñëè âåëè÷èíà DEPTNO ðàâíà 30,â ïðîòèâíîì ñëó÷àå çíà-
÷åíèå âûðàæåíèÿ áóäåò ëîæíûì.
AND èëè OR ìîãóò áûòü èñïîëüçîâàíû äëÿ ôîðìèðîâàíèÿ ñîñ-
òàâíûõ ëîãè÷åñêèõ âûðàæåíèé. Íàïðèìåð, âûðàæåíèå 'DEPTNO=30
AND JOB='SALESMAN' èñòèííî , êîãäà èñòèííû îáà êîìïîíåíòà
âûðàæåíèÿ.
NOT ìîæåò èñïîëüçîâàòüñÿ äëÿ ëîãè÷åñêîãî îòðèöàíèÿ çíà÷åíèÿ
âûðàæåíèÿ. Íàïðèìåð,'NOT(DEPTNO=30 AND JOB='SALESMAN')' ÿâ-
ëÿåòñÿ èñòèííûì, åñëè "DEPTNO=30 AND JOB='SALESMAN'" ,áóäåò
ëîæíûì, è íàîáîðîò.
"Óñëîâèå" ìîæåò ñîäåðæàòü îïåðàòîðû âêëþ÷åíèÿ , òàêèå , êàê
IN èëè EXISTS , çà êîòîðûìè ñëåäóåò (ïîä)çàïðîñ . Îíî áóäåò
èñòèííûì,åñëè ïîäçàïðîñ óäîâëåòâîðÿåò îïåðàòîðó âêëþ÷åíèÿ.
Ïðèìåðû:Ñëåäóþùàÿ êîìàíäà âûäåëÿåò âñå ñòðîêè , â êîòîðûõ
çíà÷åíèå DEPTNO íå ðàâíî 30:
SQL> SELECT * FROM EMP WHERE DEPTNO!=30;
Ñëåäóùàÿ êîìàíäà îáíîâëÿåò âñå ñòðîêè , â êîòîðûõ çíà÷åíèå
COMM áóäåò ïóñòûì(NULL):
SQL> UPDATE EMP SET (SAL)=(1.1*SAL) WHERE COMM IS
2 NULL;
Ñëåäóþùàÿ êîìàíäà óäàëÿåò èç EMP âñå ñòðîêè, êîòîðûå èìåþò
çíà÷åíèå DEPTNO, íå íàéäåííîå â òàáëèöå DEPT:
SQL> DELETE FROM EMP WHERE NOT EXISTS
2 (SELECT * FROM DEPT WHERE DEPT.DEPTNO=
3 EMP.DEPTNO);
-54-
Ã Ë À  À 2
ÑÏÐÀÂÎ×ÍÈÊ ÊÎÌÀÍÄ
------------------------------------------------------------------------
ÑÎÄÅÐÆÀÍÈÅ
ÂÂÅÄÅÍÈÅ................................57
Êîìàíäû SQL , êðàòêîå îïèñàíèå..........58
Êîìàíäû SQL*Plus , êðàòêîå îïèñàíèå.....60
@.......................................63
#.......................................64
/ ......................................66
/*...*/.................................67
ALTER PARTITION (Èçìåíèòü ðàçäåë).......68
ALTER SPACE (Èçìåíèòü ïðîñòðàíñòâî).....69
ALTER TABLE (Èçìåíèòü òàáëèöó)..........70
ACCEPT (Ïðèíÿòü)........................71
APPEND (Äîáàâèòü).......................72
AUDIT (Ñëåæåíèå)........................73
BREAK (Ïðåðâàòü)........................75
BTITLE (Çàãîëîâîê âíèçó)................77
CHANGE (Èçìåíèòü).......................79
CLEAR (Î÷èñòèòü)........................80
COLUMN (Ñòîëáåö)........................81
COMMENT (Êîììåíòàðèé)...................86
COMMIT (Âíåñòè èçìåíåíèÿ)...............87
COMPUTE (Âû÷èñëèòü).....................88
CONNECT (Ñîåäèíèòü).....................90
COPY (Êîïèðîâàòü).......................91
-55-
CREATE CLUSTER (Ñîçäàòü êëàñòåð)........93
CREATE DATABASE lINK (Ñîçäàòü ñâÿçü
......................ñ áàçîé äàííûõ)...95
CREATE INDEX (Ñîçäàòü èíäåêñ)...........97
CREATE PARTITION (Ñîçäàòü ðàçäåë).......99
CREATE SPACE (Ñîçäàòü ïðîñòðàíñòâî).....100
CREATE SYNONYM (Ñîçäàòü ñèíîíèì)........101
CREATE TABLE (Ñîçäàòü òàáëèöó)..........102
CREATE VIEW (Ñîçäàíèå ýêðàííîé ôîðìû)...104
DEFINE (Îïðåäåëèòü).....................106
DEL (Óäàëèòü èç áóôåðà).................108
DELETE (Óäàëèòü èç òàáëèöû).............109
DESCRIBE (Îïèñàòü)......................110
DISCONNECT (Ðàçúåäèíèòü)................111
DOCUMENT (Äîêóìåíò).....................112
DROP CLUSTER (Óäàëèòü êëàñòåð)..........113
DROP DATABASE LINK (Îòìåíèòü ñâÿçü
....................ñ áàçîé äàííûõ).....114
DROP INDEX (Óäàëèòü èíäåêñ).............115
DROP SPACE (Óäàëèòü ïðîñòðàíñòâî).......116
DROP SYNONYM (Óäàëèòü ñèíîíèì)..........117
DROP TABLE (Óäàëèòü òàáëèöó)............118
DROP VIEW (Óäàëèòü ýêðàííóþ ôîðìó)......119
EDIT (Ðåäàêòèðîâàíèå)...................120
EXIT (Âûõîä)............................121
GET (Ïðî÷èòàòü â áóôåð).................122
GRANT (Ïðåäîñòàâèòü)....................123
HELP (Ïîëó÷åíèå âñïîìîãàòåëüíîé
........èíôîðìàöèè).....................125
-56-
HOST (Âûïîëíåíèå êîìàíä îïåðàöèîííîé
......ñèñòåìû)..........................127
INPUT (Ââåñòè)..........................128
INSERT (Âñòàâèòü).......................130
LIST (Âûâåñòè ñïèñîê)...................131
LOCK TABLE (Áëîêèðîâàòü òàáëèöó)........132
NEWPAGE (Íîâàÿ ñòðàíèöà)................133
NOAUDIT (Îòìåíèòü ñëåæåíèå).............134
PAUSE (Ïàóçà)...........................135
QUIT (Çàâåðøåíèå ðàáîòû)................136
REMARK (Ïðèìå÷àíèå).....................137
RENAME (Ïåðåèìåíîâàíèå).................138
REVOKE (Îòìåíà ïðèâèëåãèé)..............139
ROLLBACK (Îòìåíèòü âíåñåíèå èçìåíåíèé)..141
SAVE (Ñîõðàíèòü)........................142
SELECT (Âûáîð)..........................143
SET (Óñòàíîâèòü)........................146
SHOW (Ïîêàçàòü).........................155
SPOOL (Áóôåðèçàöèÿ ââîäà/âûâîäà)........157
SQLPLUS.................................158
START (Çàïóñê êîìàíäíîãî ôàéëà).........160
TIMING (Õðîíîìåòðàæ)....................161
TTILE (Çàãîëîâîê âíèçó).................162
UNDEFINE (Îòìåíèòü îïðåäåëåíèå).........163
UPDATE (Êîððåêòèðîâêà)..................164
VALIDATE INDEX (Ïðîâåðèòü èíäåêñ).......166
-57-
ÂÂÅÄÅÍÈÅ
----------------------------------------------------------------
Ýòà ãëàâà ñîäåðæèò äåòàëüíîå îïèñàíèå âñåõ êîìàíä SQL è SQL
*PLUS. Êîìàíäû ïðåäñòàâëåíû â àëôàâèòíîì ïîðÿäêå. Êàæäîå
îïèñàíèå ñîäåðæèò ñëåäóþùèå ÷àñòè:
* Ôîðìàò : ïîêàçûâàåò ôîðìàò ââîäà êîìàíäû.Óñëîâíûå îáî-
çíà÷åíèÿ, èñïîëüçóåìûå â ýòîé ãëàâå, îáüÿñíÿ-
þòñÿ íèæå.
* Òèï : ïîêàçûâàåò, ÿâëÿåòñÿ ëè êîìàíäà êîìàíäîé SQL,
êîìàíäîé SQL*PLUS, èëè êîìàíäîé äðóãîãî òèïà
(íàïðèìåð, êîìàíäîé îïåðàöèîííîé ñèñòåìû ).
* Îïèñàíèå: ïîêàçûâàåò, êàê è ãäå èñïîëüçîâàòü êîìàíäó.
* Ïðèìåðû : ïîêàçûâàþò ïðèìåðû èñïîëüçîâàíèÿ êîìàíä.
Äâå ñïðàâî÷íûå òàáëèöû ñîäåðæàò ñïèñîê êîìàíä SQL è
SQL*PLUS. Êàæäàÿ êîìàíäà ñîäåðæèò êðàòêîå îïèñàíèå.
Ïðèìå÷àíèå: â Pro*ORACLE (êîìàíäíûå ôàéëû ORACLE) ìîãóò èñ-
ïîëüçîâàòüñÿ òîëüêî êîìàíäû SQL(íî íå SQL*PLUS).
-58-
Êîìàíäû SQL, êðàòêîå îïèñàíèå
----------------------------------------------------------------
Êîìàíäà Îïèñàíèå
-----------------------------------------------------------
/*...*/ Êîììåíòàðèé âíóòðè èëè äî êîìàíäû.
ALTER PARTITION Äîáàâëÿåò ôàéë ê ðàçäåëó áàçû äàí-
íûõ.
ALTER SPACE Èçìåíÿåò îïðåäåëåíèå ïðîñòðàíñòâà.
ALTER TABLE Äîáàâëÿåò èëè ïåðåîïðåäåëÿåò ñòîë-
áåö â ñóùåñòâóþùåé òàáëèöå.
AUDIT Çàñòàâëÿåò ORACLE ñëåäèòü çà èñ-
ïîëüçîâàíèåì òàáëèö,ýêðàííûõ ôîðì,
ñèíîíèìîâ èëè äðóãèõ ñèñòåìíûõ
ñðåäñòâ.
COMMENT Âêëþ÷àåò êîììåíòàðèé îòíîñèòåëüíî
ò à á ë è ö û èëè ñ ò î ë á ö à
â ñëîâàðü äàííûõ.
CREATE CLUSTER Ñîçäàåò êëàñòåð, êîòîðûé ìîæåò ñî-
äåðæàòü äâå èëè áîëåå òàáëèö.
CREATE DATABASE LINK Ñîçäàåò ñâÿçü ñ èìåíåì ïîëüçîâàòå-
ëÿ â óäàëåííîé áàçå äàííûõ.
CREATE INDEX Ñîçäàåò èíäåêñ äëÿ òàáëèöû.
CREATE PARTITION Ñîçäàåò íîâûé ðàçäåë â áàçå äàííûõ.
CREATE SPACE Ñîçäàåò îïèñàíèå ïðîñòðàíñòâà, êî-
òîðîå çàòåì ìîæåò áûòü èñïîëüçîâà-
íî äëÿ îïèñàíèÿ êîíôèãóðàöèè òàá-
ëèöû.
CREATE SYNONYM Ñîçäàåò ñèíîíèì äëÿ èìåíè òàáëè-
öû èëè ýêðàííîé ôîðìû.
CREATE TABLE Ñîçäàåò òàáëèöó è îïðåäåëÿåò åå
ñòîëáöû è äðóãèå ñâîéñòâà.
CREATE VIEW Îïðåäåëÿåò ýêðàííóþ ôîðìó äëÿ îä-
íîé èëè áîëåå òàáëèö è/èëè äðóãèõ
ýêðàííûõ ôîðì.
DELETE Óäàëÿåò ñòðîêè èç òàáëèöû.
-59-
Êîìàíäà Îïèñàíèå
-----------------------------------------------------------
DROP Óäàëÿåò êëàñòåð,ñâÿçü ñ áàçîé äàí-
íûõ è ò.ä. èç áàçû äàííûõ.
GRANT Ñîçäàåò èäåíòèôèêàòîðû ïîëüçîâàòå-
ëåé, íàçíà÷àåò ïàðîëè,ïðåäîñòàâëÿ-
åò ïîëüçîâàòåëÿì ïðèâèëåãèè ORACLE
è ïðèâèëåãèè ïðè ðàáîòå ñ òàáëèöà-
ìè è ýêðàííûìè ôîðìàìè
INSERT Äîáàâëÿåò íîâóþ ñòðîêó ê òàáëèöå
èëè ýêðàííîé ôîðìå.
LOCK TABLE Áëîêèðóåò òàáëèöó,ðàçðåøàÿ ïîëüçî-
âàòåëþ ðàçäåëÿòü äîñòóï ê íåé ñ
äðóãèìè ïîëüçîâàòåëÿìè, â òî æå
âðåìÿ ñîõðàíÿÿ åå öåëîñòíîñòü.
NOAUDIT ×àñòè÷íî èëè ïîëíîñòüþ îòìåíÿåò
ýôôåêò ïðåäûäóùåé êîìàíäû AUDIT
èëè îïöèè ñëåæåíèÿ â òàáëèöå
DEFAULT ; çàñòàâëÿåò ORACLE ïðå-
êðàòèòü ñëåæåíèå çà èñïîëüçîâàíèåì
òàáëèöû, ýêðàííîé ôîðìû, ñèíîíèìà
èëè ñèñòåìíîãî ñðåäñòâà.
RENAME Èçìåíÿåò èìÿ òàáëèöû,ýêðàííîé ôîð-
ìû èëè ñèíîíèìà.
REVOKE Îòìåíÿåò ïðèâèëåãèè áàçû äàííûõ
èëè ïðèâèëåãèè äîñòóïà ïîëüçîâàòå-
ëåé ê òàáëèöå.
SELECT Âûïîëíÿåò çàïðîñ ; âûáèðàåò ñòðîêè
è ñòîëáöû èç îäíîé èëè áîëåå
òàáëèö.
UPDATE Èçìåíÿåò çíà÷åíèÿ ïîëåé òàáëèöû.
VALIDATE INDEX Êîíòðîëèðóåò êîððåêòíîñòü èíäåêñà
òàáëèöû.
-60-
Êîìàíäû
SQL*Plus,êðàòêîå îïèñàíèå
----------------------------------------------------------------
Êîìàíäà Îïèñàíèå
-----------------------------------------------------------
@ Âûïîëíÿåò êîìàíäíûé ôàéë.
# Çàêàí÷èâàåò ïîñëåäîâàòåëüíîñòü
ñòðîê êîììåíòàðèåâ, íà÷àòûõ ñ ïî-
ìîùüþ êîìàíäû DOCUMENT.
$ Âûïîëíÿåò êîìàíäû áàçîâîé îïåðàöè-
îííîé ñèñòåìû,íå ïîêèäàÿ SQL*Plus.
Ýêâèâàëåíòíî HOST.
/ Çàïóñêàåò êîìàíäó â áóôåðå SQL.
ACCEPT Ïðèãëàøàåò ïîëüçîâàòåëÿ äëÿ ââîäà
è íàçíà÷àåò îòâåò â êà÷åñòâå çíà-
÷åíèÿ ïîëüçîâàòåëüñêîé ïåðåìåííîé.
APPEND Äîáàâëÿåò òåêñò ê êîíöó òåêóùåé
ñòðîêè â òåêóùåì áóôåðå.
BREAK Óêàçûâàåò, ÷òî ïðîèçîéäåò â ñëó÷àå
ïðåðûâàíèÿ è êàêèå äåéñòâèÿ âûïîë-
íÿþòñÿ ïðè ïðåðûâàíèè.
BTITLE Çàñòàâëÿåò SQL îòîáðàçèòü çàãîëî-
âîê âíèçó êàæäîé ñòðàíèöû îò÷åòà.
CHANGE Èçìåíÿåò ñîäåðæèìîå òåêóùåé ñòðîêè
òåêóùåãî áóôåðà.
CLEAR Î÷èùàåò îïèñàíèÿ ïðåðûâàíèé, òåêñò
òåêóùåãî áóôåðà, îïèñàíèÿ ñòîëáöîâ
è ò.ä.
COLUMN Îïðåäåëÿåò, êàê äîëæíû áóäóò ôîð-
ìàòèðîâàòüñÿ â îò÷åòå ñòîëáöû è
çàãîëîâêè ñòîëáöîâ.
COMMIT Âíîñèò èçìåíåíèÿ äëÿ áàçó äàííûõ,
ïðîèçâåäåííûå ïîñëå ïîñëåäíåé
COMMIT.
COMPUTE Âûïîëíÿåò âû÷èñëåíèÿ â ãðóïïàõ âû-
áðàííûõ ñòðîê.
CONNECT Ïðåêðàùàåò ðåãèñòðàöèþ ñ òåêóùèì
èìåíåì ïîëüçîâàòåëÿ è âûïîëíÿåò
ðåãèñòðàöèþ âíîâü ñ óêàçàííûì(íî-
âûì) èìåíåì ïîëüçîâàòåëÿ.
-61-
COPY Êîïèðóåò äàííûå èç îäíîé SQL*Net-
áàçû äàííûõ â äðóãóþ.
DEFINE Ââîäèò ïåðåìåííóþ ïîëüçîâàòåëÿ è
ïðèñâàèâàåò åé ñèìâîëüíîå çíà÷åíèå.
DEL Óäàëÿåò òåêóùóþ ñòðîêó èç òåêóùåãî
áóôåðà.
DESCRIBE Âûâîäèò íà ýêðàí êðàòêîå îïèñàíèå
òàáëèöû.
DISCONNECT Âíîñèò òåêóùèå èçìåíåíèÿ â áàçó
äàííûõ è çàêàí÷èâàåò ñåàíñ âàøåé
ðàáîòû ñ ORACLE, íî íå çàâåðøàåò
SQL*Plus.
DOCUMENT Íà÷èíàåò áëîê äîêóìåíòàöèè â êî-
ìàíäíîì ôàéëå.
EDIT Àêòèâèçèðóåò ñòàíäàðòíûé òåêñòîâûé
ðåäàêòîð áàçîâîé îïåðàöèîííîé ñèñ-
òåìû ñ ñîäåðæèìûì òåêóùåãî áóôåðà
èëè ôàéëà.
EXIT Çàâåðøàåò ðàáîòó ñ SQL*Plus è âîç-
âðàùàåò óïðàâëåíèå îïåðàöèîííîé
ñèñòåìå.
GET Çàãðóæàåò ôàéë â òåêóùèé áóôåð.
HELP Âûâîäèò íà ýêðàí èíôîðìàöèþ î êî-
ìàíäàõ SQL è SQL*Plus.
HOST Âûïîëíÿåò êîìàíäû îïåðàöèîííîé
ñèñòåìû, íå ïîêèäàÿ SQL. Ýêâèâà-
ëåíòíà '$'.
INPUT Äîáàâëÿåò íîâûå ñòðîêè ïîñëå òåêó-
ùåé ñòðîêè â òåêóùåì áóôåðå.
LIST Ðàñïå÷àòûâàåò ñòðîêè òåêóùåãî áó-
ôåðà.
NEWPAGE Ïðîäîëæàåò áóôåðèçîâàííûé âûâîä ñ
íà÷àëà ñëåäóþùåé ñòðàíèöû. Êîìàí-
äà ñòàðîé âåðñèè.
PAUSE Âûâîäèò íà ýêðàí ñîîáùåíèå , çàòåì
îæèäàåò íàæàòèÿ êëàâèøè RETURN.
-62-
QUIT Çàâåðøàåò ðàáîòó ñ SQL*Plus è âîç-
âðàùàåò óïðàâëåíèå îïåðàöèîííîé
ñèñòåìå. Ñèíîíèì EXIT.
REMARK Íà÷èíàåò êîììåíòàðèé â êîìàíäíîì
ôàéëå.
ROLLBACK Îòìåíÿåò èçìåíåíèÿ â áàçå äàííûõ,
ïðîèçâåäåííûå ñ ìîìåíòà ïîñëåäíåãî
ñîõðàíåíèÿ.
RUN Âûâîäèò íà ýêðàí è çàïóñêàåò êî-
ìàíäó â áóôåðå SQL.
SAVE Ñîõðàíÿåò ñîäåðæèìîå òåêóùåãî áó-
ôåðà (îäíó èëè áîëåå êîìàíä) â áà-
çå äàííûõ èëè â ôàéëå îïåðàöèîííîé
ñèñòåìû.
SET Óñòàíàâëèâàåò óêàçàííûå çíà÷åíèÿ
äëÿ ïàðàìåòðîâ SQL.
SHOW Îòîáðàæàåò óñòàíîâëåííûå ïàðàìåòðû
SQL èëè õàðàêòåðèñòèêè SQL*Plus,
íàïðèìåð , íîìåð òåêóùåé âåðñèè
SQL*Plus.
SPOOL Óïðàâëÿåò ñïóëëèíãîì(êîïèðîâàíèåì)
âûñâå÷èâàíèÿ âûâîäà â ñèñòåìíûé
ôàéë è íà ñèñòåìíûé ïðèíòåð.
SQLPLUS Ñ è ñ ò å ì í à ÿ ê î ì à í ä à .
Ñòàðòóåò SQL*Plus.
START Âûïîëíÿåò ïðîöåäóðó , îïèñàííóþ â
êîìàíäíîì ôàéëå.
TIMING Ïðîèçâîäèò àíàëèç ýôôåêòèâíîñòè
( ïî âðåìåíè ) êîìàíäíûõ ôàéëîâ è
êîìàíä SQL.
TTITLE Ïîáóæäàåò SQL îòîáðàæàòü çàãîëîâîê
â íà÷àëå êàæäîé âûâîäèìîé ñòðàíèöû.
UNDEFINE Óäàëÿåò îïðåäåëåíèå ïåðåìåííîé
ïîëüçîâàòåëÿ
-63-
@¶( çíàê"at")
----------------------------------------------------------------
@èìÿ ôàéëà;
-----------------------------------------------------------
Òèï: Êîìàíäà SQL*Plus.
Îïèñàíèå: Âûïîëíÿåò óêàçàííûé êîìàíäíûé ôàéë . Êîìàíäíûé
ôàéë ìîæåò ñîäåðæàòü ëþáóþ êîìàíäó SQL è ëþáóþ êîìàíäó SQL*
Plus, êîòîðàÿ ìîæåò ââîäèòñÿ â èíòåðàêòèâíîì ðåæèìå.
@ ÿâëÿåòñÿ ýêâèâàëåíòîì êîìàíäû START, íî íå äîïóñêàåò èñ-
ïîëüçîâàíèÿ àðãóìåíòîâ êîìàíäíîé ñòðîêè.
Ïðèìåð: Äëÿ âûïîëíåíèÿ êîìàíäíîãî ôàéëà ñ èìåíåì
PRINTREPORT, ââåäèòå:
SQL> @PRINTREPORT;
-64-
#( çíàê"pound");
----------------------------------------------------------------
#
-----------------------------------------------------------
Òèï: Êîìàíäà SQL*Plus.
Îïèñàíèå: Çàêàí÷èâàåò ïîñëåäîâàòåëüíîñòü ñòðîê êîììåíòàðèÿ,
íà÷àòûõ ñ ïîìîùüþ êîìàíäû DOCUMENT.
Ïðèìåð:
DOCUMENT
Written by J. Smith, 8/15/85.
Variable headings by R. Jones, 11/5/85.
Adapted to planning dept. needs by T. Grey,11/29/85.
#
-65-
ýòà ñòðàíèöà ñïåöèàëüíî îñòàâëåííà ïóñòîé
-66-
/(slach)
----------------------------------------------------------------
/
-----------------------------------------------------------
Òèï: Êîìàíäà SQL*Plus.
Îïèñàíèå: Âûïîëíÿåò êîìàíäó â áóôåðå SQL.
/ ÿâëÿåòñÿ ýêâèâàëåíòîì RUN, íî íå îòîáðàæàåò áóôåðíóþ êî-
ìàíäó.
-67-
/*...*/(SQL-êîììåíòàðèé)
----------------------------------------------------------------
/*ëþáîé òåêñò*/
-----------------------------------------------------------
Òèï: Ýëåìåíò ñèíòàêñèñà SQL(íî íå êîìàíäà SQL èëè SQL*Plus).
Îïèñàíèå: SQL-êîììåíòàðèè èñïîëüçóþòñÿ äëÿ ïîÿñíåíèÿ îïåðà-
öèè èç íàáîðà êîìàíä SQL. Îíè ìîãóò îòîáðàæàòüñÿ íà ýêðàíå
è ðåäàêòèðîâàòüñÿ ñîâìåñòíî ñ òàêèìè êîìàíäàìè, êàê LIST è
CHANGE,íî â òî æå âðåìÿ îíè íå âëèÿþò íà âûïîëíåíèå êîìàíä.
Êîììåíòàðèè ìîãóò ïîÿâëÿòüñÿ âíóòðè ëþáîé SQL-êîìàíäû("Âíó-
òðè" - çíà÷èò ìåæäó ñëîâàìè èëè ìåæäó ñëîâîì è çàâåðùàþùèì
ñèìâîëîì ';'). Èõ íåëüçÿ ïðèìåíÿòü ïåðåä SQL-êîìàíäîé èëè
âíóòðè åå. Êîìàíäû SQL*Plus äîëæíû êîììåíòèðîâàòüñÿ ñ èñ-
ïîëüçîâàíèåì SQL*Plus-êîìàíäû REMARK.
/* íà÷èíàåò êîììåíòàðèé. */ çàêàí÷èâàåò åãî.Êîììåíòàðèé ìî-
æåò ñîäåðæàòü ëþáîå êîëè÷åñòâî ñòðîê è ìîæåò íà÷èíàòüñÿ èëè
çàêàí÷èâàòüñÿ â ñåðåäèíå ñòðîêè. Çíàêè '/*' è '*/' íå îáÿ-
çàòåëüíî îòäåëÿòü îò íåïîñðåäñòâåííî êîììåíòàðèÿ ïðè ïîìîùè
ïðîáåëîâ èëè ïåðåâîäîì ñòðîêè.
Ïðèìåð: Ñëåäóþùàÿ êîìàíäà SELECT ñîäåðæèò íåñêîëüêî êîììåí-
òàðèåâ. Îáðàòèòå âíèìàíèå, êàê òî÷êà-ñ-çàïÿòîé çàâåðøàåò
ïîñëåäíèé êîììåíòàðèé äëÿ óäîâëåòâîðåíèÿ ïðàâèë ðàìåùåíèÿ
êîììåíòàðèÿ â í ó ò ð è êîìàíäû SQL.
SQL> SELECT ENAME, SAL+COMM COMP, JOB, LOC
2 /* Select all employees whose compensantion is
3 greater than that of Jones. */
4 FROM EMP, DEPT
5 /* DEPT is used to get departament name. */
6 WHERE EMP.DEPTNO = DEPT.DEPTNO
7 AND COMP > /* Subquery: */
8 (SELECT COMP /* COMP > */
9 FROM EMP /* Jones's */
10 WHERE ENAME = 'JONES') /*COMP.*/ ;
-68-
ALTER PARTITION¶
----------------------------------------------------------------
ALTER PARTITION ðàçäåë ADD FILE òåêñò;
-----------------------------------------------------------
Òèï: Êîìàíäà SQL.
Îïèñàíèå: Ïðèñîåäèíÿåò ôàéë, èìåíîâàííûé ñ ïîìîùüþ çíà÷åíèÿ
"òåêñò" ê óêàçàííîìó "ðàçäåëó". Êðîìå òîãî , âíîñèò â áàçó
äàííûõ òåêóùèå èçìåíåíèÿ.
Áàçà äàííûõ ORACLE ñîñòîèò èç ðàçäåëà SYSTEM è äðóãèõ
ðàçäåëîâ, ñîçäàííûõ êîìàíäîé CREATE PARTITION. Äàííûå, õðà-
íèìûå â ðàçäåëå, â äåéñòâèòåëüíîñòè õðàíÿòñÿ â îäíîì èëè
áîëåå ôàéëîâ, ñâÿçàííûõ ñ ýòèì ðàçäåëîì. Òàêèì îáðàçîì, ïå-
ðåä ñîõðàíåíèåì äàííûõ â ðàçäåëå, â íåì äîëæåí áûòü îïðåäå-
ëåí õîòÿ áû îäèí ôàéë.
Ïåðåä ïðèñîåäèíåíèåì ôàéëà ê ðàçäåëó, îí äîëæåí áûòü ñîçäàí
óòèëèòîé CCF. Äëÿ èíôîðìàöèè îòíîñèòåëüíî óòèëèòû CCF ñì.
"Ðóêîâîäñòâî Àäìèíèñòðàòîðîâ Áàçû äàííûõ ORACLE".
ALTER PARTITION ìîãóò èñïîëüçîâàòü òîëüêî ïîëüçîâàòåëè ñ
ïðèâèëåãèÿìè DBA (àäìèíèñòðàòîð áàçû äàííûõ).
ALTER PARTITION èñïîëüçóåòñÿ äëÿ óâåëè÷åíèÿ îáúåìà áàçû
äàííûõ ïîñðåäñòâîì äîáàâëåíèÿ ôàéëîâ ê ñóùåñòâóþùåìó ðàçäå-
ëó, äàæå åñëè ýòîò ðàçäåë óæå ñîäåðæèò äàííûå.
Ïðèìåð: Äëÿ äîáàâëåíèÿ ôàéëà ñ èìåíåì ORA005.DBS ê ðàçäåëó
SYSTEM ñîçäàéòå ôàéë ñ ïîìîùüþ CCF è çàòåì ââåäèòå:
SQL> ALTER PARTITION SYSTEM
2 ADD FILE 'ORA005.DBS';
-69-
ALTER SPACE¶
----------------------------------------------------------------
ALTER SPACE[DEFINITION] sname
[ DATAPAGES(
[INITIAL{5|n}][INCREMENT{25|n}]
[MAXEXTENTS{9999|n}][PCTFREE{20|n}] )]
[ INDEXPAGES(
[INITIAL {5|n}][INCREMENT{25|n}]
[MAXESTENTS{9999|n}] )]
[ PARTITION {SYSTEM|pname} ];
-----------------------------------------------------------
Òèï: Êîìàíäà SQL.
Îïèñàíèå: Èçìåíÿåò îïèñàíèå ïðîñòðàíñòâà , ñîçäàííîå ñ ïî-
ìîùüþ CREATE SPACE . Òàêæå âíîñèò òåêóùèå èçìåíåíèÿ â áà-
çó äàííûõ.
ALTER SPACE èçìåíÿåò îïèñàíèå êàæäîãî óêàçàííîãî ïàðàìåòðà
ðàñïðåäåëåíèÿ ïðîñòðàíñòâà è îñòàâëÿåò íåèçìåííûìè âñå îñ-
òàëüíûå ïàðàìåòðû . Äëÿ èíôîðìàöèè î ïàðàìåòðàõ ñìîòðèòå
CREATE SPACE.
Ïðèìåð: ÷òîáû äîáàâèòü DATAPAGES è INDEXPAGES ê îïèñàòåëþ
ïðîñòðàíñòâà ñ èìåíåì FRUGAL, âàì íóæíî ââåñòè:
SQL> ALTER SPACE FRUGAL
2 DATAPAGES (INCREMENT 4)
3 INDEXPAGES (INCREMENT 4);
-70-
ALTER TABLE
--------------------------------------------------------------
ALTER TABLE òàáëèöà ADD( ñòîëáåö ñïåö[NULL|NOT NULL],...);
ALTER TABLE òàáëèöà MODIFY( ñòîëáåö[ñïåö][NULL|
NOT NULL],,...);
-----------------------------------------------------------
Òèï: Êîìàíäà SQL.
Îïèñàíèå: ADD äîáàâëÿåò íîâûé "ñòîëáåö" ê êîíöó îïèñàíèÿ
"òàáëèöû" (êàæäîå ïîëå â ñòîëáöå èíèöèèðóåòñÿ çíà÷åíèåì
NULL). Òàêæå âíîñèò â áàçó äàííûõ òåêóùèå èçìåíåíèÿ.
MODIFY èçìåíÿåò îïèñàíèå ñóùåñòâóþùåãî "ñòîëáöà" è âíîñèò â
áàçó äàííûõ òåêóùèå èçìåíåíèÿ.
"ñïåö"(ñïåöèôèêàöèÿ) çàäàåò (íîâûé)òèï è äëèíó "ñòîëáöà".
Èñïîëüçóåòñÿ ïî àíàëîãèè ñ CREATE TABLE. MODIFY ìîæåò èçìå-
íÿòü òèï "ñòîëáöà" èëè óìåíüøàòü åãî äëèíó,òîëüêî åñëè êàæ-
äîå ïîëå â "ñòîëáöå" ñîäåðæèò çíà÷åíèå NULL.
NULL óêàçûâàåò, ÷òî çíà÷åíèÿ â ýòîì ñòîëáöå ìîãóò áûòü
ïóñòûìè. NOT NULL èìååò îáðàòíûé ñìûñë . NOT NULL -
ñòîëáåö ìîæåò äîáàâëÿòüñÿ òîëüêî ê òàêîé òàáëèöå, êîòîðàÿ
íå ñîäåðæèò ñòðîê; ñóùåñòâóþùèé ñòîëáåö ìîæíî äåëàòü
NOT NULL,òîëüêî åñëè îí ñîäåðæèò íåïóñòûå çíà÷åíèÿ. Äëÿ ADD
óìîë÷àíèåì ÿâëÿåòñÿ NULL; äëÿ MODIFY - "íå èçìåíÿòü".
Çàìåòèì, ÷òî, åñëè ñòîëáöû äîáàâëÿþòñÿ ê òàáëèöå èñïîëüçóå-
ìîé â ýêðàííîé ôîðìå, îïðåäåëåííîé çàïðîñîì, êîòîðûé âûáè-
ðàåò âñå ñòîëáöû ("SELECT * FROM..."), òî â äàëüíåéøåì ýê-
ðàííàÿ ôîðìà íå áóäåò ðàáîòàòü êîððåêòíî. Ýòî ìîæíî èñïðà-
âèòü ñ ïîìîùüþ óäàëåíèÿ ñòàðîé è ñîçäàíèÿ íîâîé ýêðàííîé
ôîðìû.
Ïðèìåð:Äëÿ äîáàâëåíèÿ öèôðîâîãî ñòîëáöà ñ èìåíåì THRIFTPLAN
ñ ìàêñèìóì ñåìüþ öèôðàìè è äâóìÿ äåñÿòè÷íûìè ïîëÿìè ê òàáë.
ñ èìåíåì EMP , à òàêæå îäíîñèìâîëüíîãî ñòîëáöà ñ èìåíåì
LOADCODE, ââåäèòå:
SQL> ALTER TABLE EMP ADD
2 (THRIFTPLAN NUMBER(7,2), LOADCODE CHAR(1));
×òîáû óâåëè÷èòü äëèíó THRIFTPLAN äî äåâÿòè ñèìâîëîâ, ââåäè-
òå:
SQL> ALTER TABLE EMP MODIFY
2 (THRIFTPLAN NUMBER(9,2));
Èçìåíåíèå òàáëèöû ïðè ìîäèôèêàöèè äëèíû ñòîëáöà, çàäàííîãî
êàê NOT NULL, áóäåò îòìåíÿòü àòðèáóò NOT NULL , åñëè îí íå
íå óêàçàí ñïåöèàëüíî.
-71-
ACCEPT
----------------------------------------------------------------
ACC[EPT]ïåðåì[NUM[BER]|CHAR][PROMPT òåêñò
NOPR[OMPT]][HIDE];
-----------------------------------------------------------
Òèï: Êîìàíäà SQL*Plus.
Îïèñàíèå: ×èòàåò ñòðîêó ñ êëàâèàòóðû è ñîõðàíÿåò åå â ïåðå-
ïîëüçîâàòåëÿ "ïåðåì". Åñëè ïåðåìåííàÿ "ïåðåì" íå ñóùåñò-
âóåò, îíà ñîçäàåòñÿ.
NUMBER è CHAR îïðåäåëÿþò òèï "ïåðåì"; åñëè ââåäåííîå
çíà÷åíèå ïîäõîäèò äëÿ ýòîãî òèïà, ACCEPT äàåò ñîîáùåíèå îá
îøèáêå.
Ñèìâîëû PROMPT "òåêñò" çàñòàâëÿþò ACCEPT îòîáðàçèòü "òåêñò"
äî ÷òåíèÿ îòâåòà. NOPROMPT çàñòàâëÿåò ACCEPT ïåðåéòè íà íî-
âóþ ñòðîêó è îæèäàòü ââîäà áåç îòîáðàæåíèÿ ïîäñêàçêè.
HIDE ïîäàâëÿåò îòîáðàæåíèå íà ýêðàíå ââîäèìîãî îòâåòà.
Ïðèìåðû: Äëÿ îòîáðàæåíèÿ ïîäñêàçêè "Salary:" è ïîìåùåíèÿ
îòâåòà â ïåðåìåííóþ ñ èìåíåì SALARY, ââåäèòå:
SQL> ACCEPT salary NUMBER PROMPT 'Salary: ';
×òîáû îòîáðàçèòü íà ýêðàíå ïðèãëàøåíèå "Password:" è ïîìåñ-
òèòü îòâåò â ñèìâîëüíóþ ïåðåìåííóþ PSWD, ïîäàâëÿÿ îòîáðàæå-
íèå îòâåòà, ââåäèòå:
SQL> ACCEPT pswd CHAR PROMPT 'Password: ' HIDE;
-72-
APPEND
----------------------------------------------------------------
A[PPEND] òåêñò
-----------------------------------------------------------
Òèï: Êîìàíäà SQL*Plus.
Îïèñàíèå: Äîáàâëÿåò "òåêñò" ê êîíöó òåêóùåé ñòðîêè â òåêó-
ùåì áóôåðå.
×òîáû îòäåëèòü "òåêñò" îò ïðåäøåñòâóþùèõ ñèìâîëîâ ïðîáåëîì,
íåîáõîäèìî ðàçäåëèòü APPEND è "òåêñò" ä â ó ì ÿ ïðîáåëàìè,
èëè çàêëþ÷èòü "òåêñò" â îäèíî÷íûå êàâû÷êè è íà÷àòü åãî ñ
ïðîáåëà.
Äëÿ äîáàâëåíèÿ òåêñòà, çàêàí÷èâàþùåãîñÿ ñèìâîëîì ';', íåîá-
õîäèìî çàêîí÷èòü ââîä êîìàíäû äâóìÿ ñèìâîëàìè ';', òàê êàê
îäèí èç íèõ èíòåðïðåòèðóåòñÿ â êà÷åñòâå îãðàíè÷èòåëÿ êîìàí-
äû.
Ïðèìåð: Äëÿ äîáàâëåíèÿ ôðàçû FORMAT 9999 ê ïÿòîé ñòðîêå òå-
êóùåãî áóôåðà âû äîëæíû ñíà÷àëà ñäåëàòü ýòó ñòðîêó òåêóùåé
ñòðîêîé. Îäèí èç ñïîñîáîâ ñäåëàòü ýòî - ðàñïå÷àòàòü ñòðîêó:
SQL> LIST 5
5* COLUMN SAL ALIAS "SALARY"
Òåïåðü ââåäèòå APPEND:
SQL> APPEND FORMAT 9999
SQL> LIST 5
5* COLUMN SAL ALIAS "SALARY" FORMAT 9999
Îáðàòèòå âíèìàíèå íà äâîéíîé ïðîáåë ìåæäó 'APPEND' è
'FORMAT'. Ïåðâûé ïðîáåë îòäåëÿåò APPEND îò äîáàâëÿåìûõ ñèì-
âîëîâ; ñëåäóþùèé ïðîáåë ñòàíîâèòñÿ ïåðâûì äîáàâëÿåìûì ñèì-
âîëîì.
×òîáû äîáàâèòü ê ñòðîêå ñèìâîë ';', âàì íóæíî ââåñòè:
SQL>APPEND ;;
Ïåðâûé ñèìâîë ';' äîáàâëÿåòñÿ ê ñòðîêå; ñëåäóþùèé çàêàí÷è-
âàåò êîìàíäó APPEND.
-73-
AUDIT
----------------------------------------------------------------
AUDIT {îïöèÿ,îïöèÿ,...|ALL}
ON {òàáë|DEFAULT}
[BY {ACCESS|SESSION}]
[WHENEVER[NOT]SUCCESSFUL];
AUDIT {s_îïöèÿ, s_îïöèÿ,...|ALL}
[WHENEVER[NOT]SUCCESSFUL ];
-----------------------------------------------------------
Òèï: Êîìàíäà SQL.
Îïèñàíèå: Ïåðâàÿ ôîðìà çàñòàâëÿåò ORACLE ñëåäèòü çà èñïîëü-
çîâàíèåì òàáëèö, ýêðàííûõ ôîðì èëè ñèíîíèìîâ. ×òîáû ñëåäèòü
çà èñïîëüçîâàíèåì îáúåêòà, âû äîëæíû âëàäåòü ýòèì îáúåêòîì
èëè èìåòü ïðèâèëåãèè DBA.
"îïöèÿ" óêàçûâàåò íà òî, ÷òî îáðàùåíèÿ êîìàíä ê òàáëèöå äî-
ëæíû ðåãèñòðèðîâàòüñÿ. Ýòî ìîãóò áûòü êîìàíäû ALTER, AUDIT,
COMMENT, DELETE , GRANT , INDEX , INSERT , LOCK , RENAME,
SELECT èëè UPDATE. GRANT îòñëåæèâàåò è êîìàíäó GRANT, è êî-
ìàíäó REVOKE. ALL ïðîèçâîäèò ñëåæåíèå çà âñåìè ýòèìè êîìàí-
äàìè.
ON "òàáë" óêàçûâàåò îáúåêò ñëåæåíèÿ. ON DEFAULT çàäàåò
èçìåíåíèÿ äëÿ DEFAULT-òàáëèöû, êîòîðàÿ êîíòðîëèðóåò îïöèè
ñëåæåíèÿ , óêàçàííûå äëÿ âíîâü ñîçäàííîé òàáëèöû. ×òîáû èñ-
ïîëüçîâàòü ON DEFAULT, âû äîëæíû èìåòü ïðèâèëåãèè DBA.
Ñëåäóþùàÿ ôîðìà óñòàíàâëèâàåò ñëåæåíèå çà èñïîëüçîâàíèåì
ñèñòåìíûõ ñðåäñòâ. Äëÿ ïðèìåíåíèÿ ýòîé ôîðìû AUDIT íåîá-
õîäèìî îáëàäàòü ïðèâèëåãèÿìè DBA. "s_îïöèÿ" çàäàåò ñðåäñòâà
çà êîòîðûìè èäåò ñëåæåíèå. Ýòî ìîæåò áûòü CONNECT (ðåãèñò-
ðàöèÿ âõîäîâ è âûõîäîâ èç ORACLE), DBA (ðåãèñòðàöèÿ êîìàíä,
çàïðàøèâàþùèõ ïðèâèëåãèè DBA), NOT EXISTS (ðåãèñòðàöèÿ âñåõ
êîìàíä, âûðàáàòûâàþùèõ îøèáêó "does not exist") èëè RESOURCE
( ðåãèñòðàöèÿ CREATE/DROP TABLE/CLUSTER/VIEW/INDEX/SPACE/
SYNONYM ). ALL ïðîèçâîäèò ñëåæåíèå çà âñåìè ïåðå÷èñëåííûìè
ñðåäñòâàìè.
BY ACCESS èëè BY SESSION çàñòàâëÿåò ORACLE çàïèñûâàòü â
òàáëèöó ñëåæåíèÿ ñòðîêó äëÿ êàæäîé êîìàíäû èëè ñåàíñà ïîëü-
çîâàòåëÿ, èñïîëüçóþùèõ îáðàùåíèå ê îòñëåæèâàåìîé òàáëèöå.
WHENEVER[NOT]SUCCESSFUL ïîáóæäàåò ORACLE çàïèñûâàòü ñòðîêó
â òàáëèöó ñëåæåíèÿ òîëüêî òîãäà, êîãäà îáðàùåíèå ê îòñëåæè-
âàåìîé òàáëèöå èëè ñèñòåìíûì ñðåäñòâàì îêàçàëîñü(íå) óñïåø-
íûì. Åñëè ýòà ôðàçà îïóùåíà, ñòðîêà çàïèñûâàåòñÿ íåçàâèñèìî
îò òîãî, ÿâëÿåòñÿ ëè îáðàùåíèå óñïåøíûì.
Èñïîëüçîâàíèå NOAUDIT èìååò ýôôåêò îáðàòíûé ýôôåêòó AUDIT.
-74-
Îáå ôîðìû âíîñÿò òåêóùèå èçìåíåíèÿ â áàçó äàííûõ, çàäàííóþ
ïî óìîë÷àíèþ.
Êîãäà äîñòóï ê òàáëèöàì îñóùåñòâëÿåòñÿ ÷åðåç ñâÿçü ñ áàçîé
äàííûõ ( ñì. îáñóæäåíèå CREATE DATABASE LINK ) , ñëåæåíèå â
â óäàëåííîé ñèñòåìå âûïîëíÿåòñÿ ñîãëàñíî óñòàíîâëåííûì äëÿ
óäàëåííîé ñèñòåìû îïöèÿì ñëåæåíèÿ.
Ïðèìåðû: Äëÿ ñëåæåíèÿ çà âñåìè îáðàùåíèÿìè INSERT èëè UPDATE
ê òàáëèöå ñ èìåíåì EMP, ââåäèòå:
SQL> AUDIT INSERT, UPDATE ON EMP BY ACCESS;
Äëÿ ñëåæåíèÿ çà âñåìè ñåàíñàìè, â êîòîðûõ ïðîèñõîäèëè íåó-
äà÷íûå îáðàùåíèÿ ê EMP, âåäèòå:
SQL> AUDIT ALL ON EMP WHENEVER NOT SUCCESSFUL;
Äëÿ ðåãèñòðàöèè âñåõ óñïåøíûõ çàïðîñîâ íà ðåñóðñû, ââåäèòå:
SQL> AUDIT RESOURCE WHENEVER SUCCESSFUL;
-75-
BREAK
----------------------------------------------------------------
BRE[AK] ON{âûð|ROW|PAG[E]|REPORT}...
[SKI[P]n|[SKIP]PAGE]
[NODUP[LICATES]|DUP[LICATES]];
BRE[AK];
-----------------------------------------------------------
Òèï: Êîìàíäà SQL*Plus.
Îïèñàíèå: break(ïðåðûâàíèå) - ýòî ñîáûòèå , êîòîðîå èìååò
ìåñòî ïîêà SQL îáðàáàòûâàåò SELECT-êîìàíäó, òàêîå êàê êîíåö
ñòðàíèöû èëè èçìåíåíèå çíà÷åíèÿ âûðàæåíèÿ. Ïðåðûâàíèå
çàñòàâëÿåò SQL âûïîëíèòü íåêîòîðûå äåéñòâèÿ, íàïðèìåð, ïîë-
íóþ ðàñïå÷àòêó.
Êîìàíäà BREAK óêàçûâàåò, êàêèå ñîáûòèÿ áóäóò âûçûâàòü ïðå-
ðûâàíèå è êàêèå äåéñòâèÿ âûïîëíÿåò SQL ïðè ïðåðûâàíèè.
 êàæäûé äàííûé ìîìåíò âðåìåíè ìîæåò áûòü äåéñòâèòåëüíà
òîëüêî îäíà êîìàíäà BREAK. Êîãäà âû ââîäèòå íîâóþ êîìàíäó
BREAK, îíà ïîëíîñòüþ çàìåíÿåò ïðåäøåñòâóþùóþ êîìàíäó.
Êîìàíäà BREAK ìîæåò óêàçûâàòü íåñêîëüêî ñîáûòèé, âûçûâàþùèõ
ïðåðûâàíèÿ.  ýòîì ñëó÷àå ñîáûòèÿ ïðîâåðÿþòñÿ â îïðåäåëåí-