
SQL не үшін қажет: сұрақ қоюға болатын отбасы бюджеті
Курстың алғашқы сабағында дайын отбасы бюджетінің дерекқорын іске қосып, бір сұраумен кіріс, шығыс және қалдықты есептейміз. SQL қолмен жиналған шамамен жауаптың орнына дәл, қайталанатын әрі тексерілетін нәтиже береді.
Бұл не үшін қажет
Түбіртек көп, банк қолданбасы бірнешеу, ал қолма-қол ақша бөлек жүреді. Ай соңындағы «ақша қайда кетті?» деген қарапайым сұрақ калькулятормен өткізген кешке айналады. Электрондық кесте жол аз кезде көмектеседі, бірақ формула байқаусызда жылжып кетуі мүмкін. Дерекқор деректермен бірге ережелерді сақтайды, ал SQL ертең де дәл сол тәсілмен жауап алуға мүмкіндік береді.
Деректер — сатып алу күні, сома, санат сияқты жеке фактілер. Дерекқор — осындай фактілердің реттелген қоймасы. Ол мәліметті жазу үшін ғана емес, сенімді іздеу, байланыстыру, тексеру және өзгерту үшін қажет. Дерекқорды басқару жүйесі (ДҚБЖ) — дерекқорды басқаратын бағдарлама. Ол командаларды орындайды, шектеулерді бақылайды және екі әрекеттің бір фактіні байқатпай бүлдіруіне жол бермейді.
SQL — реляциялық ДҚБЖ-мен сөйлесуге арналған тіл. Қолмен іздеудің орнына «қыркүйектегі азық-түлік шығынын көрсет» немесе «қай санат лимиттен асты?» деген нақты сұрақ жазамыз. SQL-ді әзірлеушілер, талдаушылар, инженерлер, бухгалтерлер мен зерттеушілер пайдаланады. Кесте, кілт, сүзгі, байланыс және агрегат сияқты негіздер SQLite, PostgreSQL, MySQL және басқа жүйелерде де қолданылады.
Неліктен SQLite-тан бастаймыз
Үлкен сервистерге көбіне серверлік ДҚБЖ қажет: мысалы, PostgreSQL көптеген пайдаланушыға бір мезгілде қызмет көрсетіп, бөлек процесс ретінде жұмыс істейді. Ал алғашқы курста сервер баптауы, желі және есептік жазба бірінші сұрауға дейін артық кедергі жасар еді.
SQLite қарапайым: қозғалтқыш қолданбаның ішінде жұмыс істейді, бүкіл дерекқор бір тасымалданатын файлда сақтала алады. Бөлек сервер, интернет немесе тіркелу қажет емес. Сондықтан назар SQL мен деректер моделінде қалады. SQLite браузерлерде, телефондарда, үстелдік бағдарламаларда және ендірілген құрылғыларда қолданылады. Бірақ бұл әр гаджетте пайдаланушыға дайын дерекқор редакторы бар деген сөз емес.
Курста екі тең жол бар:
- компьютерде — ресми
sqlite3пәрмен жолы менbudget.dbфайлы; - смартфонда, планшетте немесе компьютерде — ресми SQLite WebAssembly сұрауларды браузердің өзінде орындайтын Shanraq SQL зертханасы.
Зертхана дерекқор мазмұнын Shanraq серверіне жібермейді. Дерекқор бет ашық тұрған кезде браузерде жұмыс істейді; келесі сабаққа сақтау үшін сақтық көшірмені жүктеп алып, кейін .sqlite файлынан қалпына келтіріңіз. Ортақ құрылғыға отбасының шынайы қаржы мәліметтерін енгізбеңіз.
Біз SQL тілінің жүйелер арасында қолданылатын негізін үйренеміз, ал SQLite-қа ғана тән ерекшеліктерді бөлек белгілейміз. Кейін PostgreSQL-ға өту тілді қайта бастау емес, сервер мен оның қосымша мүмкіндіктерін меңгеру болады.
Бейне. Кесте — атауы жазылған жәшіктері бар шкаф. SQL — қоймашыға берілген жазба: қай жәшікті ашу, нені таңдау және нәтижені қалай жинау керек. Өзгерту командасын бермейінше, жазба заттардың орнын ауыстырмайды.
Алдымен тұтас көрініс
Телефонда немесе планшетте
SQL зертханасын ашып, «Ай қорытындысын» таңдаңыз да, «Орындау» батырмасын басыңыз. Оқу сұлбасы мен ойдан алынған операциялар дайын. Сұрауды редакторда өзгертуге болады.
Компьютер терминалында
SQLite орнатып, жоба түбірінде орындаңыз:
sqlite3 budget.db
.read course/sql-budget/schema.sql
.read course/sql-budget/seed.sql
.read course/sql-budget/report.sql
Негізгі есеп сұрауы:
SELECT c.kind, SUM(t.amount_tiyn) / 100.0 AS amount_kzt
FROM transactions AS t
JOIN categories AS c ON c.id = t.category_id
WHERE t.happened_on >= '2026-09-01'
AND t.happened_on < '2026-10-01'
GROUP BY c.kind;
Нәтиже:
expense|127800.0
income|420000.0
Әзірге әр сөзді талдамаңыз. Тұтас қимылды байқаңыз: FROM фактілерді атайды, JOIN санат мағынасын қосады, WHERE айды шектейді, GROUP BY топтайды, SUM есептейді.
Талдау
Ақша тиынмен бүтін сан түрінде сақталады: 42000000 — 420 000,00 ₸. Ақшаға REAL қолданбаймыз, өйткені екілік бөлшек ондық бөлшекті әрдайым дәл көрсете алмайды.
Сұрау деректерді тек оқиды. Жаңа операциялар қосылғаннан кейін де оны қайталап орындауға болады, ал есептеу ережесі көз алдыңызда қалады.
Ай аралығы бірінші күнді қамтып, келесі айдың бірінші күнін қамтымайды. Кейін күнге сағат пен минут қосылса да, мұндай сүзгі дұрыс жұмыс істейді.
Сабақ картасы
Өз сөзіңізбен айтыңыз
- Қайталанатын сұрау қолмен есептеуден неге сенімді?
- Ақша неге тиынмен сақталады?
- Дайын сұраудан қандай бес бөлікті көрдіңіз?
- Дерекқор мен ДҚБЖ-ның айырмасы қандай?
- Неліктен алғашқы курс серверлік базадан емес, SQLite-тан басталады?
Тапсырма
Екі шекараны 2026 жылғы қазан айына ауыстырыңыз. Сұрауды орындап, оның неліктен қате емес, бос нәтиже бергенін түсіндіріңіз.
Жобадағы орны
Бұл — болашақ айлық есеп. Келесі сабақтарда кестелерді құрып, фактілерді қауіпсіз қосып, сұраудың әр жолын талдаймыз.
Жауаптар
Жауаптарды көрсету
Қазан үшін '2026-10-01' және '2026-11-01' шекаралары қажет. Сұрау дұрыс, бірақ базада бұл кезеңнің жолдары жоқ, сондықтан топтап есептейтін дерек табылмады.
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.