Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DKBZh_shpor.docx
Скачиваний:
270
Добавлен:
01.05.2015
Размер:
2.48 Mб
Скачать

2.3 Sql сұраныс тілі

SQL тілі ДҚ-мен өзара әрекеттесу үшін 70-ші жылдардың ортасында пайда болды. Деректерді кестелік көрсетуге бағытталған операция концепцияларын SQL-де жүзеге асыру үлкен емес (30 дан кем емес) қосымшалар тізімімен ықшамды тіл құруға мүмкіндік береді. SQL интерактивті (сұраныстарды орындау үшін) және енгізілген (қолданбалы бағдарламаларды құру үшін) қолданылады. Ол келесілерден тұрады:

- жеке деректер ұсынысы (деректер қорын анықтау, сонымен қатар кестелер мен индекстерді анықтау және жою);

- деректерді таңдауға сұраныс беру (SELECT ұсынысы);

- деректерді модификациялау ұсынысы (қосу, жою және деректерді өзгерту);

- деректерді басқару ұсынысы (деректерге қатынасты орнату және жою, транзакцияларды басқару және т.б.). Бұдан басқа бұл ұсыныстарда орындалу мүмкіндігін көрсетеді:

- арифметикалық есептеулер (әртүрлі функционалдық түрлендірулерді есептегенде), мәтіндік жолдарды өңдеу және мәтіндер мен арифметикалық есептеу мәндерін салыстыру операциясын орындау;

- баспаға немесе дисплей экранына кесте құрамын шығарған кездегі жолдар мен бағандрдың реттелуі;

- деректер қорындағы көлемнің артуынсыз қолданушыларға көзқарастарды көрсетуге мүмкіндік беретін көрсетілімдерді құру (виртуалды кестелер).

- сұраныс бойынша сұралатын кесте, бірнеше кесте немесе басқа кестеде көрсету (қосылудың реляциялық операциясы).

- деректерді агрегаттау: деректерді топтастыру және осы топтарға орташа, қосындысы, максимум, минимум, элементтер саны операцияларын қолдану.

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 > 0 және 4096 аспайтын әр түрлі ДҚБЖ) айнымалы ұзындықтың символдық жолы;

DATE - арнайы командамен анықталатын форматтағы мерзім (по умолчанию mm/dd/yy); мерзім өрісі б.э.д. бірнеше мыңжылдықтарда басталған тек қана нақты және б.э.д. бесінші оныншы мыңжылдықтарда шектелген күндерді көрсетеді;

TIME - время в формате, определяемом специальной командой, (по умолчанию hh.mm.ss);

DATETIME - уақыт пен мерзім комбинациясы;

MONEY - ақша бірлігінің символын ($, тенге, ...) көрсететін және оның орналасуын, бөлімдегі нақтылығы мен ақша мәнін көрсету үшін шартты аныұтайтын форматтағы ақша.

SQL кестелері

«Кесте» түсінігі, ереже бойынша, нақты және базалық кестемен, яғни машинаның физикалық жадысында сақталатын шын мәнінде әр жолдың көшірмесі бар кестемен байланысады. Бірақ, SQL виртуалды кестелер қатарын құрады және қолданады: базалық кестелерден деректерді, м.мкін көрсетілімдерді алуға болатын сұраныс нәтижесін қалыптастыратын жұмыс кестелерінің атауы мен меңзері, крсетілімдері. Бұл кестелер деректер қорында болмайды, олар қолданушының көзқарасынан туындайды.

Базалық кестелер CREATE TABLE (кесте құру) ұсынысының көмегімен құрылады. CREAT TABLE ұсынысы құрулу керек базалық кестенің атауын, бағандарының атауын және сол бағандарға арналған деректер типін арнайыландырады. Тағамдар кестесінің сипатын құру үшін мысал келтірейік:

CREATE TABLE Тағамдар (ТҒ SMALLINT, тағам CHAR (70),В CHAR (1),

Негіз CHAR (10), Шығу FLOAT, Еңбек SMALLINT);

CREAT TABLE – орындалатын ұсыныс. Егер оны бастапқыда бос болатын терминалдан енгізсе: оның құрамында баған атауларының жолдары ғана болады, бірақ деректері бар басқа жолдар болмайды. Бірақ, мұндай деректер жолын енгізуге кірісу керек сияқты, мүмкін INSERT көмегімен және Тағамдар кестесіне аналогты кесте құру.

Орнатылған базалық кестені кез-келген уақытта DROP TABLE (кесені жою) көмегімен жоюға болады:

DROP TABLE базалық кестесі;

Мұнда кесте сипаты, оның деректері, онымен байланысты кесте бағандары үшін құрылған индекстер мен көрсетілімдер.

SELECT қосымшасы

Бір немесе бірнеше кестелерден тұратын кез-келген деректер санын тәжиірибе жүзінде алуға сұраныстар тек қана SELECT қосымшасының көмегімен орындалады. Жалпы жағдайда SELECT қосымшасының жүзеге асу нәтижесі келесі кесте болып табылады. Осы жаңа кестеге SELECT операциясы қайта қолданыла алады және т.б., яғни операциялар бір біріне орналасады.

SELECT қосымшасы келесідей қолдана алады:

- бір немесе бірнеше кестелердің жолдары мен бағандарынан құрастырылған кстеден жолдарды шығару және оларды алу үшін өзіндік команда;

-   WHERE элементі немесе HAVING-шарты ("енгізілген сұраныс" деп аталатын қосымшаның қысқартылған нұсқасы);

-   CREAT VIEW, DECLARE CURSOR емесе INSERT командаларындағы таңдау;

-    (INTO-фраза) кестесінің жолдарынан қалыптасқан үлкен айнымалыларды қосу құралы.

Мұнда синтаксистік құрылымдарда келесі белгілеулер қолданылады:

- жұлдызша (*) "барлығын" белгілеу үшін - қарапайым мағынада қолданылады, яғни, "анықтаманы қанағаттандыратын барлық жағдайлар";

- тік жақшалар ([]) – бұл жақшаларға алынған құрылымдар міндетті емес болып табылады,

-   ирек жақша ({}) – бұл жақшаларға алынған құрылымдар тұтас синтакстік бірліктер ретінде қарастырылуы керек, яғни SQL синтаксисінде қолданылатын қарапайым жақшаларды ауыстыра отырып, синтаксисті құрылымдар ретін жоюға мүмкіндік береді;

- көп нүкте (...) – предшествующая синтаксистік бірлік бір немесе бірнеше рет қайталануы мүмкін;

- түзу сызық (|) – екі немесе одан да көп мүмкіндіктердің таңдауын білдіреді. Мысалы, ASC|DESC белгіленуі ASC немесе DESC терминдерінің біреуін таңдауды көрсетеді; таңдау элементтерінің біреуі тік жақшаға алынады, бұл по умолчанию таңдалады (егер [ASC]|DESC барлық осы құрылымның болмауы ASC таңдауы ретінде қабылданса);

-   нүктелі үтір (;) – SQL қосымшасындағы аяқтаушы элемент;

-   үтір (,) – тізім элементтерін бөлу үшін қолданылады;

- бос орын ( ) – SQL қосымшасының кез-келген синтаксисті құрылымдарының арасында көрнекілікті арттыру үшін енгізіле алады;

- қарамен белгіленген жазба латын әріптері және символдар – SQL тілінің құрылымын жазу үшін қолданылады және көрсетілгендей тура жазылды;

- жолдық әріптер – қолданушымен таңдалып алынған нақты мәндермен ауыстырыла алатын құрылымдарды жазу үшін қолданылады, анықталу үшін бұл құрылымдардың жеке сөздері астын сызу (_) символымен өзара байланысады;

- кесте, баған терминдері – сәйкесінше (синтаксисті құрылымды мәтінді қысқарту мақсатында) кесте_атауы, баған_атауы, терминдерін ауыстырады;

- кесте термині – базалық кесте, көрсетілім және жалған атау сияқты кесте түрлерін қолданады; мұнда жалған атау уақытша базалық кестенің жұмыс көшірмесін құруға және атын өзгертуі үшін қызмет етеді.

SELECT (таңдау) қосымшасы келесі форматтардан тұрады:

Ішкі сұраныс [UNION [ALL] ішкі сұраныс] ...

[ORDER BY {[кесте.]баған | элемент_номері_SELECT} [[ASC] | DESC]

[,{[кесте.]баған | элемент_номері_SELECT} [[ASC] | DESC]] ...;

(UNION) біріктіруге мүмкіндік береді, содан кейін бірнеше ішкі сұраныстар көмегімен алынған деректерді таңдау нәтижесін (ORDER BY) реттеуге мүмкіндік береді. Бұл кезде реттеуді өсу ретімен орналастыруға болады

При этом упорядочение можно производить в порядке возрастания - ASC (ASCending) немесе кему DESC (DESCending), ASC по умолчанию қолданылады.

Бұл қосымшадағы ішкі сұраныс қажет деректер мен олардың өңделуін таңдауға мүмкіндік береді.

SELECT - (таңдау) көрсетілген бағандардағы деректер және шығару алдында сәйкес туындылар мен функцияларға түрлену;

FROM - осы бағандар орналасқан аталған кестелер;

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 - бірінші шарт орындалу керек немесе екінші шарт орындалмау керек, бұл кезде OR кейін AND (алдымен AND барлық операциялары содан кейін OR операциялары орындалады). Қалаулы нәтижені алу үшін WHERE шарты дұрыс шартпен енгізілу керек, яғни жақша арқылы.

Шарттар өңдеген кезде сандар алгебралы салыстырылады - кері сандар олардың абсолютті өлшеміне тәуелсіз кем болып табылады. Символдар жолы нақты ДҚБЖ қолданылатын, олардың кодтағы көрсетіліміне сәйкес салыстырылады, мысалы, ASCII кодында. Егер әртүрлі ұзындықтары бар екі символдар жолы салыстырылады, одан қысқа жол салыстыру алдында бірдей ұзындықта болатын оң жағында бос орындармен толықтырылады.

Көрсетілім - өзі көргісі келетін кестедегі жолдар мен бағандардың тізімімен анықталатын бос атаулы кесте. Көрсетілім бір немесе бірнеше базалық кестелерден құрған «терезе» болып табылады. Ол CREATE VIEW қосымшасының көмегімен құрылады. Тағамдар_құрамы көрсетілімін құру үшін қосымша мысалын көрсетейік:

 CREATE VIEW Тағамдар_құрамы

AS SELECT Тағам, Өнім, Салмақ

FROM Құрамы, Тағам, Азық-түлік

WHERE ТғҚұрамы = Тағам. Тғ

AND Құрамы.АТ = Азық-түлік.АТ;

Ол сұранысты жүзеге асыру кезінде Тағам, Өнім, Тағам кестесінің салмағы, Азық-түлік және құрамына сәйкес жүктелетін бос кестені сипаттайды. Енді көкөністі тағамдар құрамын алу үшін келесі сұранысты беруге болады:

SELECT Тағам, Өнім, Салмақ

FROM Тағамдар_құрамы

WHERE Негіз = 'Көкөніс';

Меңзер – өзі көргісі келетін жолдарды базалық кестенің бағандарымен және сол жолдардың қасиеттер тізімімен анықталатын бос атаулы кесте. Меңзер қолданбалы бағдарламалардағы кестемен процедуралық жұмыс істеу үшін құрылған.

DECLARE Тағамдар_құрамы CURSOR FOR

SELECT Тағам, Өнім, Салмақ

FROM Құрамы, Тағам, Азық-түлік

WHERE ТғҚұрамы = Тағам. Тғ

AND Құрамы.АТ = Азық-түлік.АТ;

AND Тағам = 'Харчо сорпасы';

Оның жүзеге асыру үшін (OPEN Тағам_құрамы) «Харчо сорпасы» тағам құрамының уақыттық кестесі және сол кестенің ағымдық бірінші жолы ретінде арнайы көрсеткішпен құрылады. Әдетте бағдарламалық циклде қолданылатын FETCH (таңдау) қосымшасының көмегімен сол жолдың көрсетілген бағандарының анықталған айнымалы мәндерін қоюға болады. Меңзер бір уақытта кестенің келесіжолына жылжытылады. Өңделгеннен кейін бағдарламада алынған айнымалы мәндерден кейін FETCH қосымшасы және т.б. Харчо сорпасының барлық тағамдарын таңдап болғаннан кейін орындалады.

Деректерді агрегирлеу

SQL-де арнайы стандартты функциялар қатары (SQL-функциялар) бар. COUNT(*) арнайы шартынан кейін осы функциялардың әрқайсысы кейбір кестенің баған мәнінің жиынтығын көрсетеді және келесідей анықталатын тек бір мәнді ғана құрады:

COUNT - бағандағы сан мәні;

SUM - бағандағы қосынды мәні;

AVG - бағандағы орташа мән;

MAX - бағандағы ең үлкен мән;

MIN - бағандағы ең кіші мән.

SUM және AVG функциялары үшін қарастырылатын баған сандық мәндерден тұруы керек.

Мұндағы баған – бұл виртуалды кестенің бағаны екенін ескеру керек, онда тек базалық кесте деректері ғана емес, сонымен қатар, функционалды түрлендіру жолымен және бір немесе бірнеше бағандардың арифметикалық операция мәндерінің байланысу символдарынан алынған деректер де бар. Мұндай кестенің бағанын анықтайтын өрнек күрделі, бірақ SQL-функциялардан құралмауы мүмкін. Бірақ SQL-функциялар кез-келген өрнектерді құра алады.

COUNT(*) функциясынан басқа барлық функциялар DISTINCT (әр түрлі) кілттік сөзі аргумент бола алады, ол функция қолданылар алдында артық қайталанбалы мәндердің алынып тасталуын көрсетеді. COUNT(*) арнайы функциясы кестедегі барлық шектеусіз жолдарды (көшірмелерді есептегенде) есептеу үшін қызмет етеді.

GROUP BY сөзін қолданбайтын функциялар

Егер GROUP BY сөзі қолданылмаса, онда SELECT элементтер тізіміне мұндай функциялардан тұратын SQL-функциясын немесе өрнегін қосуға болады. Басқаша айтқанда тізімде SQL-функциясының аргументі болмайтын бағандарды орналастыруға болмайды.

Мысалы, жеткізушілерге сатылған (ПР=10) пияз салмағы туралы деректерді алып және жеткізушілер санын анықтау керек:

SELECT SUM(К_во),COUNT(К_во)

FROM Поставки

WHERE ПР = 10;

Егер нәтижені шығару үшін өнім номері сұраныс түрінде қалыптасса

SELECT ПР,SUM(К_во),COUNT(К_во)

FROM Поставки

WHERE ПР = 10;

Онда қате туралы хабарлама шығатын еді. Бұл SQL-функциясының көп баған аргумент жиынынан бір мәнді ғана құратындығымен, ал бос баған үшін барлық мәндердің жиындары көрсетілу керектігімен байланысты. Арнайы нұсқаусыз (ол GROUP BY сөзімен беріледі) SQL жиын мәндерінің бірдей немесе әртүрлі болғандығын анықтамайды (берілген мысалда ПР=10). Бірақ, ешкім сұраныс беруге тыйым салмйды.

SELECT 'Кол-во лука =',SUM(К_во),COUNT(К_во)

FROM Поставки

WHERE ПР = 10;

Аргумент бағандағы COUNT(*)-тан басқа кез-келген файлды қолданар алдында барлық анықталмаған мәндер шектеледі. Егер аргумен – бос жиын болса, COUNT функциясы 0 мәнін қабылдайды, ал қалғандары NULL.

GROUP BY сөйлемі

Енді қазіргі уақытта жеткізушілермен жететін әр өнімнің жалпы салмағын есептеу керек. Оны қосымшаның көмегімен жасауға оңай

SELECT ПР, SUM(К_во)

FROM Поставки

GROUP BY ПР;

GROUP BY сөзі топ бойынша көрсетілген FROM кестесінде қайта компановкалауды жүзеге асады, олардың әрқайсысы GROUP BY бағанында көрсетілген бірдей мәндерге ие. Қарастырылатын мысалда кесте жолдары бір ПР = 1 тобында өнім үшін барлық жолдар болады, басқасында ПР = 2. Ары қарай SELECT сөзі әр топқа қолданылады. Бұл өрнектегі әрбір сөз топ үшін бір мәнді ғана қабылдау керек, яғни ол GROUP BY бағанында көрсетілген баған мәніне ие болады немесе сол мәннен тұратын арифметикалық өрнектен тұрады, немесе топтағы барлық баған мәндерімен көрсетілетін SQL-функциядан тұратын тұрақты болады және сол мәндерді бір мәнге алып келеді.

GROUP BY сөзінің GROUP BY жоспарламайды. Қарастырылған мысалдағы ПР нәтижесін реттеуді кепілдендіру үшін сұраныс жіберу керек

SELECT ПР, SUM(К_во)

FROM Поставки

GROUP BY ПР

ORDER BY ПР;

HAVING сөзінің қолданылуы

HAVING сөзі топтар үшін, ал WHERE сөзі жолдар үшін маңызды: Бұл сөз GROUP BY сөзі болған кезде ғана сөйлемге қосылады, ал HAVING өрнегі топ үшін бір ғана мәнді қабылдау керек.

Мысалы, екі жеткізушімен жеткізілетін өнімдер кодын беру керек:

SELECT

FROM Поставки

GROUP BY ПС

HAVING COUNT(*) > 2;

Бірігулерді құратын сұраныстар

Кестелердің Декартты туындысы

Бірігулер – бұл декартты туындылардың ішкі жиындары. Декартты туынды n кестелік болғандықтан барлық мүмкін r жолдарынан тұратын кесте, r бірінші кестедегі қандай да бір бірігулер, л екінші кестедегі n кесте жолдары болып табылады, онда бірнеше кестенің декартты туындысын алу үшін FROM сөзінде көбейтілетін кестелертізімін, ал SELECT сөзінде олардың барлық жолдарын көрсету керек.

Тағам_түрі және Трапеза декартты туындыларын алу үшін келесі сүранысты шығару керек:

SELECT Тағам_түрі.*, Трапезалар.*

FROM Тағам_түрі, Трапезалар;

Кестелердің эквибірігуі

Егер декартты туындылардан қажетсіз жолдар мен бағандарды алып тастаса, онда кез-келген бірігулерге сәйкес актуальды кестелерді алуға болады. Актуальды кестелерді таңдау қажетті сәйкестік орнатылатын сұранысқа WHERE сөзін енгізумен қамтамасыз етеді.

SELECT Мәзір.*, Трапеза.*, Тағам_түрі.*, Тағам.*

FROM Мәзір, Трапеза, Тағам_түрі, Тағам

WHERE Мәзір.Т = Трапеза.Т

AND Мәзір.Т = Тағам_түрі.Т

AND Мәзір.Тғ = Тағам.Тғ;

Мұндай құрылған сұраныс Мәзір, Трапеза, Тағам_түрі және Тағам эквибірігу кестелерін алуға мүмкіндік береді:

Кестелердің жасанды бірігуі

Эквибірігу кестелер құрамына (Т, Т және Тғ) бірігулері жүзеге асқан баған көшірмелері кіреді. Бұл көшірмелерді ерекшелеу үшін сол кестелердің жасанды бірігуін құруға болады:

SELECT Т, Т, Тғ, Трапеза, Түрі, Тағам, Негіз, Шығу, Еңбек

FROM Мәзір, Трапезы, Тағам_түрі Тағам

WHERE Мәзір.Т = Трапеза.Т

AND Мәзір.Т = Тағам_түрі Т

AND Мәзір.Тғ= Тағам.Тғ;

Кестелер үйлесімділігі

Кестелердің бірігуі орындалатын барлық кестелерді шектеу үшін үйлесімділікті құру керек.

SELECT Трапеза, Түрі, Тағам, Негіз, Шығу, Еңбек

FROM Мәзір, Трапеза, Тағам_түрі, Тағам

WHERE Мәзір.Т = Трапеза.Т

AND Мәзір.Т = Тағам_түрі Т

AND Мәзір.Тғ = Тағам.Тғ;

(UNION) бірігуі

«Бірігу» реляционды операциясы бір немесе екі бірігу қатынастарының құрамына кіретін барлық жолдардан тұратын қатынастарды алуға мүмкіндік береді. Бірақ бұл кезде шығыс қатынастар немесе олардың бірігетін жобалары бірігуі бойынша сәйкестенуі керек. SQL үшін бұл екі кестені тек келесі жағдайларда ғана біріктіруге болытындығын білдіреді:

a.     олардың баған саны бірдей, мысалы, m;

b.     барлық i (i = 1, 2, ..., m) үшін бірінші кестенің бағаны және екінші кестенің i-ші бағанының бірдей деректер типі болады.

UNION қосымшасымен кез-келген кесте санын біріктіруге болады. Демек, алдыңғы сұранысқа (нүктелі үтірдің алдына) конструкция қосуға болады:

Предложением с UNION можно объединить любое число таблиц (проекций таблиц). Так, к предыдущему запросу можно добавить конструкцию

SELECT Өнім

FROM Өнімдер

WHERE Майлар = 0

UNION

SELECT Өнім

FROM Құрамы

WHERE Тғ = 1

SELECT қосымшасы арқылы реляциялық алгебра операциясын жүзеге асыру. SELECT қосымшасы арқылы кез-келген реляциялық алгебра операциясын жүзеге асыруға юолады. Кесте селекциясы берілген шарттарды қанағаттандыратын оның жолдарынан тұрады. Мысалы,

SELECT *

FROM Тағам

WHER Негіз = 'Сүт'

AND Шығу > 200;

Кесте жобасы (вертикал ішкі жиын) артық жол көшірмелерін шектеу мақсатында оның көрсетілген бағандарынан құрылады. Мысалы,

SELECT DISTINCT Тағам, Шығуы, Негіз

FROM Тағам;

Екі кестенің бірігуіндегі жолдар бірінші немесе екінші, немесе екі кестеде де бар. Мысалы:

SELECT Тағам, Шығуы, Негіз

FROM Тағам

WHER Негіз = 'Көкөніс'

UNION

SELECT Тағам, Шығуы, Негіз

FROM Тағам

WHER Т = 'Г';

Екі кестенің бірігуі бірінші немесе екінші кестелерде бар жолдардан құралған. Мысалы:

SELECT Тғ

FROM Құрамы

WHERE Тғ IN

( SELECT БЛ

FROM Меню);

Екі кестенің түрлілігі бірінші кестедегі жолдар екінші кестеде жоқ. Мысалы:

SELECT Тғ

FROM Құрамы

WHERE БЛ NOT IN

( SELECT БЛ

FROM Меню);

Кестелердің декартты туындысы және бірігулердің әр алуан түрлері нақтырақ қарастырылды.

Модификация қосышаларының ерекшеліктері мен синтаксисі

Деректер модификациясы DELETE (жою), INSERT (қою) и UPDATE (жаңарту) қсымшаларының көмегімен жүзеге асады. SELECT қосымшасы секілді олар базалық кестеле және көріністерді жүзеге асырады. Бірақ, себептер қатарына байланысты көрсетілімдер жаңартылмайтын да болады. Көрсетілімдердің сипаты мен жаңаруын қоя тұрып, осы фактіні тіркейік, бірақ, «көрініс» термині тек жаңартылатын көрсетілімдерге жататынын есте сақтау керек.

DELETE қосымшасы келесі форматта болады

DELETE

FROM базалық кесте | көрініс

[WHERE сөзі];

және көрсетілген кестенің барлық жолдарын немесе WHERE сөзімен ерекшеленетін жолдар болады.

ПС = 7-ден жеткізушіні алып тастау.

DELETE

FROM Жеткізуші

WHERE ПС = 7;

Удалить все поставки.

DELETE

FROM Поставки;

Поставки – әлі де белгісіз кесте, онда жолдар болмайды. Кестеніжою үшін DROP TABLE жеткізу операциясын орындау керек.

INSERT қосымшасы келесі форматтардың біреуіне ие:

INSERT

INTO {базалық кесте | көрініс} [(баған [,баған] ...)]

VALUES ({тұрақты| айнымалы} [,{тұрақты | айнымалы}] ...);

немесе

INSERT

INTO {базалық кесте | көрініс} [(баған [,баған] ...)]

Ішкі сұраныс;

Бірінші форматта кестеге VALUES (мәндер) сөзінің тізімінде көрсетілген, өріс мәндеру бар жол енгізіледі, мұндағы i-мәні тізімдер бағанындағы i-бағанына сәйкес (тізімде көрсетілмеген бағандар NULL-мәнімен толтырылады). Егер VALUES тізіміндегі сөздер модификацияланатын кестенің барлық бағандары көрсетілген және олардың аталу реті кестені сипаттау кезіндегі бағандар ретіне сәйкес келеді, онда INTO сөзіндегі бағандар тізімін жіберуге болады. Бірақ, оны істеудің қажеті жоқ, кестенің сипаты (бағандардың орнының ауысуы немесе олардың санының өзгеруі) өзгерген кезде INSERT қосымшасын да көшіріпжазу керек.

Екінші форматта алдымен ішкі сұранысорындалады, яғни SELECT қосымшасы бойынша жадыда жұмыс кестесі қалыптасады, ал содан кейін жұмыс кестесінің жолдары модификацияланатын кестеге жүктеледі. Бұл кезде жұмыс кестесінің i-ші бағаны (SELECT тізімінің i-ші элементі) модификацияланатын кестенің бағандар тізіміндегі i-ші бағанға сәйкес келеді. Сонымен қатар жоғарыда көрсетілген шарттардың орындалуы кезінде INTO сөзінің бағандар тізімі жіберілуі мүмкін.

Тағамдар кестесіне тағамды қосу керек:

Кәуәп (Тғ - 34, Тағам - Кәуәп, Т - Г, Негіз - Ет, Шығуы - 150)

Оыс тағамды жасаудың белгісіз қиындықтары кезінде.

INSERT

INTO Тағамдар (Тғ, Тағам, Т, Негіз, Шығуы)

VALUES (34, 'Кәуәп', 'Г', 'Ет', 150);

Еңбек бағанында белгісіз мәні бар 34 номерлі тағамға жаңа жазба құрылады

Кесте құрған кезде анықталған INSERT өрістер ретінің өріс ретімен сәйкес келуі шарт емес. Алдыңғы қосымшаның нұсқасы сондай болуы мүмкін:

INSERT

INTO Тағам (Негіз, Т, Тағам, Тғ, Шығуы)

VALUES ('Ет', 'Г', 'Кәуәп', 34, 150);

UPDATE қосымшасының екі форматы бар. Олардың біріншісі:

UPDATE (базалық кесте | көрініс}

SET баған= мән [, баған = мән] ...

[WHERE сөзі]

Мұндағы мән - бұл

баған |өрнек | тұрақты | айнымалы

тек қана жаңартылатын кестелердегі бағандар қосыла алады, яғни модификацияланатын кестенің бағандарының бір мәні ауыспалы бірнеше кесте мәндерінен тұратын басқа баған немесе өрнек мәніне ауыстырыла алады.

WHERE болмаған кезде модификацияланатын кестенің барлық жолдарындағы көрсетілген бағандар мәні жаңартылады. WHEREмсөзі таңдау шартын көрсете отырып жаңартылатын жолдар санын қысқартуға мүмкіндік береді.

Екінші формат модификацияланатын кесте мәндерін басқа кестелердің баған мәндері бойынша жаңаруын жүзеге асыруға мүмкіндің беретін қосымша.

UPDATE {базалық кесте | көрініс}

SET баған = мән [, баған = мән] ...

FROM {базалық кесте | көрініс} [жалған атау],

{ базалық кесте | көрініс } [жалған атау]

[,{базалық кесте | көрініс } [жалған атау]] ...

[WHERE сөзі]

Мұндағы FROM сөзінің кестеер реті модификацияланатын кесте атауынан және бағандарының мәндері жаңару үшін қолданылатын басқа кестелерден тұрады. Бұл жағдайда, әрине, кестелер өзара WHERE сөзінде байланысуы керек. Бұдан басқа ол модификацияланатын кестенің жаңартылатын жолдарын таңдау шартын көрсету үшін қолданылады.

SET сөзінің оң жақ тең бөліктерінде орналасқан мәндерде қолданылатын бағандар атауын анықтау керек.

БЛ=5 коды бар тағам атауын Форшмакқа ауыстыру, оныі шығуын 30 г арттырып және NULL-мәнін Еңбек бағанына орнату.

UPDATE Тағам

SET Тағам = 'Форшмак', Шығуы = (Шығуы+30), Труд = NULL

WHERE Тғ = 5;

 

Жеткізу кестесіндегі барлық тағамдардың бағасын үш еселеу керек (кофе бағасынан басқасын - ПР = 17).

UPDATE Поставки

SET Баға = Баға * 3

WHERE ПР <> 17;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]