1 Деректер қорына кіріспе


 дәріс. Қолданбалы бағдарламаларда SQL тілін қолдану



Pdf көрінісі
бет23/26
Дата02.10.2023
өлшемі1,23 Mb.
#112432
1   ...   18   19   20   21   22   23   24   25   26
Байланысты:
МӘЛІМЕТТЕР ҚОРЛАРЫН БАСҚАРУ ЖҮЙЕЛЕРІ

13 дәріс. Қолданбалы бағдарламаларда SQL тілін қолдану
Мақсаты

қолданбалы 
бағдарламалардан 
деректер 
қорына 
сұраныстардың құрылуының негізгі мүмкіндіктерін көрсету.
Деректер қорымен негізгі жұмыс қолданбалы бағдарламаларды қолданып 
жүргізіледі, олардың ішінен деректер қорына сұраныстарда жүреді. Бұл 
жағдайда жұмыстың интерактивті режимі қолданыла алмайды, SQL-
сұранысының мәтіні қолданбалы бағдарламаға қосылуы керек (егер сұраныс 
толығымен алдын ала анықталса), немесе қолданбалы бағдарлама жұмысының 
үрдісінде құрылуы қажет.
Бағдарламалық SQL бағдарламалаудың бір тілінде жазылған, 
қолданбалы бағдарламалардың ішіне SQL-сұраныстарды салу үшін арналған. 
Сонымен бірге мұнда келесі сұрақтар туындайды:
1)
Алгоритмдік тілдің компиляторлары қолданбалы бағдарламалар 
мәтініне SQL операторлар тізбегін шығару мүмкіндігіне ие болуы қажет.
2)
Компилятор жоғарғы деңгейдегі бағдарламалау мүмкіндіктерін 
(айнымалы, тармақталу, циклдар) және SQL мүмкіндіктерін (табиғиға жақын, 
тілдерде сұраныс) біріктіруі қажет.
Бұл мәселелерді шешімі SQL стандартында ішінара жазылған.
Жұмыстың интерактивті режимінде SQL-сұраныстарының орындалу 
алгоритмін қарастырамыз. SQL-сұранысты жүзеге асыру жұмысы уақыты 
ішінде қолданушының сұранысты орындау нәтижелерін күтуге тура келетінін 
көру қиын емес. Егер біршама уақыттан кейін қолданушыға сол сұранысты 
қайтадан орындауға тура келсе, ДҚБЖ, алдыңғы жүгіну кезіндегі, сол 
әрекеттерді қайта жасайды. Механизмнің біршама жетілмегендіктері:
- бірдей сұраныстар үшін әр кез осы сатылар қайтадан орындалып 
отырады;
- ДҚБЖ алға кетуі бар интерактивті сұраныстарды өңдей алмайды.
Мұндай мәселелердің шешімі – сұраныстарды өңдеу бойынша 
әрекеттердің бөлігін бір рет орындау қажет, нәтижелерді біршама түрде сақтау, 
ал содан кейін қанша рет қажет болса, сонша рет орындау қажет екені анық. 
Бұл идея бағдарламалық SQL-дің негізгі идеяларының бірі болып табылады.
Осылайша, бағдарламалық SQL келесілерге:
- жоғарғы деңгейдегі бағдарламалау тілінде бағдарламалау мәтінінде 
интерактивті SQL операторларын қолдануға;
- интерактивті SQL операторларымен қатар, SQL-ді толықтыратын және 
оның мүмкіндіктерін көтеретін, арнайы жаңа құрастырылымдарды қолдану;
- сұраныста параметрлерді беру үшін, бағдарламада жарияланған, 
айнымалыларды сұраныс мәтінінде қолдану;
- сұраныс нәтижелерін бағдарламаға қайтару үшін, интерактивті SQL 
жоқ, арнайы құрастырылымдарды қолдану;
- бағдарлама мен ДҚБЖ келісілген жұмыстардың соңын қамтамасыз ете 
отырып, бағдарламамен бірігіп сұраныстардың компиляциясын жүзеге асыруға 
мүмкіндік береді. бағдарламаны орындау сатысында жұмсалатын, уақытты 


57 
үнемдей отырып, сұраныстарды талдау және оңтайландыру бойынша 
әрекеттерді алдын ала орындау (компиляция сатысында).
Қазіргі уақытта қолданбалы бағдарламаға SQL тілінде сұраныстарды 
тұрғызудың үш нұсқасы қолданылуда: статикалық SQL, динамикалық SQL 
және қосымшаларды бағдарламалаудың әртүрлі интерфейстеріне негізделген, 
әдіс (API). Сәйкес нұсқаларын қарастырайық. 
Статикалық SQL – жоғарғы бағдарламалау деңгейдегі бағдарламалау 
тілде бағдарлама мәтінінің ішіне SQL-операторларын салу үшін арналған, 
бағдарламалық SQL түрлері.
Статикалық SQL негізгі ерекшелігі оның атауымен анықталады: ішіне 
салынған сұраныстар қолданбалы бағдарламаны жазу сатысында нақты 
анықталуы қажет, себебі сұраныстардың нақты мәтіні қолданбалы 
бағдарламаның ішіне қойылады.
Статикалық SQL жұмысымен байланысты, екі негізгі сатыны – 
бағдарлама 
компиляциясы 
және 
бағдарлама 
жұмысы 
(орындалуы) 
қарастырамыз.
Компиляция сұлбасы және бағдарламаны құрастыру келесі түрде болады
(13.1 сурет): 
- жоғарғы деңгейде бағдарламалау тілдері операторларымен және SQL 
операторларынан тұратын, бағдарлама арнайы бастапқы процессордың 
кірісінде беріледі, ол одан, SQL-мен байланысқан, бөліктерін бөледі; 
- ішіне салынған SQL нұсқауының орнына бастапқы процессор ДҚБЖ 
арнайы функциялардың шақыруын ұсынады. бағдарламалау тілдерімен 
байланысына арналған мұндай функциялардың кітапханалары барлық таралған 
ДҚБЖ арналған. Ерекше айта кету қажет, бұл кітапханаларда «жабық» 
интерфейс болады, яғни кітапхананы жасақтаушылар, сәйкесінше бастапқы 
процессорды жаңартып, оларды барлық қалаулары бойынша өзгерте алады
бұның барлығы бағдарламалаушы бұл үрдіске кіріспеуі қажет екенін айтады;
- SQL нұсқауларының өзі бастапқы процессор жеке файлға бөледі;
- бағдарлама бағдарламалау тілінің әдеттегі компиляторыны кірісіне 
келіп түседі, содан кейін объектті үлгілер пайда болады. Әрі қарай бұл объектті 
үлгілер ДҚБЖ кітапханаларымен бірге бір орындалушы үлгіге – қосымшаға 
жиналады; 
- осы операциялармен қатар, SQL-нұсқаулардан тұратын, файлдармен 
жұмыс жүреді. Әдебиеттерде бұл үлгі көбінесе «деректер қорына сұраныс 
үлгісі» (Database Request Module, DBRM) деген атауға ие [1]. Бұл үлгіні 
өңдеуді, әдетте BIND деп аталатын, арнайы утилита жүзеге асырады. SQL-дің 
әр нұсқауы үшін утилита келесі әрекеттерді орындайды:
а) сұраныстың синтаксистік талдауын жүзеге асырады (сұраныстың 
дұрыстығын тексереді); 
б) деректер қорында, сұраныс сілтелетін, нысандардың барын немесе 
жоқтығын тексереді;
в) сұраныстың орындалуын – сұраныстың орындалу жоспарын қандай 
жолмен жүзеге асыратынын, таңдайды;


58 
д) сұраныстарды орындау жоспарларының барлығы келесіде қолдану 
үшін ДҚБЖ сақталады.
13.1 сурет – Ішіне салынған статикалық нұсқаулары бар бағдарлама 
компиляциясының сұлбасы 
Бағдарламаны орындау сұлбасы келесі түрде болады (13.2 сурет): 
Бағдарлама әдеттегі жолмен орындалуға жіберіледі. Бағдарламамен 
сұранысты орындау қажеттілігіне қарай ДҚБЖ арнайы функциясын шақырту 
жүргізіледі, ол алдын ала құрастырылған сұранысты орындау жоспарын 
іздейді. ДҚБЖ таңдалған жоспарға сәйкес сұранысты орындайды. Сұранысты 
орындау нәтижесі қосымшаға келіп түседі.


59 
13.2 сурет – Ішіне салынған статикалық нұсқаулары бар бағдарламаның 
орындалу сұлбасы 
Жоғарыда көрсетілген сұлбаларын жүзеге асыру үшін статикалық SQL, 
бағдарлама мәтінінде SQL-сұраныстарды бөлуге компиляторға, кестенің осы 
сұраныстарында қолданылатындарды жариялауға, сұраныстарды жүзеге асыру 
нәтижесі ретінде, қателерді өңдеуге арналған айнымалыларды жариялауға және 
т.б. мүмкіндік беретін, қосымша операторлардан тұруы қажет (интерактивті 
SQL-мен салыстырғанда). Статикалық SQL негізгі бұйрықтары келесі кестеде 
берілген.
13.1 кесте – Статикалық SQL негізгі бұйрықтары
EXEC SQL 
Өзінен кейінгі нұсқау ішіне салынған SQL нұсқауы болып 
табылатынын көрсететін, спецификатор

C тілінде – ішіне салынған SQL нұсқауының аяқталғанының 
белгісі
DECLARE 
TABLE 
Кейін ішіне салынған SQL нұсқауларында қолданылатын, 
кестені жариялайды
SQLCODE 
Қателерді өңдеуге арналған айнымалы 
SQLSTATE 
Қателерді өңдеуге арналған айнымалы 
GET 
DIAGNOSTICS 
Қателерді өңдеуге арналған нұсқау
WHENEVER
SQLERROR
SQLWARNING 
NOT FOUND 
GOTO 
CONTINUE 
Қателерді өңдеуді жеңілдетуге арналған бірге қолданылатын 
нұсқаулар жиыны
BEGIN 
DECLARE 
SECTION 
END DECLARE 
SECTION 
Соңында SQL сұраныстарында қолданылатын, айнымалылар 
жарияланатын, аймақтарды анықтауға арналған нұсқаулар


60 
INTO 
SELECT операторында, сұраныстың орындалу нәтижесін 
орналастыру 
қажет, 
айнымалыларды 
көрсету 
үшін 
қолданылады
DECLARE 
CURSOR 
Меңзер
– бірден көп жолдардан тұратын, сұраныс 
нәтижелерін өңдеуге арналған, арнайы құрал. Меңзермен 
жұмыс файлдармен жұмысқа ұқсас. Берілген нұсқау меңзерді 
құру үшін және оны нақты сұраныспен байланыстыру үшін 
қызмет етеді 
OPEN 
Меңзерді ашатын және ДҚБЖ сұранысты орындауға түрткі 
болатын, бұйрық. Сұраныс нәтижесінің бірінші жолының 
алдында курсорды орнатады 
FETCH 
Ағымдағы жол көрсеткішін (меңзер) келесі жолға 
ауыстыратын, бұйрық. Біршама ДҚБЖ және SQL-92 
стандартында, сұраныс нәтижесінің кез келген жолына 
ауыстыратын, FETCH бұйрығының әртүрлі түрлері жүзеге 
асырылған
CLOSE 
Меңзерді жабады және сұраныс нәтижелеріне рұқсатты 
аяқтайды 
Жоғарыда сипатталған бағдарламаны компиляциялау/құрастыру/орындау 
сұлбаларын қолдану келесілерге мүмкіндік береді:
- жоғарғы деңгейдегі бағдарламалау тілдерінде SQL бағдарламамен бірге 
қолдануға;
- сұраныс синтаксисін алдын ала тексеруді және оларды оңтайландыруды 
(жоспарды таңдау) алдын ала жүзеге асыруға мүмкіндік береді. синтаксисті 
тексеру тез орындалатынын белгілі, бірақ жоспарды таңдау – аса еңбек 
сыйымдылықты қажет ететін процедура. Оның компиляция сатысында бір рет 
орындалатыны жайындағы факт, үстеме шығындардың елеулі кішірейтіндігі 
туралы айтуға мүмкіндік береді.
Алайда бағдарламалық SQL статикалық түрлерінің біршама шектеулері 
бар. Осылай, сұраныстарда айнымалылар, әдетте сұраныстарда тұрақтылар 
тұрған, орындарда ғана қолданыла алады. Мысалы, іріктеу жүргізілетін, кесте 
атауын беруге болмайды, сонымен қатар, параметр ретінде, бағандардыда. 
Осыған байланысты ішіне салынған (бағдарламалық) SQL статикалық 
нұсқасын қолдану кезінде бағдарламаны жазу сатысында, қолданбалы 
бағдарламада орындауға қажетті, сұраныс құрамын нақты білу қажет. Көптеген 
жағдайларда бұл шектеулер маңызды болып табылады. Оны жою үшін 
бағдарламалық SQL жаңа түрі – динамикалық SQL енгізілді. Динамикалық 
SQL-дің негізгі идеяларын қысқаша қарастырамыз.


Достарыңызбен бөлісу:
1   ...   18   19   20   21   22   23   24   25   26




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет