Аппараттық және бағдарламалық қамтамасыз етуді орнату

Жалпы ережелерден басқа деректер жиынына арналған оператор. Күрделі SQL сұрауларын орындау Intersect sql мысалдары

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

Нюанстар

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

Деректер

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

Сценарийлер және деректер кестесі

КЕСТЕ ТАУЛАРЫН ЖАСАУ(id bigint NULL ЕМЕС, атау таңбасын өзгерту(127) NULL ЕМЕС, сипаттама таңбасын өзгерту(255) NULL ЕМЕС, баға сандық(16,2) NULL ЕМЕС, артикул таңбасын өзгерту(20) NULL ЕМЕС, әрекет_уақыты уақыт белгісі NULL ЕМЕС , қолжетімділік логикалық NO NULL, CONSTRAINT pk_goods PRIMARY KEY (id)); INSERT INTO тауарлар (id, атауы, сипаттамасы, бағасы, бап, акт_уақыты, қолжетімділігі) VALUES (1, «Тәпішке», «Soft», 100.00, «TR-75», (ts «2017-01-01 01:01: 01.01"), TRUE); INSERT INTO тауарлар (id, атауы, сипаттамасы, бағасы, бап, акт_уақыты, қолжетімділігі) VALUES (2, "Жастық", "Ақ", 200.00, "PR-75", (ts "2017-01-02 02:02: 02.02"), TRUE); INSERT INTO тауарлар (id, атауы, сипаттамасы, бағасы, бап, акт_уақыты, қолжетімділігі) VALUES (3, "Көрпе", "Төмен", 300.00, "ZR-75", (ts "2017-01-03 03:03: 03.03"), TRUE); INSERT INTO тауарлар (id, атауы, сипаттамасы, бағасы, бап, акт_уақыты, қолжетімділігі) VALUES (4, "Жастық қап", "Сұр", 400.00, "AR-75", (ts "2017-01-04 04:04: 04.04"), FALSE); INSERT INTO тауар (id, атауы, сипаттамасы, бағасы, бап, акт_уақыты, қолжетімділігі) VALUES (5, "Лист", "Silk", 500,00, "BR-75", (ts "2017-01-05 05:05: 05.05"), FALSE);

Сұраулар

1. Қос тырнақша

Ал менде бірінші қарапайым сұрақ: Sql сұрауын қолданатын мысал келтіре аласыз ба? қосдәйексөздер?Иә, жалғызбастылармен, жұптармен емес пе?

Қос тырнақшасы бар мысал

Тауарлардан "Өнім атауы" атауын ТАҢДАҢЫЗ


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

Бұл нақты даму үшін өте пайдалы үлгі емес сияқты көрінуі мүмкін. Мен үшін олай емес. Қазір мен оны барлық sql-бланктерімде белсенді қолданамын. Түпнұсқа қарапайым, жарты жылдан кейін 40 бағанның sql-сұранысына оралғанда, олардың «біздің» атауы қалай сақталады. Мен SQL-92 туралы айтпағаныма қарамастан, соңғы басылымда қос тырнақшалар туралы айтылған.

2. Псевдо кесте. SQL-92

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

Псевдо кесте

«Лақап ат» ТАҢДАУ, (MOck.huff СОДАН СОҢ «Иә» ӘЛСЕ «Жоқ» АЯҚТАЛҒАН ЖАҒДАЙДА) «Ұшты ма? FROM (ТАҢДАУ атауды бүркеншік ат, қолжетімділік AS huff FROM тауарлар) мазақ

Біздің мысалда мысқыл жалған кесте (кейде виртуалды кесте деп аталады). Әрине, олар шынайы мағынаны бұрмалауға арналмаған. Мысал мынау.

3. Мәліметтер блогының конструкторы. SQL-92

Жақсы аударма немесе аударма таппағаным үшін қорқынышты естіледі. Әдеттегідей, мысалмен түсіндіру оңайырақ:

Деректер блогының конструкторының мысалы

ТАҢДАУ атауы «Тауар атауы», бағасы «Бағасы» FROM (VALUES («Тәпішке», 100.00), («Жастық», 200.00)) AS тауар (атауы, бағасы)

Өнім атауы Бағасы
тәпішке 100.00
Жастық 200.00

Бөлімде FROMкілт сөз қолданылады ҚҰНДЫЛЫҚТАР, содан кейін жақшадағы деректер, жолдан жол. Қорытындысы: біз кез келген кестеден деректерді таңдамаймыз, оны жай ғана жасаймыз, оны кестеге «атаймыз», бағандарды атаймыз, содан кейін оны өз қалауымыз бойынша пайдаланамыз. Бұл sql сұрауының әртүрлі жағдайларын сынау кезінде, кейбір кестелер үшін деректер болмаған кезде (жергілікті дерекқорда) және кірістіруді жазу кестелер мен кестелердің қосылуына байланысты тым жалқау немесе кейде өте қиын болған кезде өте пайдалы болды. шектеулер.

4. Уақыт, Күн және Уақыт пен Күн

Уақытты, күнді немесе күн мен уақытты көрсету қажеттілігі бар кез келген адам сұрауларға тап болған шығар. Көптеген ДҚБЖ осы түрлермен жұмыс істеу үшін сәйкесінше t, d және ts литералдарын қолдайды. Бірақ мысалмен түсіндіру оңайырақ: d және t литералдары үшін бәрі бірдей.
Оқырманнан жаңылыстыру үшін кешірім сұраймын, бірақ 4-параграфта айтылғанның бәрі SQL тіліне қолданылмайды, бірақ JDBC жүйесіндегі сұрауды алдын ала өңдеу мүмкіндіктеріне қатысты.

5. Бас тарту. SQL-92

Оператор туралы бәріміз білеміз ЖОҚ, бірақ оны предикаттар тобына да, бір бағанға да қолдануға болатынын жиі ұмытып кетеді:

6. Мәліметтер блоктарын салыстыру. SQL-92

Терминология үшін тағы да кешірім сұраймын. Бұл менің сүйікті мысалдарымның бірі.

Деректер блогын салыстыру мысалы

ТАҢДАУ * ҚАЙДА (атауы, бағасы, қолжетімділігі) = («Жастық қап», 400,00, ЖАЛҒАН) -- немесе баламасы ТАҢДАУ * Тауарлардан ҚАЙДА атауы = «Жастық қап» ЖӘНЕ бағасы = 400,00 ЖӘНЕ қолжетімділігі = ЖАЛҒАН

Мысалдан көріп отырғаныңыздай, деректер блоктарын салыстыру элементті элемент бойынша салыстыруға ұқсас. мағынасы_ 1 _блок_1 = мән_ 1 _блок_2, мән_ 2 _блок_1 = мән_ 2 _блок_2, мән_ 3 _блок_1 = мән_ 3 _блок_2қолдану ЖӘНЕолардың арасында.

7. КЕЗ КЕЛГЕН, SOME немесе ALL модификаторларымен салыстыру операторлары. SQL-92

Бұл жерде түсініктеме қажет. Бірақ әдеттегідей, алдымен мысал Бұл нені білдіреді БӘРІбұл жағдайда? Және бұл таңдау шарты идентификаторлары (біздің жағдайда бұл 4 және 5) мәнінен үлкен болатын жолдармен ғана қанағаттандырылатынын білдіреді. кез келгенішкі сұрауда табылған мәндерден (1, 2 және 3). 4 1-ден үлкен және 2-ден және 3-тен үлкен. 5 ұқсас. ауыстырсақ не болады БӘРІүстінде КЕЗ КЕЛГЕН?
Нені білдіреді КЕЗ КЕЛГЕНбұл жағдайда? Және бұл таңдау шарты идентификаторлары (біздің жағдайда бұл 2, 3, 4 және 5) мәнінен үлкен болатын жолдармен ғана қанағаттандырылатынын білдіреді. кем дегенде біреуіішкі сұрауда табылған мәндерден (1, 2 және 3). Мен өзім үшін байланыстырдым БӘРІбірге ЖӘНЕ, а КЕЗ КЕЛГЕНбірге НЕМЕСЕ. КЕЙБІРжәне КЕЗ КЕЛГЕНбір-біріне ұқсас.

8. Сұраныстармен жұмыс істеу операторлары/сұраныс астында. SQL-92

Операторлардың көмегімен 2 сұранысты бір-бірімен біріктіруге болатыны белгілі ОДАнемесе БАРЛЫҚ ОДАҚ. Бұл жиі қолданылады. Бірақ тағы 2 оператор бар ОСЫжәне ҚИылысу.

EXCEPT бар мысал

Шын мәнінде, екінші жиынның деректері мәндердің бірінші жинағынан шығарылады.
Іс жүзінде мәндердің бірінші жиынтығы мен екінші жиынның қиылысы бар.
Осымен бітті, назарларыңызға рахмет.

Редакциялық

N1. Сындарлы сын үшін streetflush-ке рахмет. Тіл стандарты деген не және не емес екендігі туралы ақпарат бар мақаланы енгізді.
N2. 4-тармақ түзетілді, ts/d/t SQL тілінің бөлігі емес екендігі түсіндірілді. Назарларыңызға рахмет Мелкиж.

Бір ғана маңызды ережеесте сақтау үшін EXCEPT операторын пайдалану.

Бағандардың реті, саны және деректер түрлері барлық сұрауларда бірдей болуы керек.

ANSI стандартына сәйкес UNION және EXCEPT жиын операторларының басымдығы бірдей, бірақ INTERSECT операторы басқа жиын операторларынан бұрын бағаланады. Жақшаларды пайдаланып оператордың басымдылығын нақты бақылауды ұсынамыз. Бұл әдетте өте жақсы тәжірибе.

ANSI стандартына сәйкес сұрауда тек бір ORDER BY тармағын қолдануға болады. Оны соңғы ТАҢДАУ мәлімдемесінің соңына енгізіңіз. Бағандар мен кестелерді көрсетуде екіұштылықты болдырмау үшін барлық сәйкес кесте бағандарына бірдей бүркеншік атты тағайындауды ұмытпаңыз. Мысалға:

ТАҢДАУ au_lname "фамилия" РЕТІН, au_fname "аты" ретінде авторлардан ТАҢДАҢЫЗ emp_lname "family", emp_fname "firstname" AS ҚЫЗМЕТКЕРЛЕРДЕН ТАҢДАУ ТЕГІ, аты бойынша;

Бұған қоса, бағандарды әр баған тізімінде сәйкес келетін деректер түрлерімен көрсетуге болатындықтан, әртүрлі RDBMS платформаларында әртүрлі ұзындықтағы бағандармен жұмыс істеудің әртүрлі әдістері болуы мүмкін. Мысалы, алдыңғы мысалдағы бірінші сұраудағы au_lname бағаны екінші сұраудағы emp_lname бағанынан айтарлықтай ұзын болса, онда әртүрлі платформаларда соңғы нәтиженің ұзақтығын анықтауға арналған әртүрлі ережелер болуы мүмкін. Бірақ, жалпы алғанда, платформалар нәтиже үшін ұзағырақ (және азырақ шектелген) өлшемді таңдайды.

Әрбір RDBMS баған тізімдеріндегі атаулар әртүрлі болған жағдайда, баған атын пайдаланудың өз ережелерін қолдана алады. Жалпы, бірінші сұраудың баған атаулары пайдаланылады.

Деректер түрлері бірдей болмауы керек, бірақ олар үйлесімді болуы керек. Мысалы, CHAR және VARCHAR түрлері үйлесімді. Әдепкі бойынша, әрбір бағандағы нәтиже жиыны әрбір нақты позициядағы ең үлкен түрге сәйкес өлшемді пайдаланады. Мысалы, VARCHAR(IO) және VARCHAR(15) түрінің мәндері бар бағандардан деректерді шығарып алатын сұрау VARCHAR(15) түрі мен өлшемін пайдаланады.

Платформалардың ешқайсысы СӘЙКЕСТІК )) EXCEPT тармағын қолдамайды

(ТАҢДАУ мәлімдемесі.2 | VALUES (өрнек, өрнек2 [, ...])) ҚОСУ

Соңғы нәтижелер жиынына қосылған бір немесе бірнеше қолмен көрсетілген бағандарды көрсетуге мүмкіндік береді. (Бұл жол конструкторы деп аталады.) VALUES сөйлемі EXCEPT мәлімдеме сұрауларында көрсетілгендей көп бағандарды көрсетуі керек. EXCEPT DISTINCT операторына қолдау көрсетілмегенімен, EXCEPT функционалды эквивалент болып табылады. CORRESPONDING сөйлеміне қолдау көрсетілмейді. Сонымен қатар, деректер түрлері LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK және құрылымдық түрлері EXCEPT сөйлемінде қолданылмайды, бірақ олар EXCEPT ALL сөйлемінде қолданылуы мүмкін.

Нәтиже жиынында барлық ТАҢДАУ мәлімдемелерінде бірдей аты бар баған болса, онда бұл атау мәлімдеме қайтарған бағанның соңғы атауы ретінде пайдаланылады. Егер берілген бағанәр түрлі ТАҢДАУ мәлімдемелерінде басқаша аталған, содан кейін олардың барлығында бірдей AS бүркеншік атын пайдаланып, барлық сұраулардағы бағанның атын өзгерту керек.

Деректер жиындарымен жұмыс істеу үшін бір сұрауда бірнеше операторлар пайдаланылса, алдымен жақшаға алынған оператор орындалады. Осыдан кейін орындау тәртібі солдан оңға қарай болады. Дегенмен, барлық INTERSECT операторлары UNION және EXCEPT операторларының алдында орындалады. Мысалға:

ТАҢДАУ empno FROM қызметкерден WHERE workdept "E%" СИЯҚТЫ ТАҢДАУ empno FROM emp_act WHERE projno IN (TF1000", TF2000", -AD3110") БІРДІК МӘНДЕРІ ("AA0001"), ("AB0002"), ("AC00;

Жоғарыда келтірілген мысал бөлімде жұмыс істейтін барлық қызметкерлердің «E» әрпінен басталатын идентификаторларын қызметкерлер кестесінен шығарады, содан кейін IF1000, IF200» және AD3110 жобаларында жұмыс істейтіндердің идентификаторларын қызметкерлердің есеп кестесінен (emp_act) жояды. , AA0001, AB0002 және AC0003 сияқты үш қосымша идентификатор UNION жиыны операторы арқылы қосылады.

MySQL

MySQL EXCEPT мәлімдемесін қолдамайды. Немесе NOT IN немесе NOT EXISTS операторларын пайдалануға болады.

SQL кестелерді біріктірудің екі әдісін ұсынады:
  • SELECT операторының FROM тармағында қосылатын кестелерді (ішкі сұрауларды қоса) көрсету арқылы. Алдымен кестелер біріктіріледі, содан кейін ғана алынған жиынға WHERE тармағымен көрсетілген шарттар, GROUP BY тармағымен анықталатын біріктіру, мәліметтерді ретке келтіру және т.б. қолданылады;
  • SELECT операторын өңдеу арқылы жасалған нәтижелер жиындарының бірігуін анықтау. Бұл жағдайда екі SELECT операторы сөз тіркесі арқылы біріктіріледі ОДА, ҚИылысу, ОСЫнемесе СӘЙКЕСТІК.

ОДА

Сөз тіркесі ОДАкелесі ережелерге сәйкес екі сұраудың нәтижелерін біріктіреді:

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

Қажетті сұрыптау ретін нақты көрсету үшін ORDER BY сөйлемін пайдаланыңыз. Бұл жағдайда бағанның атын да, оның нөмірін де пайдалануға болады (4.3-сурет).


Күріш. 4.3.

Сөз тіркесі ОДА ALL келесі ерекшеліктерді қоспағанда, UNION тармағы сияқты екі ішкі сұрауды біріктіруді орындайды:

  • сәйкес жолдар жасалған нәтижелер жиынынан жойылмайды;
  • біріктірілген сұраулар нәтижелер жинағында ретсіз пайда болады.

Екіден көп сұраныстарды біріктіру кезінде біріктіру операциясының орындалу ретін өзгерту үшін жақшаларды пайдалануға болады (4.4-сурет).


Күріш. 4.4.

INTERSECT қосылу

Сөз тіркесі ҚИылысубіріктірілетін әрбір нәтиже жиынында бар жолдарды ғана таңдауға мүмкіндік береді. Суретте. 4.5 сұрауларды қиылысатын жиындар ретінде біріктіру мысалын көрсетеді.


Күріш. 4.5.

Одағынан басқа

Сөз тіркесі ОСЫбіріктірілетін бірінші нәтиже жинағында бар, бірақ екінші нәтижелер жинағында жоқ жолдарды ғана таңдауға мүмкіндік береді.

Сөз тіркестері ҚИылысужәне ОСЫтек толық SQL-92 сәйкестік деңгейінде қолдау көрсету керек. Сонымен, фразаның орнына кейбір ДҚБЖ

INTERSECT операторы бір немесе бірнеше сұраулардың нәтижелер жиынынан бірдей жолдарды шығарады. Кейбір жағынан INTERSECT операторы INNER JOIN-ге өте ұқсас.

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

Синтаксис SQL2003

INTERSECT мәлімдемесіндегі сұраулар санына техникалық шектеулер жоқ. Жалпы синтаксис келесідей.

ҚИылысу

]ҚИылысу

Түйінді сөздер

Барлық нәтиже жиындарынан қайталанатын жолдар қамтылған.

АЙРЫҚ

Қайталанатын жолдар INTERSECT операторымен салыстыру орындалмас бұрын барлық нәтиже жиындарынан жойылады. NULL мәндері бар бағандар көшірме болып саналады. ALL немесе DISTINCT көрсетілмесе, әдепкі бойынша DISTINCT қабылданады.

СӘЙКЕСТІК

Екі сұрауда да қойылмалы таңба (*) қолданылса да, тек екі сұрауда бірдей аты бар бағандар ғана қайтарылатынын көрсетеді.

Сұраулар сәйкес атаулары бар басқа бағандарды тапса да, тек аталған бағандар қайтарылатынын көрсетеді. Бұл тармақ CORRESPONDING кілт сөзімен бірге қолданылуы керек.

Жалпы ережелер

INTERSECT операторымен жұмыс істегенде бір ғана маңызды ережені есте сақтау керек.

Барлық сұраулардағы бағандардың реті мен саны бірдей болуы керек. Сәйкес бағандардың деректер түрлері де үйлесімді болуы керек.

Мысалы, CHAR және VARCHAR түрлері үйлесімді. Әдепкі бойынша, әрбір бағандағы нәтиже жиыны әрбір нақты позициядағы ең үлкен түрге сәйкес өлшемді пайдаланады.

Платформалардың ешқайсысы СӘЙКЕСТІК сөйлемді қолдамайды.

ANSI стандартына сәйкес INTERSECT операторы басқа жиынтық операторларға қарағанда жоғары басымдыққа ие, дегенмен мұндай операторлардың басымдылығы әртүрлі платформаларда басқаша өңделеді. Жақшаларды пайдаланып оператордың басымдылығын анық басқара аласыз. AT әйтпесеДҚБЖ оларды солдан оңға қарай немесе біріншіден соңғыға қарай ретімен орындауы мүмкін.

ANSI стандартына сәйкес сұрауда тек бір ORDER BY тармағын қолдануға болады. Оны соңғы ТАҢДАУ мәлімдемесінің соңына енгізіңіз. Бағандар мен кестелерді көрсетуде екіұштылықты болдырмау үшін барлық сәйкес кесте бағандарына бірдей бүркеншік атты тағайындауды ұмытпаңыз. Мысалға:

INTERSECT операторына қолдау көрсетпейтін платформаларда оны FULL JOIN ішкі сұрауымен ауыстыруға болады.

ТАҢДАУ a.au_lname «фамилия» РЕТІН, a.au_fname «аты» РЕТІНДЕ авторлардан ҚИЫЛЫС ТАҢДАУ e.emp_lname «фамилиясы» РЕТІН, e.emp_fname «аты» РЕТІН ҚЫЗМЕТКЕРЛЕРДЕН ТӘРІП БОЙЫНША ТЕГІ, аты;

Әртүрлі INTERSECT мәлімдемелеріндегі бағандардың деректер түрлері үйлесімді болуы мүмкін болғандықтан, әртүрлі RDBMS платформаларында әртүрлі ұзындықтағы бағандармен жұмыс істеудің әртүрлі әдістері болуы мүмкін. Мысалы, егер алдыңғы мысалдағы бірінші сұраудағы aujname бағаны екінші сұраудағы empjname бағанынан айтарлықтай ұзын болса, онда әртүрлі платформаларда соңғы нәтиженің ұзақтығын анықтауға арналған әртүрлі ережелер болуы мүмкін. Бірақ, жалпы алғанда, платформалар нәтиже үшін ұзағырақ (және азырақ шектелген) өлшемді таңдайды.

Әрбір RDBMS баған тізімдеріндегі атаулар әртүрлі болған жағдайда, баған атын пайдаланудың өз ережелерін қолдана алады. Әдетте бірінші сұраудың баған атаулары пайдаланылады.

DB2

DB2 платформасы қолдайды түйінді сөздер ANSI стандартының БАРЛЫҒЫН ҚОСЫМША VALUES тармағын қосу және ҚЫСЫЛУ.

(нұсқау._SELECT_7 | VALUES (көрсеткіш7 [, ...])) INTERSECT

] (нұсқау_SCJ_2 | VALUES (көрсеткіш2 [, ...])) INTERSECT

INTERSECT DISTINCT операторына қолдау көрсетілмегенімен, функционалды эквивалент INTERSECT болып табылады. CORRESPONDING сөйлеміне қолдау көрсетілмейді.

Сонымен қатар, LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK деректер түрлері және құрылым түрлері INTERSECT сөйлемінде пайдаланылмайды, бірақ оларды INTERSECT ALL сөйлемінде қолдануға болады.

Нәтиже жиынында барлық ТАҢДАУ мәлімдемелерінде бірдей аты бар баған болса, онда бұл атау мәлімдеме қайтарған бағанның соңғы атауы ретінде пайдаланылады. Дегенмен, сұрауларда әртүрлі баған атаулары пайдаланылса, DB2 платформасы нәтижелі баған үшін жаңа атауды жасайды. Осыдан кейін ол ORDER BY және FOR UPDATE сөйлемдерінде жарамсыз болады.

Деректер жиынымен жұмыс істеу үшін бір сұрауда бірнеше операторлар пайдаланылса, алдымен жақшаға алынған оператор орындалады. Осыдан кейін орындау тәртібі солдан оңға қарай болады. Дегенмен, барлық INTERSECT операторлары UNION және EXCEPT операторларының алдында орындалады, мысалы:

ТАҢДАУ қызметкерден жұмыс бөлімінде "E%" ҚИЫСҚАН СИЯҚТЫ (ТАҢДАУ empno FROM emp_act WHERE projno IN ("IF1000", "IF2000", "AD3110") БІРДІК МӘНДЕРІ ("AA0001"), ("AB0002"), ("AC000 «))

Жоғарыдағы мысал қызметкер кестесінен аты "E" әрпінен басталатын бөлімдегі барлық қызметкерлердің қызметкер идентификаторларын шығарады. Дегенмен, идентификаторлар егер олар emp_act деп аталатын қызметкер тіркелгілер кестесінде болса және IF1000, IF200" және AD3110 жобаларына қатысқан болса ғана шығарылады.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!