SQL сұраныстар
Instagram-да «домбыра» деп іздегенде, қолданба МИЛЛИОНДАҒАН жазбаның ішінен дәл сен сұраған сөзді қалай табады? Жауап — SQL сұраныстары. Бұл сабақта деректер қорынан ақпаратты таңдап алу, өзгерту, жою және БІРНЕШЕ кестеден бірге деректі шығару тәсілдерін үйренеміз.
Сұраныс (query) — деректер қорынан қажетті ақпаратты таңдау құралы, дерекқорға қатысты қалыптасқан «сұрақ».
SELECT сұранысы алтыға дейін блоктан тұрады, БІРАҚ тек екеуі ғана міндетті:
| Блок | Қызметі | Міндетті ме |
|---|---|---|
SELECT | Нәтижеге қосылатын бағандарды анықтайды | Иә |
FROM | Ақпарат алынатын кестені көрсетеді | Иә |
WHERE | Нәтижеге енетін жазбаларды СҮЗЕДІ | Жоқ |
ORDER BY | Нәтижелерді СҰРЫПТАЙДЫ | Жоқ |
SELECT блогы сұраныста БІРІНШІ жазылғанымен, сервер оны ЕҢ СОҢЫНАН өңдейді — себебі таңдауды орындау үшін алдымен FROM блогындағы кестелерді білу керек.SELECT * FROM Instruments; — мұндағы * кестенің БАРЛЫҚ өрісін білдіреді.
Берілді: «шертпелі» түрдегі аспаптардың атауы мен жасалу күнін, күні бойынша өсу ретімен шығару.
SELECT name, data FROM Instruments
WHERE type = "shertpeli"
ORDER BY data ASC; Түсіндірме: ASC — өсу ретімен (әдепкі), DESC — кему ретімен сұрыптау.
DELETE — кестеден жол жояды. UPDATE — кестедегі жазбаны өзгертеді.
WHERE шарты берілмесе, кестедегі БАРЛЫҚ жол жойылады!DELETE FROM instruments WHERE name = "sazsyrnai";
Берілді: сыбызғының жасалу күнін 2018-10-07-ден 2018-10-25-ке ауыстыру.
UPDATE instruments SET data = "2018-10-25" WHERE id = 4; Дәл сөзді ғана емес, «БАСТАЛҒАН» немесе «АЯҚТАЛҒАН» жолды іздеу керек болса, LIKE операторы қолданылады:
| Символ | Сипаттамасы |
|---|---|
% | КЕЗ КЕЛГЕН ұзындықтағы жол |
_ | КЕЗ КЕЛГЕН бір таңба |
Берілді: түрі «шерт»-тен басталатын аспаптарды табу.
SELECT * FROM Instruments WHERE type LIKE 'shert%'; Түсіндірме: % «шерт» сөзінен кейін кез келген (соның ішінде нөлдік) жалғасуға рұқсат береді.
Көпкестелік деректер қорларына ерекше есеп тән — деректер БІРНЕШЕ кестеде орналасқанда, оларды бір сұраныста БІРІКТІРУ керек болады.
Берілді: аспап атаулары name_instr кестесінде, бағалары instruments кестесінде. Домбыраның бағасын табу.
SELECT id_name_ins, price
FROM instruments
WHERE id_name_ins IN (
SELECT id_name_ins FROM name_instr WHERE name_instr = "dombyra"
); Жауабы: IN() ІШКІ сұраныс нәтижесіндегі мәндер тізіміне сай жолдарды таңдайды.
JOIN («біріктіру») — уақытша кесте құрмай, бір сұраныспен БІРНЕШЕ кестеден деректі алуға мүмкіндік береді.
| Түрі | Не қайтарады |
|---|---|
INNER JOIN | ТЕК екі кестеде де сәйкес келетін жазбалар |
LEFT JOIN | Сол жақ кестенің БАРЛЫҒЫ + оң жақтан сәйкестер |
RIGHT JOIN | Оң жақ кестенің БАРЛЫҒЫ + сол жақтан сәйкестер |
Берілді: алдыңғы есептің нәтижесін аспап АТАУЫМЕН (кодымен емес) шығару.
Неге RIGHT JOIN? price өрісі instruments кестесінде (оң жақ), сондықтан оның БАРЛЫҚ жазбасын сақтау үшін RIGHT JOIN қолданамыз.
SELECT name_instr.name_instr, instruments.price
FROM name_instr
RIGHT JOIN instruments ON instruments.id_name_ins = name_instr.id_name_ins
WHERE name_instr = "dombyra"; Жауабы: dombyra | 200000, dombyra | 150000.
- SELECT — деректі таңдау, DELETE — жою, UPDATE — өзгерту негізгі SQL командалары.
- WHERE — жолды сүзу, ORDER BY — сұрыптау, LIKE — жуықтап іздеу.
- Ішкі сұраныс (IN арқылы) көпкестелі есептерде қолданылады.
- JOIN — бірнеше кестеден бір сұраныспен деректі біріктіру (INNER, LEFT, RIGHT).