12. клас · Информационни технологии

Сложните SQL заявки: разговор с данните

Как огромни системи, от банки до социални мрежи, намират за части от секундата точно тази информация, която ти трябва, сред милиони записи? Тайната е в езика SQL и в умението да се пишат сложни заявки. В дванайсети клас го овладяваш, защото базите данни са в основата на почти всяка програма.

⏱ 4 мин четене✅ По програмата на МОН

Как огромни системи, от банки до социални мрежи, намират за части от секундата точно тази информация, която ти трябва, сред милиони записи? Тайната е в езика SQL и в умението да се пишат сложни заявки. В дванайсети клас го овладяваш, защото базите данни са в основата на почти всяка съвременна програма.

Какво е SQL

SQL е езикът, на който говорим с релационните бази данни. Чрез него питаме базата какво съдържа, добавяме, променяме или изтриваме данни. Базата подрежда информацията в таблици от редове и колони, а SQL ни позволява да я извличаме точно и бързо. Простите заявки се учат лесно; истинската сила идва от сложните.

Свързването на таблици

Истинските бази данни рядко държат всичко в една таблица. Информацията е разпределена в много свързани таблици, например клиенти в една и поръчки в друга. За да съберем данни от няколко таблици в един резултат, използваме свързване, на английски JOIN. То е сред най-важните умения при работа с бази данни.

Видовете свързване

Има различни видове свързване. Вътрешното свързване, INNER JOIN, връща само редовете, които отговарят на условието и в двете таблици. Лявото свързване, LEFT JOIN, връща всички редове от лявата таблица, а липсващите съответствия от дясната попълва с празна стойност. Изборът на правилния вид свързване определя какъв резултат ще получиш.

Групирането на данни

Често искаме не отделните редове, а обобщение по групи: колко поръчки има всеки клиент, какъв е общият оборот по месеци. За това служи групирането, GROUP BY, което събира редовете по стойност на дадена колона. Заедно с него работят обобщаващите функции, които смятат върху всяка група.

Обобщаващите функции

Обобщаващите функции пресмятат една стойност от много редове. Функцията за броене връща колко са редовете; други функции смятат сбор, средно, най-голяма или най-малка стойност. В съчетание с групирането те дават мощни отговори: не само какви са данните, а какво ни казват те, обобщено и осмислено.

Филтрирането след групиране

Понякога искаме да филтрираме самите групи, например да покажем само клиентите с повече от десет поръчки. Обикновеният филтър работи върху отделните редове, преди групирането. За филтриране след групирането служи отделна клауза, HAVING. Разликата между двата вида филтриране е тънка, но важна, и често се проверява на изпит.

Премахването на повторения

В резултатите често има повтарящи се стойности. Когато искаме само различните, използваме ключовата дума за уникалност, DISTINCT, която премахва дубликатите. Така от дълъг списък с повторения получаваме кратък списък само с различните стойности. Това е просто, но много полезно средство при анализ на данни.

Заявка в заявката

Най-мощните заявки често съдържат друга заявка вътре в себе си, така наречената подзаявка. Тя пресмята междинен резултат, който външната заявка после използва. Подзаявките позволяват да задаваме сложни въпроси на стъпки, всяка от които е разбираема. Те са знак за зряло владеене на езика на базите данни.

Индексите и скоростта

Когато таблиците станат огромни, скоростта става важна. Индексът е специална структура, която ускорява търсенето, подобно на азбучния указател в края на книга. Без индекс базата преглежда всеки ред; с индекс намира бързо. Затова доброто проектиране на индекси е сред тайните на бързите бази данни.

Чести грешки

Често начинаещите бъркат вътрешно с ляво свързване и губят или добавят редове, без да разбират защо. Друга грешка е да филтрират групи с обикновения филтър вместо със специалната клауза. Трета е да пишат бавни заявки върху големи таблици без индекси. Разбирането на тези тънкости отличава добрия от посредствения резултат.

Защо ти трябва

Данните са сред най-ценните неща в съвременния свят, а SQL е езикът, на който ги питаме. Който го владее, може да извлича смисъл от огромни масиви информация, умение, търсено в почти всяка професия, от програмирането до бизнеса и науката. Затова сложните SQL заявки са сред най-практичните умения, които ще усвоиш.

🔎 Опитай

Представи си две таблици, ученици и оценки, и помисли как би попитал базата коя е средната оценка на всеки ученик. Ще ти трябват свързване, групиране и обобщаваща функция. Това е същината на анализа на данни.

Сега се упражни с играта

💡 Добре е да знаеш

Какво е SQL?

Езикът, на който говорим с релационните бази данни: извличаме, добавяме, променяме и изтриваме данни.

Каква е разликата между INNER и LEFT JOIN?

INNER връща само съвпадащите редове; LEFT връща всички от лявата таблица, а липсващите от дясната попълва с празна стойност.

За какво служи GROUP BY?

Групира редовете по стойност на колона, за да се пресметне обобщение по групи с обобщаваща функция.

Каква е разликата между обикновен филтър и HAVING?

Обикновеният филтър работи преди групирането, върху отделните редове, а HAVING филтрира групите след групиране.

За какво служи индексът в базата данни?

Ускорява търсенето, подобно на азбучен указател в книга. Без него базата преглежда всеки ред.

📖 Всички уроци по Информационни технологии за 12. клас

🚀 Упражнявай се с над 900 игри по програмата на МОН

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

Започни безплатно
БГ Училище
Уроците ни следват учебната програма на МОН и са създадени с грижа за това всяко дете да разбира лесно.
📖 Източник: МОН учебна програма по информационни технологии за 12. клас.