MySQL MariaDB

Подзаявки за MySQL

Подзаявки за MySQL
Подзаявката е SQL заявка в по-голяма заявка, която е рекурсивна, или подзаявката се счита за вътрешна заявка. За разлика от това, външна заявка се нарича заявка, която включва подзаявката. Подзаявка на MySQL може да бъде вградена в заявките, включително SELECT, INSERT, UPDATE или DELETE. Освен това, в рамките на друга подзаявка, подзаявка може да бъде сгушена. Подзаявката за фраза трябва да бъде затворена в скоби, където и да се използва. Ще ви научим как и кога да използвате MySQL подзаявка за съставяне на сложни заявки и ще опишем идеята на свързаната подзаявка. Отворете обвивката на командния ред от вашия работен плот и напишете паролата си, за да започнете да я използвате. Натиснете Enter и продължете.

Подзаявка в записи на единична таблица:

Създайте таблица с име „животни“ в данните от базата данни.„Добавете следния запис на различни животни с различни свойства, както е показано. Вземете този запис, като използвате заявката SELECT, както следва:

>> ИЗБЕРЕТЕ * ОТ данни.животни;

Пример 01:

Нека извлечем ограничените записи на тази таблица, като използваме подзаявките. Използвайки заявката по-долу, знаем, че подзаявката ще бъде изпълнена първо и нейният изход ще бъде използван в основната заявка като вход. Подзаявката просто извлича възрастта, в която цената на животното е 2500. Възрастта на животно, чиято цена е 2500, е 4 в таблицата. Основната заявка ще избере всички записи в таблицата, където възрастта е по-голяма от 4, и изходът е даден по-долу.

>> ИЗБЕРЕТЕ * ОТ данни.животни WHERE Age> (SELECT Age FROM data.животни WHERE Цена = '2500');

Пример 02:

Нека използваме една и съща таблица в различни ситуации. В този пример ще използваме някаква функция вместо клаузата WHERE в подзаявката. Взехме средната стойност на всички цени, дадени за животни. Средната цена ще бъде 3189. Основната заявка ще избере всички записи на животни с цена над 3189. Ще получите изхода по-долу.

>> ИЗБЕРЕТЕ * ОТ данни.животни КЪДЕ Цена> (ИЗБЕРИ СРЕДНА (Цена) ОТ данните.животни);

Пример 03:

Нека използваме клаузата IN в основната заявка SELECT. На първо място, подзаявката ще достигне цени над 2500. След това основната заявка ще избере всички записи на таблица „животни“, където цената се намира в резултата от подзаявката.

>> ИЗБЕРЕТЕ * ОТ данни.животни КЪДЕ Цена В (ИЗБЕРЕТЕ ЦЕНА ОТ данните.животни КЪДЕ Цена> 2500);

Пример 04:

Използвахме подзаявката, за да извлечем името на животното, където цената е 7000. Тъй като това животно е крава, затова името „крава“ ще бъде върнато в основната заявка. В основната заявка всички записи ще бъдат извлечени от таблицата, където името на животното е „крава“.„Тъй като имаме само два записа за животинска„ крава “, ето защо имаме изход по-долу.

>> ИЗБЕРЕТЕ * ОТ данни.животни WHERE Име = (ИЗБЕРЕТЕ ИМЕ ОТ данни.животни WHERE Цена = '7000');

Подзаявка в множество записи на таблици:

Да приемем по-долу две таблици „ученик“ и „учител“ във вашата база данни. Нека опитаме няколко примера за подзаявки, използващи тези две таблици.

>> ИЗБЕРЕТЕ * ОТ данни.студент;
>> ИЗБЕРЕТЕ * ОТ данни.учител;

Пример 01:

Ще извлечем данни от една таблица, използвайки подзаявката и ще ги използваме като вход за основната заявка. Това означава, че тези две таблици могат да се свържат по някакъв начин. В примера по-долу използваме подзаявката, за да извлечем името на ученика от таблицата „студент“, където името на учителя е „Самина“.'Тази заявка ще върне' Samina 'към учителя на основната таблица за заявки.„Основната заявка след това ще избере всички записи, свързани с името на учителя“ Самина.„Тъй като имаме два записа за това име, следователно имаме този резултат.

>> ИЗБЕРЕТЕ * ОТ данни.учител WHERE TeachName = (ИЗБЕРЕТЕ TeachName ОТ данните.студент WHERE TeachName = 'Samina');

Пример 02:

За да разработите подзаявката в случай на различни таблици, опитайте този пример. Имаме подзаявка, която извлича името на учителя от ученика на масата. Името трябва да има „i“ на която и да е позиция в стойността му. Това означава, че всички имена в колоната TeachName с „i“ в стойността си ще бъдат избрани и върнати към основната заявка. Основната заявка ще избере всички записи от таблицата „учител“, където името на учителя е в изхода, върнат от подзаявката. Тъй като подзаявката върна 4 имена на учители, затова ще имаме запис на всички тези имена, които се намират в учителя на таблицата.'

>> ИЗБЕРЕТЕ * ОТ данни.учител КЪДЕ TeachName IN (ИЗБЕРЕТЕ TeachName ОТ данните.студент КЪДЕ TeachName КАТО „% i% ');

Пример 03:

Помислете за двете таблици по-долу „поръчка“ и „поръчка1“.

>> ИЗБЕРЕТЕ * ОТ данни.поръчка;
>> ИЗБЕРЕТЕ * ОТ данни.поръчка1;

Нека опитаме с ANY клауза в този пример, за да разработим подзаявка. Подзаявката ще избере „id“ от таблицата „order1“, където колоната „Status“ има стойност „Unpaid“.„Идентификаторът“ може да бъде повече от 1. Това означава, че повече от 1 стойност ще бъдат върнати към основната заявка, за да се получат резултатите от таблицата „поръчка“. В този случай може да се използва всеки „id“. Получихме изхода по-долу за тази заявка.

>> ИЗБЕРЕТЕ артикул, продажби, идентификатор от данни.поръчка WHERE id = ANY (ИЗБЕРЕТЕ id от данни.order1 WHERE Status = 'Unpaid');

Пример 04:

Да приемем, че имате данните по-долу в таблицата „order1“, преди да приложите някаква заявка.

>> ИЗБЕРЕТЕ * ОТ данни.поръчка1;

Нека приложим заявката в рамките на една заявка, за да изтрием някои записи от таблицата 'order1'. Първо, подзаявката ще избере стойността „Състояние“ от таблицата „Поръчка“, където Елементът е „Книга“.„Подзаявката връща„ Платено “като стойност. Сега основната заявка ще изтрие редовете от таблицата „order1“, където стойността на колоната „Status“ е „Paid.'

>> ИЗТРИВАНЕ ОТ данните.order1 WHERE Status = (SELECT Status FROM data.поръчка WHERE Артикул = 'Книга');

След проверка имаме по-долу записи в таблицата 'order1' след изпълнението на заявката.

>> ИЗБЕРЕТЕ * ОТ данни.поръчка1;

Заключение:

Във всички горепосочени примери сте работили ефективно с много подзаявки. Надяваме се, че всичко е ясно и чисто сега.

Пристанища с отворен код на търговски игрални машини
Безплатни разширения на играта с отворен код и междуплатформени игри могат да се използват за възпроизвеждане на стари, както и някои от доста скорошн...
Най-добрите игри за команден ред за Linux
Командният ред не е само най-големият ви съюзник при използване на Linux - той може да бъде и източник на забавление, защото можете да го използвате, ...
Най-добрите приложения за картографиране на геймпад за Linux
Ако искате да играете игри на Linux с геймпад вместо типична система за въвеждане на клавиатура и мишка, има някои полезни приложения за вас. Много ко...