
- •«Ақпараттық жүйенің Деректер базасының жүйесі» пәнінен оқу-әдістемелік кешен
- •050703 – «Ақпараттық жүйелер» мамандығына арналған
- •Мазмұны
- •1. Глоссарий
- •1. Глоссарий
- •2. Дәрістер
- •Реляциондық дқ жобалау
- •Қосымша әдебиет: [9] с.92-119, 505-527, [10] с.104-134.
- •Қосымша әдебиет:[8] с.22-28.
- •Қосымша әдебиет:[9] с.1025-1040.
- •Қосымша әдебиет:[9] с.1028-1040.
- •Қосымша әдебиет: [9] с.944-960.
- •Қосымша әдебиет:[9] с.958-962.
- •Қосымша әдебиет:[8] с.159-164, [9] с. 81-83,792-794.
- •Қосымша әдебиет:[8] с. 28-36, [9] с. 65-88.
- •Қосымша әдебиет:[8] с.56-70, [9] с.56-58.
- •3. Практикалық және лабораториялық сабақтар
- •1 Зертханалық сабақ
- •Бақылау сұрақтары:
- •2 Зертханалық сабақ
- •Бақылау сұрақтары:
- •3 Зертханалық сабақ
- •Бақылау сұрақтары:
- •4 Зертханалық сабақ
- •Бақылау сұрақтары:
- •5 Зертханалық сабақ
- •Бақылау сұрақтары:
- •6 Зертханалық сабақ
- •Бақылау сұрақтары:
- •7 Зертханалық сабақ
- •Қосымша әдебиет: [9] с.1028-1040. Бақылау сұрақтары:
- •8 Зертханалық сабақ
- •Қосымша әдебиет: [9] с. 1028-1040. Бақылау сұрақтары:
- •9 Зертханалық сабақ
- •Қосымша әдебиет: [9] с. 1028-1040. Бақылау сұрақтары:
- •Бақылау сұрақтары:
- •Бақылау сұрақтары:
- •Студент
- •Қосымша әдебиет:[9] с.56-58.
- •1 Тәжірибелік сабақ
- •Бақылау сұрақтары:
- •2 Тәжірибелік сабақ
- •Бақылау сұрақтары:
- •Бақылау сұрақтары:
- •3 Тәжірибелік сабақ
- •Бақылау сұрақтары:
- •4 Тәжірибелік сабақ
- •Бақылау сұрақтары:
- •5 Тәжірибелік сабақ
- •Бақылау сұрақтары:
- •6 Тәжірибелік сабақ
- •Бақылау сұрақтары:
- •7 Тәжірибелік сабақ
- •Қосымша әдебиет: [9] с.1028-1040. Бақылау сұрақтары:
- •8 Тәжірибелік сабақ
- •Қосымша әдебиет: [9] с. 1028-1040. Бақылау сұрақтары:
- •9 Тәжірибелік сабақ
- •Қосымша әдебиет: [9] с. 1028-1040. Бақылау сұрақтары:
- •Бақылау сұрақтары:
- •Бақылау сұрақтары:
- •Студент
- •Қосымша әдебиет:[9] с.56-58. Бақылау сұрақтары:
- •4. Студенттің өздік жұмысы
Қосымша әдебиет:[8] с.22-28.
Бақылау сұрақтары:
1. ДҚБЖ құрамында қандай тілдік құралдарды ерекшелеуге болады?
2. SQL тілі ДҚБЖ тілдік құралдарының қай класына жатады?
3. СИ тілі ДҚБЖ тілдік құралдарының қай класына жатады?
4. ДҚЖ сұраныс қалай жүзеге асырылады?
№4 дәріс
ДҚЖ файлдармен жұмыс жасау. ДҚБЖ стандартты функциялар
Файлдарды көшіруге, өшіруге, олардың атын өзгертуге, т.б. амалдар орындауға болады. Көшіру жұмысын ашық файлдармен де және жабық файлдармен де жүргізуге мүмкіндік бар.
Жабық файлдағы (<1-файл>) мәліметті басқа бұрын болмаған файлға (<2-файл>) көшіру төмендегі команда арқылы орындалады:
COPY FILE(<1-файл>) ТО (<2-файл>)
Мұнда файл аттары өз тіркеулерімен көрсетілуі тиіс. Команданың орындалу барысында бұрынғы файлдың (<1-файл>) көшірмесі ретінде жаңа файл (<2-файл>) пайда болады. COPY командасының бұл түрін жұмыс істеп тұрған ашық файлдарға қолдануға болмайды.
Қажет болған жағдайда екпінді ДҚ тек қана құрлымын (құрлым бөлігін) көшіріп алуға болады (жазбалар көшірілмейді). Мұндайда жаңа файл ашылып, оның тек құрылымы ғана жасалады, бірақ онда жазбалар болмайды. ДҚ құрылымын ғана көшіретін команда пішімі төмендегідей:
xBase жүйесінде іске қосылған екпінді ДҚ құрылымын жаңа файлға жазбалар түрінде көшіре алатын команда бар, оның пішімі:
COPY TO <2-файл> STRUCTURE EXTENDED
Бұл команданың орындалуы барысында <файлда> жазбалар түрінде ашылған ДҚ құрылымы жазылып қалады. Кейіннен ондағы жазбалар, қажет болған жағдайда, қалауымызша түзетіліп толықтырылады. Мұндайда <2-файлдың> тұрақты құрылымы болып, оның FILED_NAME, FILED_TYPE, FIELD_LEN, FIELD_DEC, сияқты өріс сипаттары, яғни өрістің аты, типі, еңі және дәлдігі есептелуі тиіс. <2-файлдағы> өріс мәндері екпінді ДҚ құрылымына сәйкес түрде болады.
Сонымен, осы ашылған файл кейіннен жаңа файл құрылымын жасауда қолданылады.
Жабық файлдың атын өзгерту командасының пішімі төмендегідей болады:
RENAME <ескі_аты> TO <жаңа_аты>
Бұл команда дискіге бұрын жазылған файлдың <ескі_атын> өзгертіп, оған <жаңа_ат> береді, аттары міндетті түрде толық күйде, яғни аттың өзі және нүктеменен бөлінген типі (тіркеуі) көрсетілуі тиіс. Басқа дискімен жұмыс істеу қажет болғанда файл аттарының алдында диск немесе каталог атаулары да жазылады. Сонымен RENAME командасы дұрыс орындалуы үшін, біріншіден <жаңа_аты> бар файл бұған дейін болмауы тиіс, екіншіден <ескі_аты> бар файл дискіде бұған дейін болуы керек және ол іске қосылмаған, жабық күйде тұруы қажет.
Жабық күйдегі файлды дискіден өшіріп тастауға болады, өшіру командасының пішімі:
DELETE FILE <файл_аты>
Команданың орындалуы кезінде өшірілетін файл екпінді, яғни ашық (USE аймағында) болмауы тиіс, әйтпесе қате шығып, жұмыс доғарылады. Өшірілетін файл аты кеңейтілуімен (тіркеуімен) бірге толық күйде көрсетіліп, ол жабық күйде болғанда ғана команда дұрыс орындалады. Жабық файлды өшіретін тағы бір команда бар, оның пішімі:
ERASE <файл_аты>
Мұнда да <файл_аты> толық күйде тіркеуімен бірге көрсетіледі.
Деректер қоймасының файлдарын индекстеу. Файлдарды сұрыптау мен индекстеу ДҚ файлындағы жазбаларды реттеу үшін қолданылады. Сұрыптау кезінде бұрынғы файл жазбалары реттеліп, белгілі бір тәртіпке келтіріліп сұрыпталып жаңа файлға жазылады. Екпінді ДҚ сұрыптау командасының пішімі:
SORT TO <файл> ON <өріс> [/A] [/C] [/D] [<аймақ>][FOR/WHILE <шарттар>] [FIELDS <өрістер_тізімі>]
Сұрыптау ON параметрінен кейінгі <өріс> бойынша жүргізіледі де, сұрыпталған ДҚ ТО параметріндегі <файлға> жазылады. Сұрыпталу мәліметтердің өсуі (/А) не кемуі (/D) бойынша жүргізіледі. Төменгі және жоғарғы регистрлер мәндерін есепке алмай жүргізу мүмкіндігін /С параметрі қамтамасыз етеді. Команданың орындалуы кезінде ON параметрінде көрсетілген <өріс> мәндерінің ASCII кодтары қарастырылады. /С параметрі /А немесе /D параметрінің бірімен бірге тұруы да мүмкін. Егер соңғы көрсетілгендей екі параметр қатар жазылса, онда олардың алдына бір “қиғаш сызық” белгісін қоя салуға болады (/АС). Егер /С, /D параметрлері көрсетілмеген болса, онда сұрыптау өріс мәнінің өсуі бойынша жүргізіледі. Команданың әсер ету <аймағы> жазылмаса, ол келісім бойынша барлық жазбаларға қатысты болып (ALL) есептеледі.
Егер жадының көлемін экономдау қажет болса, онда SORT командасының орына INDEX командасы пайдаланылады. Мұның нәтижесінде құрылған индексті файлда сұрыпталған жазбалардың нөмірлері (индекстері) ғана сақталады, ал жазбалар бұрынғы орнында тұра береді. Оның пішімі:
INDEX ON <өріс> TO <индексті_файл> [FOR/WHILE <шарттар>]
Бұл команда ДҚ екпінді файлы үшін индексті файл жасау кезінде қолданылады. Жазбаларды индекстеу (реттеу) ON параметріндегі <өріс> мәндерінің ASCII-кодтарының өсуі бойынша жүргізіледі. Жаңадан жасалатын <индексті_файл> атының тіркеуі .idx болып жазылады.
Индексті файлды пайдалану үшін ол өзіне сәйкес екпінді ДҚ тікелей байланыста болуы тиіс. Индексті файл құрылған сәтте де ол ДҚ файлымен автоматты түрде жалғасқан күйде болады. Индексті файлды екпінді ДҚ ажырату оның жабылуы кезінде немесе SET INDEX ТО командасы көмегімен іске асырылады. Ал индексті файлды іске қосылған екпінді ДҚ біріктіру
SET INDEX ТО <индексті_файл_аты>
командасымен орындалады. Ал ДҚ іске қосып екпінді ету кезеңінде оны бірден индексті файлмен біріктіру төмендегі командамен жүргізіледі:
Ал егер іздеуді жад айнымалысының мәні бойынша жүргізу қажет болса, онда ол айнымалының алдына макро функциясын (&) қою (макроауыстыру амалы) қажет.
Келесі қарастыратын SЕЕК командасының пішімі:
SЕЕК <өрнек>
xBase жүйесінде екпінді ДҚ жазбалар санын, берілген сандық мәндердің арифметикалық ортасы мен қосындысын табатын стандартты функцияларды пайдаланатын – арнайы командалар бар.
Екпінді ДҚ жазбалар санын анықтайтын команда пішімі:
COUNT [<аймақ>] [FOR/WHILE <шарттар>] [TO <ЖУА>]
Жазбалар саны көрсетілген <аймақ> (диапазон) үшін ғана есептеледі (келісім бойынша ALL). Міндетті емес FOR/WHILE параметрін пайдаланған шақта есептеу тек берілген шарттарды қанағаттандыратын жазбаларға ғана жүргізіледі. Қажет болғанда команда жұмысының нәтижесі, яғни анықталған жазбалар саны жадтың уақытша айнымалысының мәні ретінде сақталуы да мүмкін.
Екпінді түрдегі деректер қоймасының сандық типтегі өрісінің орташа мәнін анықтау командасының пішімі төмендегідей:
AVERAGE [<аймақ>] [<өрнектер_тізімі>] [FOR/WHILE <шарттар>] [TO <ЖУА_тізімі>]
Мұнда команда сандық өрістің барлық мәндері үшін орындалуы тиіс. Егер оған барлық мәндер кірмейтін болса, онда өрнектер тізімінде ол айрықша көрсетіледі. Анықталған орташа мәндер өңделіп жатқан өріс сандарына сәйкес жад айнымалыларына меншіктеледі. FOR/WHILE параметрі қандай жазбалар өңделуге тиіс екенін көрсетіп тұрады. Командада аймақ көрсетілмесе, ол барлық жазбаға (ALL) қатысты деп есептеледі.
Сандық типтегі өрістер мәнінің қосындысын
SUM [<аймақ>] [<өрнектер_тізімі>][FOR/WHILE <шарттар>] [TO <ЖУА_тізімі>]
командасы арқылы есептейді. Мұнда да <аймақ> көрсетілмесе, ол келісім бойынша ALL болып саналады. Бұл команда да өрістің барлық мәндері үшін емес, тек өрнектер тізімінде көрсетілген өрістерге ғана қатысты болуы да мүмкін. FOR/WHILE параметрі есептеу тек берілген шарттарды қанағаттандыратын жазбалар үшін жүргізілетінін көрсетіп тұрады. Есептеліп шыққан қосындылар осы командаға қатысты өрістер санына сәйкес келетін жад айнымалыларының мәндері бола алады.
xBase жүйесінің құрамында 100-ге жуық стандартты функциялар бар. Төменде солардың бірсыпырасы келтірілген.
Сандық типтегі өрнектерді өңдеуге арналған функциялар:
ABS (<сандық өрнек>) – абсолюттік мәнді анықтау;
INT (<сандық өрнек>) – санның бүтін бөлігін анықтау;
SQRT (<сандық өрнек>) - өрнектің квадрат түбірін табу;
LOG (<сандық өрнек>) - өрнектің натурал логарифмін табу;
EXP(<n>) – экспоненциалдық функцияны есептеу (n-дәрежелік көрсеткіш);
ROUND (<сандық өрнек>, <n>) – санды үтірден кейінгі <n> таңбаға дейін дөңгелектеу.
MIN(<n1>,<n2>) – екі санның (n1,n2) кішісін анықтау;
MAX(<n1>,<n2>) – екі санның (n1,n2) үлкенін анықтау;
STR (<сандық өрнек>,<n> [,<k>]) – санды оның бөлшегінің k таңбасын сақтай отырып, ұзындығы n таңбадан тұратын символдық қатарға түрлендіру.
Күн-ай мерзімімен (дата) жұмыс істеуге арналған функциялар:
DATE ( ) – үстіміздегі (ағымдағы) системалық датаны анықтау;
TIME ( ) – үстіміздегі (ағымдағы) системалық уақытты анықтау;
DAY (<дата>) – көрсетілген датаның күнін анықтау;
MONTH (<дата>) - көрсетілген датаның ай нөмірін анықтау;
YEAR(<дата>) - көрсетілген датаның жылын анықтау;
DOW (<дата>) - көрсетілген датаның аптаның қай күні екенін анықтау (жексенбі – бірінші күн болады);
CDOW (<дата>) - көрсетілген датаның апта күнінің қайсысы екенін (атын) анықтау;
CMONTH (<дата>) - көрсетілген датаның айын анықтау;
CTOD (<дата>) – датаның символдық өрнектелуін даталық типке түрлендіру;
DTOC (<дата>) – даталық типті символдық типке түрлендіру.
Файлдарды өңдеу функциялары:
SELECT ( ) – ағымдағы жұмыс аймағының нөмірін анықтау;
FILE (<файл_аты>) – файлдың бар екенін тексеру (егер файл бар болса, онда .Т. мәні шығуы тиіс);
DBF(<n>) – екпінді күйдегі деректер қоймасының атын анықтау (n - жұмыс аймағының нөмірі, келісім бойынша – ағымдағы жұмыс аймағы);
BOF([<n>]) – деректер қоймасы үшін файлдың басталған шартын тексеру (n - жұмыс аймағының нөмірі);
EOF([<n>]) – деректер қоймасы үшін файлдың аяқталған шартын тексеру (n - жұмыс аймағының нөмірі);
FCOUNT([<n>]) – деректер қоймасындағы өрістер санын анықтау (n - жұмыс аймағының нөмірі);
FIELDS (<n1>[, <n2>]) – деректер қоймасындағы өріс атын анықтау (n1- өріс нөмірі, n2 - жұмыс аймағының нөмірі);
RECCOUNT ([<n>]) – n жұмыс аймағынан қоймадағы жазбалар санын анықтау;
RECNO([<n>]) – n жұмыс аймағынан ағымдағы екпінді түрдегі жазба нөмірін анықтау;
RECSIZE([<n>]) – n жұмыс аймағынан ағымдағы жазба көлемін анықтау;
NDX(<n>) – екпінді деректер қоймасындағы ашылған индексті файлды анықтау (n – индексті файл нөмірі, 1 мен 7 арасындағы мәнді қабылдай алады).
Символдық өрнектерді өңдеу функциялары:
LEN (<қатар>) – қатардың ұзындығын анықтау;
AT (<1_қатар>, <2_қатар>) – 2-қатар ішінде 1-қатар тіркесінің алғашқы кездесуін анықтау (нәтижелік мән ретінде іздеу кезінде анықталған позиция нөмірі алынады);
UPPER (<қатар>) – қатардағы төмендегі регистрдегі латын әріптерін соларға сәйкес жоғарғы регистрдегі әріптерге түрлендіру;
LOWER (<қатар>) – қатардағы жоғарғы регистрдегі латын әріптерін соларға сәйкес төменгі регистрдегі әріптерге түсрлендіру;
ISALPHA (<қатар>) – қатардың алғашқы символы төменгі регистрге қарасты әріп екенін тексеру;
ISLOWER (<қатар>) – қатардың алғашқы символы төменгі регистрге қарасты әріп екенін тексеру;
ISUPPER (<қатар>) – қатардың алғашқы символы жоғарғы регистрге қарасты әріп екенін тексеру;
LEFT(<қатар>, <n>) – осы қатардың 1-позициясынан бастап (сол жағынан) ұзындығы n символ болып келетін командада көрсетілген қатарды шығару;
RIGHT (<қатар>, <n>) – осы қатардың соңғы позициясынан бастап (оң жағынан) ұзындығы n символ болып келетін командада көрсетілген қатарды шығару;
RTRIM(<қатар>) – қатар соңындағы бос орындарды алып тастау;
REPLICATE (<қатар>, <n>) – nрет қатардың көшірмесін алу;
SPACE(<n>) – n бос орын таңбасынан тұратын қатар жасау;
STUFF(<1_қатар>, <n>, <k >, <2_қатар>) – қатарды n-символдан бастап 1_қатар символына түрлендіру, ұзындығы k символдан тұратын 2_қатар енгізіледі;
SUBSTR (<1_қатар>, <n> [, <k >]) – n-символдан бастап ұзындығы k символдан тұратын қатар жасау;
VAL(<қатар>) – тек цифрлардан тұратын символдық қатарды сандық өрнекке айналдыру.
Негізгі әдебиет: [1] с.105-107, 117-:121, [2] с.20-23, [3] с.15-19, [6] с.82-90.
Бақылау сұрақтары:
Сандық өрістер мәнінің қосындысын қандай команда арқылы есептеледі?
Қандай функция символдар жолын сандық мәнге түрлендіреді?
Файлдың соңын қандай функция анықтайды?
Қандай функция төмендегі регистрдегі әріптерді соларға сәйкес жоғарғы регистрдегі әріптерге түрлендіреді?
xBase тілінде қандай айнымалылар типтері болуы мүмкін?
№5 дәріс
ДҚБЖ программалау
Мәліметтер қоймасындағы жазбаларды өңдеудің әр түрлерін ұйымдастыру үшін программалар жасау қажет. Олар универсалды инструменнтік программалау ортасында және ДҚБЖ программалау ортасында өңделуі мүмкін. dBase сияқты ДҚБЖ ортасында программалау кезінде программаларға xBase жүйесінің барлық командалары мен операторларын қосуға болады.
Программа сақталатын файлдың типі .prg болуы тиіс. Программа тексті файл түрінде жазылады, сол себепті оны жасау және редакциялау үшін кез келген текст редакторы қолданыла береді, ал xBase жүйесінің өзінің ішкі редакторы бар. Бұл редакторды шақыру үшін
MODIFY COMMAND [<файл>]
командасы қолданылады. Егер <файл> аты көрсетілмесе, онда экранға файл атын енгізуді өтінетін мәлімет-хабар шығады. Енгізілген файл аты жұмыс істеп тұрған каталогта жоқ болса, ондай файл жаңадан құрылады.
Редактор жұмыс істеп тұрғанда экранның жоғарғы жағында қандай пернелермен әріп, қатар өшірілетіні, ұмытып кеткен таңбаларды енгізу тәсілі, тексті дискіге жазып сақтау жолдары т.б. көрсетіліп тұрады.
Программа жазғанда бір қатарға бір-ақ команда жазуға болады. Егер команда бір қатарға сыймаса, қатар соңына нүктелі үтір (;) белгісі қойылып, жалғасы келесі қатарға көшіріледі. Түсінік беретін текст түріндегі сөз тіркестері қатар соңында орналасса, екі амперсанд белгісінен (&&) кейін, ал қатар басынан басталса, жұлдызша (*) таңбасынан кейін жазылады.
Программаның басы не аяғы белгіленбейді, оның қатарлары нөмірленбейді. Толық енгізіліп болған программа текстін дискіге жазу CTRL және END пернелерін немесе ^W пернелерін басу арқылы жүзеге асады.
Программаны орындауды бастау командасының форматы төмендегідей болады:
DO <файл>
<файл> оқылған соң, оны орындау табиғи тәртіппен жоғарыдан төмен қарай жүргізіледі.
Программаны орындау RETURN, CANCEL, QUIT командалары кездескенше не оның аяғына жеткенше орындалады. CANCEL командасы программаны орындауды тоқтатып, барлық жад айнымалылары тазаланады, яғни олардың мәндері нөлге тең болады. RETURN командасы программаны аяқтайды, бірақ оны жазбаса да, программа ең соңғы қатарды орындаған соң тоқталады. QUIT командасы xBase жүйесінің жұмысын доғарып, басқаруды операциялық жүйеге береді.
Программаның орындалуы барысында қате кездессе, қатесі бар қатар нөмірі экранда көрсетіледі. Қатені түзету үшін MODIFY COMMAND <файл> командасын қайта пайдалану қажет.
Программада қосалқы программаларды пайдалануға болады. Әрбір қосалқы программа төмендегідей жеке
MODIFY COMMAND <қосалқы_программа_аты>
командасымен құрылады. Әрбір қосалқы программаға сәйкес, оның өзіндік файл аты жазылып, оның тіркеуі .prg болуы тиіс. Әрбір қосалқы программа міндетті түрде RETURN командасымен аяқталуы керек.
Қосалқы программаны шақыру
DО <қосалқы_программа_аты> [WITH <параметрлер_тізімі>]
командасымен жүргізіледі. WITH параметрі қосалқы программаға қажетті нақты параметрлер тізбегін беру үшін керек. Мұндайда қосалқы программаның басында оның параметрлері көрсетіледі. Қосалқы программадағы параметрлерді сипаттау командасы:
PARAMETERS <параметрлер_тізімі>
түрінде жазылады. Бұл команда негізгі программа берілетін мәндерге жергілікті айнымалы аттарын тағайындайды. Бұл команда шақырылған қосалқы программаның алғашқы командасы болуы шарт. <Параметрлер_тізімінде> аты бар кез келген жад айнымалылары тұра алады. Тізімде параметрлер үтірмен бөлініп, олардың саны негізгі программадағы шықыру командасындағыдай болады.
Қосалқы программаны орындауды аяқтау командасының форматы:
RETURN [ TO MASTER / <өрнек>]
TO MASTER параметрі басқару ең жоғарғы деңгейлі негізгі программаға берілетінін білдіреді, өйткені бұл қосалқы программа да басқа қосалқы программаны пайдалануы мүмкін (программалардың ішкі қабатталу санының ең үлкен мәні - 24). Егер программа процедура-функция болса, онда қайтып берілетін мән өрнекті көрсетілуі тиіс.
Егер негізгі программада бірнеше қосалқы программа пайдаланылатын болса, онда ондай программаны дискіден оқуға біраз уақыт жұмсалады. Мұндайда қосалқы программаларды негізгі программамен бірге бір файлға жазып қоюға болады және оны процедура деп атайды. Бір программада 128-ге дейін процедуралар қолданыла береді.
Программада процедуралар қолданылса, онда ол процедуралық файл болады және онда төмендегідей процедураны орнату командасы болуы тиіс:
SET PROCEDURE TO <процедуралық_файл_аты>
Программадағы әрбір процедура төмендегі командамен басталады:
PROCEDURE <процедура_аты>
Бұл команда процедураның алғашқы қатары болуы тиіс, процедураның соңы RETURN командасымен бітеді. Процедуралық файлды жабатын
CLOSE PROCEDURE
командасы болады.
Программаның орындалуы кезінде немесе оны түзету барысында кейбір шарттардың қалай жүзеге асатынын тексеруге тура келеді. Олар қате табу ESC пернесінің басылуын немесе кез келген перненің басылуын тексеру т.с.с.
Командаларды біртіндеп орындай отырып, программаның қатесін анықтау
ON ERROR<команда>
командасымен жүргізіледі. Қате шыққан кезде көрсетілген <команда> орындалады.
ESC пернесінің басылғанын анықтайтын
ON ESCAPE <команда>
командасы бар. Мұнда ESC пернесі басылған сәтте <команда> орындалуы тиіс. Кез келген перненің басылғанын анықтау командасының пішімі:
KEY <команда>
Мұнда да кез келген перне басылған сәтте көрсетілген <команда> орындалады. Ал белгілі бір перненің басылған, басылмағанын білу үшін төмендегідей пішімдегі
ON KEY=<сандық_өрнек> <команда>
командасын орындау қажет. Коды пішімдегі <сандық_өрнекке> сәйкес келетін перне боялғанда, көрсетілген <команда> орындалады.
Егер бірнеше ON командаларын пайдалану қажет болса, оларды қолдану реттілігі, яғни пұрсаттылығы мынадай болуы тиіс: ERROR, ESCAPE, KEY. Кез келген ON командасы дәл осы типтес келесі команда орындалғанша екпінді (іске қосылған) қалыпта болады. Екпінді команданың орындалу әсерін тоқтату осы команданы төмендегідей параметрсіз <команда> орындаумен іске асырылады:
ON ERROR / ON ESCAPE / ON KEY
xBase тілінде жазылған программа ішінде MS DOS командасын орындау керек болса,
RUN <MS_DOS_командасы>
қатарын жазу керек.
SUSPEND командасы программаны орындауды уақытша тоқтата тұруды қамтамасыз етеді. Ал программаны тоқтатылған жерінен әрі қарай іске қосу RESUME командасы арқылы жүзеге асырылады.
xBase программалау тілінде құрылған программа бірнеше түрлі тәсілдер арқылы орындалуы мүмкін. Алғашқы программалар (.prg кеңейтүімен командалық файл) ДҚБЖ DO <программа_аты> командасы орындалу арқылы орындалады.
Алғашқы программада (.prg кеңейтүімен) компиляциялауға болады. Ол жағдайда жаңа файлдар құрылады аттары өзгермейді, тек кеңейтулері басқа болады (мысалы Fox Pro – да .FXP кеңейтуімен). Компиляцияланған программа дискіден оқу жылдамдылығымен жүктеледі, ал алғашқы программалар олардың оқуына байланысты компиляциялануы тиіс, ол қосымша уақыт кідірісіне әкеледі. Сондықтан программаларды алдын ала компиляциялау қажет. dBase дербес нұсқалары программаларды (.exe кеңейтуімен) құруға мүмкіндік береді.
Негізгі әдебиет: [1] с.111-117, [3] с.23-31.
Бақылау сұрақтары:
Командалық файлды қандай команда құруға мүмкіндік береді?
Қандай циклдар операторлары бар?
Қандай опертор циклді параметрмен ұйымдастыруға мүмкіндік береді?
Қандай оператор шарттарды тексеруге мүмкіндік береді?
Қандай оператор программаның орындалу кезінде тармақтануды ұйымдастыруға мүмкіндік береді?
№6 дәріс
Стандарты сұраныстар тілі SQL
Дерекқормен жұмыс жасау үшін арнайы тілдер қолданылады, оларды дерекқор тілдері деп атайды. Алдыңғы ДҚБЖ бірнеше өзінің функциялары мен арнайы тілдері қолданылған. Көбінесе екі тіл ерекшеленетін – ДҚ сұлбаларыын анықтайтын тіл (SDL – Shema Definition Language) және деректерді манипуляциялайтын тіл (DML – Data Manipulation Language). Жаңа ДҚБЖ әдетте біріккен интеграцияланған тіл қолданылады, ДҚ құрылуынан бастап барлық қажет құралдарды қамтитын, және ДҚ жұмыс жасайтын базалық пайдаланушылар интерфейсін жасайтын – SQL (Structured Query Language) тілі. ДҚ әрекеттесетін SQL тілі 70- жылдардың ортасында пайда болған.
SQL тілі SDL және DML құралдарын біріктіреді, яғни реляциялық ДҚ сұлбасын анықтауға және деректерді манипуляциялауға мүмкіндік береді. Бұл жағдайда ДҚ объекттерінің аталуы (реляциялық ДҚ - кестелері мен олардың бағаналарының аталуы) тіл деңгейінде қолданылады, өйткені SQL тілінің компиляторы арнайы қолданылатын қызметтік каталог-кестелердің арқасында объекттердің аттарын олардың ішкі идентификаторларына түрлендіруін жүргізеді.
SQL тілі ДҚ тұтастық шектеуін анықтайтын арнайы құралдарды қамтиды. Тұтастық шектеу арнайы каталог-кестелерде сақталады, және ДҚ шектеуінің бақылауын қамтамасыз ету тілдік деңгейде атқарылады, яғни ДҚ модификациялау операторларының компиляция кезінде SQL компиляторы ДҚ бар тұтастық шектеу арқасында сәйкес программалық кодты генерациялайды.
SQL тілінің арнайы операторлары ДҚ көрсетімін анықтауға мүмкіндік береді, олар ДҚ сақталатын аталымды бағаналарымен сұраныстар (реляциялық ДҚ әр сұраныстың нәтижесі кесте болып табылады) болып табылады. Көрсетімдердің қамтылыу тілдік деңгейде орындалады.
SQL деректерінің типтері.
SQL келесі негізгі деректердің типтері қолданылады, олардың пішімдері түрлі ДҚБЖ кішкене айырмашылықтары болуы мүмкін:
INTEGER – бүтін сан (әдетте 10 цифрға дейін немесе таңбаға);
SMALLINT – «қысқаша бүтін» (әдетте 5 цифрға дейін немесе таңбаға);
DECIMAL(p,q) - ондық сан, p цифры бар (0< p<16) және таңба; q арқылы ондық нұктенің оң жағындағы цифрлар беріледі (q<p, егер q=0, онда ол түсірілуі мүмкін);
FLOAT – ДҚБЖ типімен анықталатын 15 цифрлық нақты сан және бұтінсанды ретпен;
CHAR(n) - n символдан тұратын бекітілген үзындықпен символды жол (0< n <256);
VARCHAR(n) – үзілмейтін n символдан тұратын (n>0 бірақ 4096 кем емес, және түрлі ДҚБЖ әр түрлі) айнымалы ұзындықпен символды жол;
DATE – арнайы командалармен анықталатын дата (мерзім) пішімі (үнсіз mm/dd/yy); дата өрістері тек нақты датаны сақтауы мүмкін;
TIME - арнайы командамен анықталатын уақыт пішімі (үнсіз hh.mm.ss);
DATETIME – дата және уақыт комбинациясы;
MONEY – ақша бірлігімен анықталатын символ (($, руб, ..) ақша пішімі және оның орналасуы (суффикс немесе префикс), дробты бөлігінің дәлдігі және ақша мәнін көрсететін шарт.
«Кесте» түсінігі, әдетте нақты немесе базалық кестемен байланысады, яғни әр жол үшін негізінде машиненің физикалық жадысында сақталатын оның егізі болады. Бір ақта SQL виртуалды (бар сияқты) кестелер қатарын құрады және қолданады: онда базалық кестелерден мүмкін көрсетімдерден алынатын деректер бойынша сұраныстардың қортындылары түзелетін көрсетімдер, меңзерлер және аталымсыз жұмыс кестелері. Бұл кестелер ДҚ болмайды, бірақ пайдаланушының көз қарасы бойынша бар болып саналады.
Дерекқорды құру үшін келесі команда қолданылады:
CREATE DATA BASE <дерекқор_аты>
[міндетті емес_параметрлер ]
Міндетті емес параметрлерінің құрамы қолданылатын ДҚБЖ байланысты, олар болмаған жағдайда командада үнсіз мәндер қолданылады.
Деректер кестесінің құрылымын анықтау үшін (CREATE TABLE) құру командасы және (ALTER TABLE) кесте құрылымын өзгерту командалары қолданылады. Кесте екпінді ДҚ жасалады. Егер екпінді ДҚ жоқ болса, онда ДҚБЖ бос кесте құрылады (ДҚ құрамына кірмейтін).
Деректер кестесінің құрылымын құратын команда келесі пішімге ие:
CREATE TABLE <кесте_аты> (<1өрісті_анықтау> [,<2өрісті_анықтау>...] [шектеуді_анықтау]).
Бұл команда аты көрсетілген жаңа деректер кестесін құрады. Әр өріс үшін оның аты мен типі белгіленеді. Түрлі енді өрістер типтеріне қосымша қажет енді белгілеу қажет. Жылжымалы үтірлі сандардың өрістері үшін (ондық разрядтар санының) нақтылығы белглену тиіс. Егер құрылатын өріс түйінді болса (индекс), онда түйіндінің (индекстің) типін белгілеу қажет. Сонымен бірге өрістерді анықтағанда мәндерді енгізгенде міндетті түрде толтыру, үнсіз келісім бойынша мәнді жазу және мәндерді шектеп енгізу NOT FULL белгісін көрсетуге болады. Кестенің шектеуін анықтау, кесте деңгейінде шектеу беру үшін қолданылады, және бастапқы , сыртқы кілттер анықтауы көрсетілуі мүмкін.
Visual Fox Pro CREATE TABLE командасы аты белгіленген жаңа деректер кестесін құрады (DBF- файл). Әр өpic үшін анық аты және типі (С-символдық, N-сандық, F-
Негізгі әдебиет: [1] с.128-132, [2] с.9-16, 26-32, [5] с.12-:19.
Бақылау сұрақтары:
SQL тілі ДҚБЖ тілдік құралдарының қай класына жатады?
SQL командаларының категорияларын атаңыз?
SQL қолданылатын негізгі деректер типін атаңыз?
SQL қандай командасы деректер кестесінің құрылымын анықтауға қолданылады?
SQL қандай командасы дерекқорға жазбаларды қосуға мүмкіндік береді?
№7 дәріс
SQL сұраныстары
Бір немесе бірнеше кестелерден кез келген деректер санын алу үшін барлық сұраныстар тек бір SELECT командасы арқылы орындалады. Жалпы түрде SELECT командасының жүзеге асырылу нәтижесі ол басқа кесте болып табылады. Бұл жаңа (жұмыс) кестесіне тағыда SELECT операциясы қолданылуы мүмкін ж т.б., яғни бұндай операциялар бір біріне қабаттасқан болуы мүмкін. SELECT командасы келесі түрде қолданылуы мүмкін:
- жолдар және бағаналардан немесе бірнеше кестелерден (көрсетімдер) құрылған кестелер жолын шығару және алу үшін өзіндік команда;
- WHERE элементі немесе HAVING шарты («қабаттасқан сұраныс» деп аталатын сөйлемнің қысқаша түрі);
- CREATE VIEW, DECLARE CURSOR немесе INSERT командаларындағы таңдау фразасы;
- глобалды айнымалылардың мәндеріне құрылған кестенің (INTO фразасы) жазбаларын меншіктеу құралы;
Бұнда статикалық конструкцияларда келесі белгілер қолданылады:
- * жұлдызша «барлығы» - деген белгісіне – программалауға қолданылады, яғни «анықтаманы қанағаттандыратын барлық жағдайлар»;
- квадратты жақша ([ ]) – бұл жақшаға алынған конструкциялар міндетті емес болып табылады (яғни түсірілуі мүмкін);
- фигуралық жақша ({}) – бұл жақшаға алынған конструкциялар бүтін синтаксистік бірлік ретінде қарастырылуы керек, яғни SQL синтаксисында қолданылатын синтаксистік конструкцияның талдау ретін анықтауға мүмкіндік береді, кәдімгі жақшаларды аустыра отырып;
- көп нүкте (....) – синтаксистік бірлік, бір немесе бірнеше рет қайталанатынына белгі көрсетеді;
- тура сызық ( | ) – екі немесе одан көп мүмкіндіктердің таңдау мүмкіндігін белгілейді. Мысалы ASC|DESC, ASC немесе DESC терминдерінің біреуін таңдауға болатынына көрсетеді; егер таңдау элементінің біреуі квадратты жақшаға алынған болса, ол үнсіз таңдалатынын белгілейді ([ASC] | DESC бұл жерде ASC таңдалады).
- үтірлі нүкте (;) – SQL командаларының аяқталу элементі;
- үтір (,) – тізім элементтерін бөлу үшін қолданылады;
- бос орын ( ) – SQL командаларының кез келген синтаксистік конструкциялар арасында көрсетуді ұлғайту үшін енгізіледі;
- қалың латын әріптері мен символдары – SQL тілінің конструкцияларын жазу үшін қолданылады және қалай көрсетілсе солай жазылу міндет (егер арнайы айтылмаса);
- жолдық әріптер – конструкцияларды жазу үшін қолданылады олар пайдаланушы таңдаған нақты мәндермен алмасу керек, және нақтылық үшін бұл конструкциялардың бөлек сөздері бір бірімен сызылу символымен ( _ ) байланысады;
- кесте, бағана, ... терминдерін – кесте_аты, бағана_аты терминдерімен алмастырады (синтаксистік конструкциялар текстін қысқарту үшін);
- кесте термині – базалық_кесте, көрсетім немесе псевдоним сияқты кестелер түрін жалпылау үшін қолданылады, бұнда псевдоним уақытша (сұраныс орындалған кезде) атын өзгерту және (немесе) базалық_кестенің (көрсетім) жұмыс көшірмесін құру үшін.
SELECT (таңдау) командасы келесі пішімге ие:
SELECT [DISTINCT] |<псевдоним>.] <өрнек)> [AS <бағана>] [,[<псевдоним>]<өрнек> [А8<бағана>]...]
FORM <кесте_аты1>[<псевдоним 1>] [,<кесте_аты2>[<псевдоним 2>].]
[[INTO <қабылдаушы>]/[ТО FILE <файл_аты> [ADDIT1VE]/TO PRINTER]] [NOCONSOLE] [PLAIN] [NOWAIT]
[WHERE <байланыс_шарты> [AND <байланыс_шарты>]
[AND/OR <байланыс_шарты>]]
[GROUP BY <бағана> [, <бағана>...]] [HAVING <іріктеу_шарты>]
[ORDER BY <бағана> [ASC/DESC] [,<бағана> |ASC/DESC]...]]
Төменде команданың операцияларының тағайындалуы көрсетілген:
SELECT –көрсетілген бағаналардан деректерді (таңдау) және (егер қажет болса) шығару алдында белгіленген функциялар және (немесе) өрнектер бойынша түрлендіру жасау;
DISTINCT – іріктеу кезінде бірдей жолдаржы шығару мүмкіндігін болдырмайды;
FORM – көрсетілген кестелерде осы бағаналар орналасқан;
WHERE – (қайда) кестеде көрсетілген жолдар жолдарды талдайтын белгіленген шарттарға сәйкес болу керек;
GROUP BY - әрбір топқа бірлік мәнін алу үшін, SELECT фразасында SQL SUM(қосынды), COUNT (саны), MIN (минималды мән), MAX (максималды мән) немесе AVG (орташа мән) функцияларын қолданып белгіленген топтастырылатын бағаналар бойынша топтау;
HAVING – нәтижесінде тек белгіленген топтарды талдау шарттарына қанағаттандырылатын топтарға (ие болу);
Салыстырмалы операторлардан (=| <>|<| <=|>|>=) басқа WHERE фразасында BETWEEN (арасында), LIKE (ұқсас), IN (оларға жататын), IS NULL (белгіленбеген), және EXISTS (бар) шарттары қолданылады, олар NOT операторымен орындалуы мүмкін. Жолдарды талдау критерилары логикалық операторлармен байланысқан бір немесе бірнеше шарттардан құрастырылады:
AND – қашан AND арқылы бөлінген екі шарт қанағаттандырылса;
OR – OR арқылы бөлінген бір шарт қанағаттандырылса;
AND NOT – бірінші шарт қанағаттандырылса, ал екінші қанағаттандырылмау тиіс;
OR NOT – қашан немесе бірінші шарт орындалу керек немесе шарт орындалмау керек, бірақ AND OR үстінде артықшылығы бар (бірінші барлық AND операциялары орындалады, содан соң OR операциялары). WHERE операцияларының дұрыс нәтижесін алу үшін шарттар дұрыс ретімен енгізілу қажет, оны жақша енгізуімен ұйымдастыруға болады.
Шарттарды өңдеу кезінде сандар алгебралық салыстырылады – кері сандар оң шамадан аз болып саналады, олардың абсолютті шамаларына қарамастан. Символдар жолы олардың нақты ДҚБЖ қолданылатын көрсетілген кодтарына сәйкес салыстырылады, мысалы ASCII кодында. Егер ұзындығы әр түрлі екі символдар жолы салыстырылатын болса, олардың ұзындығы бірдей болу үшін салыстыру алдында қысқа жол оң жағынан бос орынмен толықтырылады.
SELECT фразасы тек қана өрнек емес, және бөлек сандық немесе мәтіндік константаларды қоса алады. Мәтіндік константалар апострофтарға (‘) алыну қажет.
WHERE фразасының синтаксисінде көрсетілген кестенің қажет жолдарынталдау үшін салыстыру операторларын қолдануға болады, =(тең), <>(тең емес), < (кем), <= (кем немесе тең), > (көп), >=(көп немесе тең), олар NOT операторымен бірігіп «кем емес» және «көп емес» қатынастарды құруы мүмкін.
Белгіленген бағана немесе бағаналарды реттеу үшін ORDER BY опциясы қолданылады. Үнсіз сұрыптау көбейтумен (ASC) орындалады, бірақ төмендеумен (DESC) белгленуі мүмкін.
ORDER BY опциясын қолданылатын SELECT командасының қысқартылған варианты мынандай түрде көрінеді:
SELECT <өрнек> FROM <кесте_аты>
ORDER BY <бағана 1> [ASC/DESC] [,<бағана 2>..]
Белгіленген бағананың реттелуі бағананың аты немесе номері бойынша орындалуы мүмкін.
ORDER BY опциясында әдетте есептелетін өрнектерді қолдануға болмайды. Егер есептелетін мәндерімен бағанада реттеу орындау қажет болса онда бағананың номері белгіленеді.
Таңдалған деректерді объектті белгілеу үшін INTO немесе TO опциялары қолданылады.
Visual Fox Pro –да INTO/TO опцияларын қолданатын SELECT командасының қысқартылған варианты төменде көрсетілген:
SELECT <өрнек> FROM <кесте_аты>
[INTO TABLE <кесте_аты>] / [INTO CURSOR <меңзер_аты>] /
[INTO ARRAY <массив_аты>] /
[TO FILE <файл_аты> [ADDITIVE]] /
[TO PRINTER] [NOCONSOLE] [PLAIN] [NOWAIT]
Visual Fox Pro –да таңдау деректерін қабылдай алатын типтері төменде көрсетілген:
TABLE <кесте_аты> - аты белгіленген жаңа кесте қабылдауыш болып табылады;
CURSOR <меңзер_аты> - сұраныс нәтижесі аты белгіленген меңзерге орналастырылады. Меңзер – ол уақытша деректер жиынтығы, ол «тек оқуға» режимі бар жады аймағы немесе уақытша файл болуы мүмкін. Меңзер деректері, мысалы BROWSE командасында көрсетілуі және басылуы мүмкін, олардан меню ж т.б. пайда болуы мүмкін. Меңзер басқа SELECT командасымен өңделуі мүмкін. Меңзер бағаналарына бағаналардың аты бойынша префикспен – бағана аты (нұкте арқылы) қатынау керек.
ARRAY <массив_аты> - сұраныс нәтижесін қабылдаушы ретінде жаңа аты белгіленген екі өлшемді массив қолданылады.
Сонымен қатар, таңдама деректерін файлға немесе принтерге қайта жіберуге болады. Ол үшін командада TO FILE <файл_аты> ADDITIVE /TO PRINTER қабылдауышы белгіленеді және таңдама аты анықталған текстілік файлға немесе принтерге қайта жіберіледі. Егер ADDITIVE сөзі қолданылатын болса, онда таңдама бар файлдың соңына қайта жазылусыз қосылады.
Негізгі әдебиет: 1[122:128], 2[16:26], 6[12:19].
Бақылау сұрақтары:
SELECT командасын қолдану варианттарын атаңыз?
SELECT командасында жолдарды таңдау шарттарын қалай беру керек, ол жағдайды қандай операторлар қолданылады?
SELECT командасының қандай опциясы берілген бағана бойынша реттеуге қолданылады?
SELECT командасының қандай опциясы деректер таңдамасын қабылдайтын объектті анықтау үшін қолданылады?
Деректер таңдамасын қабылдай алатын типтерді атаңыз?
SQL кұрделі сұраныстары
SQL стандартты функциялар қолданылуы мүмкін (SQL агрегатты функциялар) COUNT (*) арнайы жағдайынан басқа, әр функция бір кестенің бағанасының мәндерімен байланысады және бір мән құрады, ол төмендегідей анықталады:
COUNT – бағананың мәндерінің саны;
SUM – бағананың мәндерінің қосындысы;
AVG – бағананың орташа мәні;
MAX - бағанадағы ең үлкен мән.
Агрегатты функциялар SELECT операторында қолданылатын өріс аттары сияқты қолданылады, бірақ бір алыптастаумен: олар өріс атын аргумент ретінде алады. Бұл, әрине өрісті таңдаудан ажыратылады, өйткені әр кезде жалғыз мән қайтарылады, кестеде қанша жол болса да. Егер, мысалы топтағы бір бағананың түрлі санды мәндерін есептеу керек болса, онда DISTINCT түйінді сөзді бағананың атымен бірге қолдану қажет.
Мысалы, KADR кестесінен жал ақының максимальды, минимальды және орташа мәндерін шығару үшін, (ZARP өрісі) келесі команданы қолдану керек:
SELECT MIN (ZARP), MAX(ZARP), AVG(ZARP) FROM KADR.
WHERE сөйлемінде агрегатты функцияларды қолдануға болмайды, өйткені предикаттар жалғыз жол терминімен бағаланады, ал агрегатты функциялар – топ жолдарының терминімен.
SUM және AVG функцияларымен тек сандық өрістер қолданылуы мүмкін. COUNT, MAX және MIN функцияларымен сандық және символдық өрістер қолданылуы мүмкін. Символды өрістерді қолданғанда MAX және MIN оларды ASCII кодтың эквивалентіне түрлендіреді және алфавит ретте өңдейді. Кейбір ДҚБЖ қабаттасқан агрегаттарды қолдануға мүмкіндік береді, бірақ ол ANSI стандартынан ауытқу болып табылады.
SELECT командасының GROUP BY опциясы көрсетілген бағана (немесе бағаналардың) бірдей мәнді жазбаларын топтастыруға мүмкіндік береді.
SELECT <өрнек> FROM <кесте_аты>
GROUP BY <бағана 1> [, <бағана 2>...] [HAVING <іріктеу_шарты>]
GROUP BY опциясы шығатын мәліметтерді топтастырылатын бағаналарды анықтайды. Бағаналардың сәйкес келетін мәндері, кестенің барлық жазбалары жеке жолдардың іріктеулерінде көрсетіледі. Топтастыру, кейбір топтардың біріккен сипаттамаларын алу үшін өте ыңғайлы. (топтағы жазбалар саны, орташа мәндері, қосындылары және т.б.)
HAVING опциясы <іріктеу_шарты> топты іріктеу кезіндегі қалыптасқан мәліметтердің іріктеуінің критериларын береді, яғни топтастырылмаған мөліметтерге арналмаған WHERE опциясының ролін орындайды.
HAVING бөлігінің орындалу нәтижесі болып табылатын топталған кесте, ол есептеу нәтижесінің іздеу шарты TRUE болатын қатардың топтарынан тұрады. Егер HAVING бөлігі кестелік өрнекте болса, GROUP BY құрамында болмаса, онда оның орындалу нәтижесі бос кесте немесе топтау бағаналарысыз бір топ ретінде қарастырылатын кестелік өрнектердің алдыңғы бөліктері болады.
Деректерді топтағанда HAVING опциясында SQL агрегатты функцияларын қолдануға болады. Осылайша агрегатты функциялар SELECT жолының шығару нәтижесін өрнектеу және де қалыптастырылған HAVING топтарын өңдеу шарттарын өрнектеу үшін қолданылады. Бұл жағдайда әр агрегатты функция әр белгіленген топ үшін есептеледі. Агрегатты функцияларды есептеу кезінде алынған мәндер сәйкес нәтижелерді шығару және топтарды іріктеу шарттары үшін қолданылуы мүмкін.
Нәтижеге топталған өріс мәнін және бірнеше агрегатты функцияларды қосуға болады, ал топтастыру шартында бірнеше өрістерді қолдануға болады. Бұл жағдайда топтар белгіленген өрістер тобынан түзеледі. Агрегатты функциялармен операциялар көп кестелерді біріктіруге қолданылуы мүмкін.
SELECT командасын берілген деректерді бірнеше кестеден бір уақытта іріктеу үшін қолдануға болады.
SELECT командасының (таңдау) қысқартылған варианты бұл жағдайда келесі пішімге ие:
SELECT [<псевдоним>.]<өрнек> [AS <бағана>][, [<псевдоним>]<өрнек> [AS <бағана>]..]
FROM<1кесте_аты>[<псевдоним1>][,<2кесте_аты> [<псевдоним2>].]
[WHERE <іріктеу_шарты> [AND <байланыс_шарты>]
[AND/OR <іріктеу_шарты>]] [AND <іріктеу_ шарты>]
[AND/OR <іріктеу_шарты>]]
Егер әр түрлі кестелерден таңдап алынған өpic аттары бір-біріне сәйкес болса, онда бағаналар алфавит бойынша бір әріппен қосылатын сәйкес аттар (ие болады) алады, мысалы, FAM_A, FAM_В және т.б. бағаналарға есептерді шығарудың белгілі бір түрде нәтижесінде алынған аттар беріледі. Олардың аттары ЕХР сөздерінен және тізбекті сандардан (ЕХР_1, ЕХР_2 және т.б.) тұрады. SQL алыптастау жеке функцияларын қолданатын есептерді құрайды: AVG, MIN, MAX, SUM, COUNT іріктеуге түскен барлық жазбалардың есебін білдіретін, соңғы функция аргументтерінде (COUNT (*)) жұлдызшасынан тұрады. Бұндай жағдайда бағана аттары, функция аттарын қосады. Үнсіз қалыптасқан аттардың орнына, бағаналарға басқа аттар беруге болады, оларды AS сөздерінен кейін көрсетуге болады, мынандай <есептеулер> AS <бағананың_жаңа_аты>.
Псевдоним болып тек қана деректер кестесінің псевдонимі (ALIAS) болуы тиісті емес, SELECT командасында меншіктелетін кез келген ат болуы мүмкін. Бұл уақытша берілетін ат <псевдоним> опциясында белгіленеді, кестенің атынан кейін FROM сөзінен кейін және тек осы SELECT командасында оның басқа опцияларында (локалды псевдоним) қолданылады.
Мысалы, KADR және STUD кестелерінен барлық фамилияларды шығару үшін, локалды Р және Т псевдонимдері қолданылады және де шығару кезінде FAM_A және FAM_B бағана аттарын KFIO және STFIO өзгерту үшін, келесі команда қолданылады:
SELECT P.FAM AS KFIO, T.FAM AS STFIO FROM KADR P, STUD T
SELECT командасында берілгенді іріктеудегі сұраныстарда, өте күрделі шарттар қоюға (беруге) болады. Байланыс шарты, егер іріктеу деректер кестесінің біреуінен жасалса қолданылады жене әр түрлі кестелерден берілгендердің біріктіру критериларын анықтайды. Байланыс шарттарында псевдонимдері бар әр түрлі кестеден ерістер көрсетіліп мынандай қатынас белгілері қолданылады: =, , = =, >, >=, <, <=. AND белгілерімен біріктірілген, бірнеше критерилар тапсырмалары беріледі.
Мысалы, экранға KADR кестесінен (FAM өpici) қызметкерлер фамиялияларын шығару үшін, ал TABEL кестесінен табельдік номерлерге сәйкес келетін, жазбалар үшін жұмыс күнінің санына сәйкес болатын (WD өрісі), байланыс шартты команданы міндетті түрде қолдану керек. (кестенің псевдонимдері есебінде кесте аттары көрсетілген):
SELECT KADR.FAM, TABEL. WD FROM KADER, TABEL WHERE KADR.TAB=TABEL.TAB.
Іріктеу шарттары үшін өрнектерден тек бір кесте ұқсас болып тұрғызылады және OR, AND және NOT логикалық операторлары ғана қолданылады.
LIKE операторы "-" символы (белгісі) жолдардағы белгісіз жеке белгілері керсететін, ал белгі "%" кез келген олардың санынан тұратын үлгі бойынша салыстыру шартын тұрғызуға мүмкіндік жасайды. LIKE операторының пішімі:
<өрнек > LIKE <үлгі>
BETWEEN операторы бастапқы және ақырлы мәндердің ауқымын белгілейді және оператордың сол жағында орналасқан өрнек белгіленген ауқымда орналасқанын тексереді. BETWEEN операторының пішімі:
<өрнек > BETWEEN <төменгі_мән> AND <жоғарғы мән>
IN операторы, IN сөзінің сол жағында тұрған өрнек, саналғандардың ортасынан одан оңға қарай тұратындығын тексереді.
IN оператордың пішімі:
<өрнек> IN <өрнек 1>, < өрнек 2>,...)
Негізгі әдебиет: [1]с.122-128, [2] с.16-26, [5] с.12-19.
Бақылау сұрақтары:
1. SQL функцияларының арнайы стандартты функцияларын атаңыз және олардың тағайындалуы?
2. SELECT командасының қандай опциясы белгіленген бағананың бірдей мәндерімен жазбаларды топтауға мүмкіндік береді?
3. Бірнеше кестелерден бір уақытта деректерді таңдау үшін SELECT командасы қалай қолданылады?
4. Топты таңдау үрдісінде әр бір түзілген деректерді талдау критериін SELECT командасының қандай опциясы анықтайды?
5. SQL операторларының тағайындалуы?
№8 дәріс
SQL күрделі сұраныстары
JOIN операторы кестені кез келген критерии (шарт) бойынша байланыстырып бірнеше кестедегі деректерді қосуға мүмкіндік береді. Байланыстың төрт түрлі типі бар.
INNER JOIN – бұл байланыс таңдамаға бірінші және екінші кестеден тек қана белгіленген шарттарға қанағаттандырылатын мәндерді қосуға мүмкіндік береді ;
LEFT OUTER JOIN – бұл байланыс таңдамаға бірінші кестеден барлық мәндерді және екінші кестеден белгіленген шарттарға қанағаттандырылатын мәндерді қосуға мүмкіндік береді;
RIGHT OUTER JOIN – бұл байланыс таңдамаға екінші кестеден барлық мәндерді және бірінші кестеден белгіленген шарттарға қанағаттандырылатын мәндерді қосуға мүмкіндік береді;
FULL OUTER JOIN – бұл байланыс таңдамаға бірінші және екінші кестеден барлық мәндерді қосуға мүмкіндік береді.
Бұл жағдайда екі кестеден таңдама орындалғанда SELECT операторымен орындалатын әрекет кестелердің тоғыстыруы деп аталады, ал егер тоғыстыру OUTER мен орындалатын болса, онда кестелердің тоғыстыруын сыртқы деп атайды. Бір сұраныс ішінде OUTER бірнеше кестелерді қолдануға болады (бұндай кестелерді бағынатын деп атайды, ал OUTER сіз кестелерді - жетекші).
Мысалы, , экранға KADR кестесінен (FAM өpici) қызметкерлер фамиялияларын шығару үшін, ал TABEL кестесінен табельдік нөмерлерге сәйкес келетін, жазбалар үшін жұмыс күнінің санына сәйкес болатын (WD өрісі), байланыс шартты LEFT OUTER JOIN командасын міндетті түрде қолдану керек. (кестенің псевдонимдері есебінде кесте аттары көрсетілген):
SELECT KADR.FAM, TABEL.WD FROM KADR LEFT OUTER JOIN TABEL
ON KADR.TAB=TABEL.TAB
Бұл команда орындалған кезде KADR кестесінен (сол кестеден) тізбекті барлық жазбалар қайта қаралады және сұраныс нәтижесіне қосылады. KADR әр жазба үшін TABEL кестесі қайта қаралады. TABEL кестесінен KADR.TAB=TABEL.TAB шартына қанағаттандырылатын жазба табылған кезде, табелдік нөмердің мәніне сәйкес келетін бар жолдың нәтижесіне WD өрісіне TABEL жазбасына сәйкес мән қосылады. Егер TABEL еш қандай жазба табылмаса, онда WD өрісі NULL мәнін қабылдайды.
Екі немесе одан көп SELECT операторларының жұмыс нәтижелерібір таңдамаға UNION немесе UNION ALL операторлары арқылы бірігуі мүмкін. Екі SELECT операторларының ортасында орналасқан UNION операторы екі таңдамадан біреу жасайды, нәтижелі таңдамада қайталанатын жазбалар болмайды. Нәтиже бір немесе бірнеше таңдамаға кіретін барлық жолдан тұратын көптік болады. Бірақ бастапқы таңдама нәтижесінде бірдей өріс сандарымен болуы тиіс (бағаналары), тип және бір таңдаманың i-ші өрісінің көлемі кез келген басқа таңдаманың типімен және i-ші өрісінің көлемімен сәйкес келу тиіс.
UNION опциясын қолданғанда таңдаманың алатын нәтижесіне константаны қосу көп жағдайда пайдалы болады. Бағана тақырыбы таңдамада бірінші сұраныспен анықталады. Мысалы, STUD кестесінен 2000 жоғары стипендия алатын (STIP өрісі) немесе Алматы қаласында тұратын (ADRESS өрісінде тұратын қала белгіленеді), студенттер тегін (FAM өрісі) таңдау үшін түсініктеме текст ретінде текстілік константа қолдануға болады:
SELECT FAM AS Тегі, “стипендия>2000” AS Таңдама_белгісі FROM STUD
WHERE STIP> 2000
UNION
SELECT FAM, “ Алматы қаласы ” FROM STUD WHERE ADRESS LIKE “%Алматы”
UNION операторының көмегімен бірнеше SELECT командасын біріктіруге болады, алайда ORDER BY опциясы UNION операторының көмегімен тек соңғы SELECT командасына кіреді. Реттеу критериі белгіленген кезде таңдамада өрістердің нөмері көрсетіледі. Мысалы, KADR кестесінен 10000 кем жалақы алатын қызметкерлер тегін (FAM өрісі) немесе Алматы қаласында тұратындарын (ADRESS өрісі) таңдау кезінде мәндерді алдымен екінші бағана бойынша (таңдама белгісі), сонан кейін бірінші бағана (тегі алфавит бойынша) бойынша реттеуге болады:
SELECT FAM , “жалақы<1000”
FROM KADR WHERE ZARP<10000
UNION
SELECT FAM , “ Алматы қаласы” FROM KADR
WHERE ADRESS LIKE “%Алматы” ORDER BY 2,1
Үнсіз бойынша UNION операторы нәтижеден қайталанатын жолдарды алып тастайды. Барлық жолдарды көру үшін UNION операторын ALL опциясымен қолдану тиіс. (UNION ALL).
Кәзіргі кезде SQL тек қана сұраныс тілі емес, ал клиент-серверлі типті релляциялық дерекқормен әрекеттесетін көп танымал тіл. SQL стандартты инструкциялар теруін SQL қолдайтын кез келген дерекқор басқару жүйесінде қолдануға болады. Бірінші американдық SQL стандарты 1986ж. ANSI Х3.135-1986 деп тіркелген. ANSI (Американдық ұлттық стандарттау институты ) – бұл ұйым білімді және инженерлі стандарттарды құру және жаңартумен айналысады. ANSI – SQL стандарты бүкіл әлемдік стандарт ретінде 1989ж. – SQL/89 (SQL/1) Халықаралық стандарттау ұйымымен (ISO) БҰҰ бөлімшесімен қабылданған. Кәзіргі уақытта РДҚБЖ ANSI Х3.135-1992 стандартын қолдайды, ол SQL/92 (SQL/2) деп көп танымал. Кәзіргі кезде SQL/3 стандарты қабылданған.
SQL реляциялық дерекқорды басқару тілі болып табылады, тек программалау тілі емес. SQL дерекқорға қатынау операторлары анықталған, бірақ деректерді көрсету, қолданушымен оларды енгізу әдістері сипатталмаған. ANSI SQL программаларды орындауды басқару құралдарын (тармақтану, циклдар), пішін немесе отчет құратын құралдарын қоспайды. Ал басқару функциялары программалау тілдерінде жүзеге асырылады (мысалы, xBase, C++, COBOL және басқа), оларға SQL тілі құрамдастырылады. Бірақ кейбір SQL нұсқаларында, мысалы Transact- SQL Sybase және Microsoft SQL Server ДҚ серверлерінде қолданылатын екі опертор қосылған (IF ELSE, WHERE) .
Клиент-серверлі сәулетте SQL тілімен жұмыс жасағанда барлығы транзакция түсінігінде құрылады. Транзакция (transaction)- бір немесе бірнеше SQL инструкцияларынан тұратын және бір бүтін ретінде қарастырылатын, бір немесе бірнеше серверде орындауға тиіс (соңғы жағдайда ол үлестірілген транзакциялар) логикалық блок операциялары.
Негізгі әдебиет: [1] с.122-128, [2] с.16-26.