Ачааллж байна...
Өмнөх хичээлд бид SQLModel-ийн ард нуугдаж байсан SQL-тэй танилцаж, энэ сургалтын эхний гурван түвшинд SQLite болон DB Browser for SQLite ашиглана гэж хэлсэн. Энэ хичээлд тэр програмыг компьютертээ суулгаж, интерфейстэй нь танилцаад, сургалтын турш ашиглах жижиг жишээ өгөгдлийн санг өөрсдөө үүсгэнэ. Энэ бол тохиргооны хичээл тул алхам бүрийг дугаарлаж, дэлгэц дээр юу харагдахыг тайлбарлаж, гарч болох асуудлыг яг тэр алхам дээр нь шийдэх аргатай нь хамт бичлээ. Яарах хэрэггүй, алхам бүрийг дуусгаад дараагийнх руу шилжээрэй.
DB Browser for SQLite нь үнэгүй, нээлттэй эхийн програм бөгөөд SQLite өгөгдлийн сантай харилцах цонх юм. SQLite өөрөө зөвхөн нэг файл тул түүнийг нээж харах, query бичих, үр дүнг хүснэгт хэлбэрээр харахад тусгай програм хэрэгтэй. Энэ хичээлийг бичих үед програмын хамгийн сүүлийн хувилбар нь 3.13.1 байсан. Хэрэв та илүү шинэ хувилбар харвал зүгээр — үндсэн цонх, товчлуурууд нь ихэвчлэн хэвээр үлддэг.
Програмын интерфейс англи хэл дээр байдаг. Энэ нь санаа зовох зүйл биш: товчлуурын нэр бүрийг энэ хичээлд монголоор тайлбарлах бөгөөд та хэдхэн хичээлийн дараа эдгээр цөөн хэдэн үгийг автоматаар таньдаг болно. Мөн програмчлалын бусад хэрэгслүүдийн ихэнх нь англи интерфейстэй тул энэ нь цаашдаа танд тусална.
Өмнөх хичээлд SQLite-ийг хувийн дэвтэртэй зүйрлэсэн. Тэгвэл DB Browser for SQLite бол тэр дэвтрийг нээж уншдаг ширээ, гэрэл, үзэг нэгэн дор бэлэн байгаа ажлын байр юм. Дэвтэр өөрөө таны компьютерт .db өргөтгөлтэй нэг файл байдлаар хадгалагдана. Програмыг хаасан ч дэвтэр устахгүй, дараа нь хүссэн үедээ дахин нээж болно.
Энэ зүйрлэлээс нэг чухал зүйл гарна: файл ба програм хоёр тусдаа зүйл. Нэг програмаар олон өөр дэвтэр нээж болох бөгөөд нэг дэвтрийг өөр програмаар (жишээ нь, Python-оос) ч нээж болно. FastAPI сургалтад таны Python код database.db гэх мэт файлтай яг ийм байдлаар ажиллаж байсан — тэр үед ширээ нь таны Python програм байсан.
DB Browser for SQLite нь Windows-ийн гурван төрөлд тусдаа суулгагчтай: 64-bit, 32-bit, ARM64. Ихэнх орчин үеийн компьютер 64-bit байдаг ч буруу суулгагч татахаас сэргийлж эхлээд шалгаарай.
Start цэсийг нээгээд Settings (Тохиргоо) руу орно.
System гэснийг сонгоод, жагсаалтын хамгийн доод талд байх About дээр дарна.
System type гэсэн мөрийг олоорой. Тэнд “64-bit operating system, x64-based processor” гэж бичсэн бол танд 64-bit хувилбар хэрэгтэй. “ARM-based processor” гэж бичсэн бол ARM64 хувилбар, “32-bit operating system” гэж бичсэн бол 32-bit хувилбар хэрэгтэй.
[Зураг: Settings → System → About цонх, System type мөр тодруулсан]
Вэб хөтчөөрөө sqlitebrowser.org/dl хаягаар орно. Энэ бол програмын албан ёсны татах хуудас. Өөр сайтаас татахгүй байхыг зөвлөж байна, учир нь албан бус хуулбарт хортой код нэмэгдсэн байж болзошгүй.
Windows хэсгээс өөрийн компьютерт тохирох Standard installer холбоосыг сонгоно. 64-bit компьютерт “Standard installer for 64-bit Windows” гэснийг дарна. Татагдах файлын нэр нь DB.Browser.for.SQLite-v3.13.1-win64.msi шиг харагдана.
Мөн тэр хуудсанд “.zip (no installer)” болон “PortableApp” гэсэн сонголт байгаа. Эдгээр нь суулгахгүйгээр ажиллуулдаг хувилбарууд юм. Хэрэв ажлын компьютер дээр програм суулгах эрхгүй бол тэдгээр нь тус болно, гэхдээ энэ хичээл стандарт суулгагчийг ашиглана.
[Зураг: татах хуудасны Windows хэсэг, 64-bit installer холбоос тодруулсан]
Mac компьютер ашигладаг бол тэр хуудасны macOS хэсэгт .dmg файл байгаа бөгөөд түүнийг нээж, програмыг Applications хавтас руу чирээд суулгана. Цаашдын хичээлүүдэд програмын цонх бараг адилхан харагдана.
Татсан .msi файл дээр давхар дарна.
Суулгагчийн эхний цонх гарч ирнэ. Next дээр дарна.
Лицензийн гэрээний цонхонд гэрээг зөвшөөрөх сонголтыг тэмдэглээд Next дарна.
Shortcuts гэсэн цонх гарч ирнэ. Энд програмын товчлолыг (shortcut) хаана үүсгэхийг сонгоно. DB Browser (SQLite) гэсэн мөрөнд Desktop болон Program Menu хоёулангийнх нь тэмдэглэгээг тавиарай. Тэнд DB Browser (SQLCipher) гэсэн өөр мөр бас байгаа — энэ нь нууцлагдсан өгөгдлийн сантай ажиллах хувилбар бөгөөд бидэнд хэрэггүй тул тэмдэглэхгүй орхиж болно.
Дараагийн цонхонд суулгах хавтсыг өөрчлөхгүйгээр Next дарна.
Install дээр дарна. Windows “Do you want to allow this app to make changes to your device?” гэж асуувал Yes гэж хариулна. Энэ нь програм суулгахад зөвшөөрөл хүсэж буй ердийн асуулт юм.
Суулгалт дууссаны дараа Finish дарна.
[Зураг: Shortcuts цонх, DB Browser (SQLite) мөрийн тэмдэглэгээ]
Энэ алхам дээр гарч болох асуудал: .msi файлыг нээхэд “Windows protected your PC” гэсэн цэнхэр цонх гарч ирж магадгүй. Энэ нь Windows SmartScreen хамгаалалт бөгөөд олон хүн татдаггүй програмд заримдаа гардаг. Хэрэв та файлыг дээрх албан ёсны хуудаснаас татсан бол More info дээр дараад гарч ирэх Run anyway товчийг дарж үргэлжлүүлж болно. Харин суулгах үед “This installation package could not be opened” гэх мэт алдаа гарвал татсан файл тань компьютерийн төрөлд тохирохгүй байж магадгүй — Алхам 1-ээ дахин шалгаад зөв хувилбарыг татаарай.
Start цэс эсвэл ширээний товчлолоос DB Browser (SQLite)-ийг нээгээрэй. Анх нээхэд ихэнх хэсэг нь хоосон, саарал харагдана, учир нь одоогоор ямар ч өгөгдлийн сан нээгээгүй байна. Цонхны хэсгүүдийг дээрээс доош нь танилцъя.
Хамгийн дээд талд цэсний мөр (File, Edit, View, Tools, Help) байх бөгөөд түүний доор хэрэгслийн мөр (toolbar) байна. Хэрэгслийн мөрөнд бидний хамгийн их ашиглах дөрвөн товч бий. New Database нь шинэ хоосон өгөгдлийн сан (шинэ дэвтэр) үүсгэнэ. Open Database нь компьютерт байгаа .db файлыг нээнэ. Write Changes нь таны хийсэн өөрчлөлтийг файлд бодитоор хадгална. Revert Changes нь хадгалаагүй өөрчлөлтүүдийг цуцалж, файлыг сүүлд хадгалсан байдалд нь буцаана. Сүүлийн хоёр товчийг сайн санаарай — энэ програм таны өөрчлөлтийг автоматаар хадгалдаггүй бөгөөд энэ тухай доор дахин ярина.
Хэрэгслийн мөрийн доор програмын гол хэсэг болох дөрвөн таб (tab) байрладаг. Database Structure таб нь өгөгдлийн сан дахь хүснэгтүүд болон тэдгээрийн багануудыг мод хэлбэрээр харуулна — дэвтрийн гарчгийн хуудас шиг. Browse Data таб нь сонгосон хүснэгтийн бүх мөрийг Excel-тэй төстэй хүснэгт хэлбэрээр харуулна. Edit Pragmas таб нь өгөгдлийн сангийн дотоод тохиргоонууд бөгөөд энэ сургалтад бид түүнд хүрэхгүй. Execute SQL таб нь SQL query бичиж ажиллуулдаг газар бөгөөд энэ сургалтын ихэнх цагийг бид энд өнгөрөөнө.
Цонхны баруун талд Edit Database Cell, SQL Log, Schema зэрэг жижиг самбарууд байж болно. Хэрэв тэдгээр нь танд саад болж байвал View цэснээс хааж болно, мөн хүссэн үедээ эргүүлж нээж болно. Одоохондоо тэдгээрийг анхаарах шаардлагагүй.
[Зураг: DB Browser-ийн үндсэн цонх, toolbar-ын дөрвөн товч болон дөрвөн таб тодруулсан]
Сургалтын турш үүсгэх файлуудаа нэг дор хадгалахын тулд тусдаа хавтас үүсгэнэ.
File Explorer-ийг нээгээд Documents хавтас руу орно.
Тэнд sql-course нэртэй шинэ хавтас үүсгэнэ (хулганы баруун товч → New → Folder).
DB Browser руу буцаж ирээд хэрэгслийн мөрөөс New Database дээр дарна.
Файл хадгалах цонх нээгдэнэ. Сая үүсгэсэн Documents\sql-course хавтас руу ороод, файлын нэрд library гэж бичээд Save дарна. Програм .db өргөтгөлийг өөрөө нэмж, library.db файл үүснэ.
Үүний дараа шууд Edit table definition гэсэн цонх гарч ирнэ. Энэ нь хүснэгтийг хулганаар үүсгэх цонх юм. Бид хүснэгтүүдээ SQL скриптээр үүсгэх тул энэ цонхонд Cancel дарж хааж болно. Санаа зоволтгүй — өгөгдлийн сан аль хэдийн үүссэн, зөвхөн хоосон байна.
[Зураг: Edit table definition цонх, Cancel товч тодруулсан]
Файлын нэрийг англиар, зайгүй бичсэн нь санаатай. Цаашид бид энэ файлыг Python-оос ч нээх бөгөөд файлын нэр, хавтасны замд зай болон кирилл үсэг байхгүй бол олон жижиг асуудлаас сэргийлнэ.
Одоо бидэнд хоосон дэвтэр байна. Түүнийг дүүргэхийн тулд доорх SQL скриптийг ажиллуулна. Энэ скрипт хоёр хүснэгт үүсгэнэ: номын мэдээлэл хадгалах books, номын сангийн гишүүдийн мэдээлэл хадгалах members. Эдгээр нь FastAPI сургалтын Номын сангийн API-тай төстэй сэдэвтэй тул танд танил санагдана.
Скриптийн доторх CREATE TABLE, INSERT INTO гэх мэт тушаалуудыг одоо ойлгох шаардлагагүй. INSERT-ийг Бүлэг 3-т, CREATE TABLE-ийг Бүлэг 4-т бүрэн тайлбарлана. Одоохондоо энэ скрипт бол дэвтрийг бэлэн хуудастай болгож өгдөг "бэлтгэлийн" текст гэж үзээрэй.
sql
DROP TABLE IF EXISTS books;
DROP TABLE IF EXISTS members;
CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT,
year INTEGER,
genre TEXT,
copies INTEGER
);
CREATE TABLE members (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
city TEXT,
joined_year INTEGER,
email TEXT
);
INSERT INTO books (id, title, author, year, genre, copies) VALUES
(1, 'Монголын нууц товчоо', NULL, 1240, 'Түүх', 2),
(2, 'Тунгалаг Тамир', 'Ч.Лодойдамба', 1962, 'Роман', 3),
(3, 'Учиртай гурван толгой', 'Д.Нацагдорж', 1934, 'Жүжиг', 1),
(4, 'Clean Code', 'Robert C. Martin', 2008, 'Програмчлал', 4),
(5, 'Python Crash Course', 'Eric Matthes', 2015, 'Програмчлал', 5),
(6, 'The Pragmatic Programmer', 'Andrew Hunt', 1999, 'Програмчлал', 2);
INSERT INTO members (id, name, city, joined_year, email) VALUES
(1, 'Бат', 'Улаанбаатар', 2023, 'bat@example.com'),
(2, 'Сараа', 'Дархан', 2024, 'saraa@example.com'),
(3, 'Тэмүүлэн', 'Улаанбаатар', 2022, NULL),
(4, 'Номин', 'Эрдэнэт', 2024, 'nomin@example.com'),
(5, 'Ану', 'Улаанбаатар', 2025, 'anu@example.com');Скриптийн хэдэн онцлогийг товч тэмдэглэе. Эхний хоёр мөр дэх DROP TABLE IF EXISTS нь "хэрэв ийм хүснэгт аль хэдийн байвал устга" гэсэн утгатай. Ингэснээр та энэ скриптийг хэдэн ч удаа дахин ажиллуулсан, өгөгдлийн сан тань үргэлж яг ижил, цэвэр байдалд буцна. Хэрэв цаашдын хичээлүүдэд өгөгдлөө санамсаргүй эвдвэл энэ скриптийг дахин ажиллуулахад л хангалттай. Мөн "Монголын нууц товчоо"-ны зохиогчийн оронд, Тэмүүлэнгийн имэйлийн оронд NULL гэж бичсэнийг анзаарч болно. Энэ нь "мэдээлэл байхгүй" гэсэн утгатай бөгөөд Бүлэг 2-т NULL-ийн тухай бүтэн хичээл бий.
Одоо скриптийг ажиллуулъя:
Execute SQL таб руу шилжинэ.
Дээрх скриптийг бүхэлд нь хуулж (кодын хайрцгийн бүх мөрийг), Execute SQL табын дээд хэсэгт байх том бичих талбарт буулгана.
Бичих талбарын дээд талд байрлах гурвалжин хэлбэрийн Execute all товч дээр дарна. Мөн гарын F5 эсвэл Ctrl+Enter товчоор ажиллуулж болно.
Цонхны доод хэсэгт мессежийн талбар бий. Тэнд Execution finished without errors. гэсэн мөр гарч ирвэл скрипт амжилттай ажилласан гэсэн үг.
[Зураг: Execute SQL таб, скрипт буулгасан, Execute all товч болон амжилтын мессеж тодруулсан]
Энэ алхмыг тусад нь гаргасан шалтгаан бий. DB Browser for SQLite таны хийсэн өөрчлөлтийг шууд файлд бичдэггүй. Скрипт амжилттай ажилласан ч одоогоор хүснэгтүүд програмын санах ойд л байгаа бөгөөд файлд хараахан хадгалагдаагүй. Хэрэв та яг одоо програмаа хаавал (мөн хадгалах эсэх асуултад “No” гэж хариулбал) бүх ажил тань алга болно.
Хэрэгслийн мөрөөс Write Changes товч дээр дарна. Мөн Ctrl+S товчоор хийж болно.
Товч дарсны дараа Write Changes болон Revert Changes товчнууд саарал (идэвхгүй) болно. Энэ нь хадгалаагүй өөрчлөлт үлдээгүй гэсэн дохио юм.
Энэ зан чанар яагаад байдаг вэ гэвэл, програм таны бүх өөрчлөлтийг нэг transaction дотор хадгалж байдаг. Transaction бол "бүгд-эсвэл-юу-ч-үгүй гэрээ" бөгөөд Write Changes нь гэрээнд гарын үсэг зурах, Revert Changes нь гэрээг цуцлах үйлдэл юм. Бүлэг 12-т бид энэ ойлголтыг гүнзгий судлах бөгөөд тэр үед энэ товчнууд яагаад ийм байдлаар ажилладгийг бүрэн ойлгох болно. Одоохондоо нэг дадал тогтооё: өгөгдөл өөрчилсөн бол Write Changes дарна.
Одоо дэвтэр тань бүрэн бэлэн эсэхийг хоёр газраас шалгая.
Database Structure таб руу шилжинэ. Tables гэсэн хэсгийн доор books болон members гэсэн хоёр хүснэгт харагдах ёстой. Хүснэгт бүрийн хажуугийн жижиг сум дээр дарвал багануудын нэр, төрөл нь задарч харагдана: books хүснэгтэд id, title, author, year, genre, copies гэсэн зургаан багана байна.
Browse Data таб руу шилжинэ. Дээд талын Table гэсэн сонголтоос books-ийг сонгоно. Зургаан номын мэдээлэл хүснэгт хэлбэрээр харагдана. "Монголын нууц товчоо"-ны author нүдэнд NULL гэж саарал өнгөөр бичигдсэн байхыг анзаараарай.
Table сонголтоос members-ийг сонгоод таван гишүүнийг харна.
[Зураг: Browse Data таб, books хүснэгтийн зургаан мөр]
Хэрэв та эдгээрийг бүгдийг харж байгаа бол баяр хүргэе — сургалтын жишээ өгөгдлийн сан бэлэн боллоо. Дараагийн хичээлд бид Browse Data табыг ашиглахын оронд яг энэ хүснэгтүүдийг SQL-ээр өөрсдөө уншина.
Browse Data таб нь Excel шиг харагдах тул нүдэн дээр давхар дарж утгыг шууд засаж болно. Гэхдээ энэ сургалтад бид өгөгдлийг гараар засахгүй, харин SQL-ээр өөрчилнө. Учир нь Python-оос, эсвэл server дээрх өгөгдлийн сантай ажиллахад Browse Data шиг цонх байхгүй — зөвхөн SQL л бий. Browse Data-г зөвхөн "үр дүнгээ нүдээр шалгах" газар гэж үзээрэй.
Хэрэв сонирхож байвал DB Browser-оо хаагаад, дахин нээж, Open Database товчоор Documents\sql-course\library.db файлыг нээж үзээрэй. Өгөгдөл тань хадгалагдан үлдсэнийг Browse Data табаас харах болно. Энэ нь "файл ба програм хоёр тусдаа" гэсэн санааг өөрийн нүдээр батлах энгийн арга юм.
Мөн File Explorer-оор sql-course хавтас руу ороод library.db файлын хэмжээг харж болно. Энэ нь хэдхэн арван килобайт байх бөгөөд хоёр хүснэгт, арван нэгэн мөр бүхий бүтэн өгөгдлийн сан ийм жижиг нэг файл дотор багтаж байгаа нь SQLite-ийн гол давуу тал юм. Хэрэв одоо хийхийг хүсэхгүй бол огт хамаагүй.
Скриптийн нэг хэсгийг л хуулсан. Хэрэв та скриптийн эхлэл эсвэл төгсгөлийг орхиж хуулбал мессежийн талбарт near "...": syntax error хэлбэрийн мөр гарч ирнэ. Энэ мессеж юу гэж хэлж байна вэ гэвэл: "хашилтан доторх үгийн ойролцоо SQL-ийн дүрэм зөрчигдсөн байна, би үүнийг ойлгосонгүй." Ихэнхдээ тэр үгс нь таслагдсан мөрийн хэсэг байдаг. Засах арга нь бичих талбарыг бүхэлд нь цэвэрлээд (Ctrl+A, дараа нь Delete), скриптийг дахин бүтнээр нь хуулж буулгаад ажиллуулах юм. Скриптийн эхэнд DROP TABLE IF EXISTS байгаа тул дахин ажиллуулахад ямар ч хор хөнөөлгүй.
Write Changes дарахаа мартсан. Програмаа хаах үед “Do you want to save the changes made to the database file?” гэсэн асуулт гарч ирнэ. Энэ нь "та өгөгдлийн сангийн файлд хийсэн өөрчлөлтөө хадгалах уу?" гэсэн утгатай. Save гэж хариулбал бүх зүйл хадгалагдана. Хэрэв санамсаргүй Discard эсвэл “No” гэж дарсан бол файл тань хоосон үлдсэн байх тул Алхам 6-г дахин хийж, энэ удаад Write Changes дарахаа мартуузай.
Database is locked. Хэрэв та library.db файлыг өөр програмаас (жишээ нь, хоёр дахь DB Browser цонх эсвэл Python скрипт) нэгэн зэрэг нээсэн бол database is locked гэсэн мессеж гарч болно. Утга нь "өгөгдлийн сан түгжигдсэн байна" гэсэн бөгөөд өөр нэг програм тухайн мөчид дэвтэрт бичиж байгаа тул хоёр дахь нь хүлээх шаардлагатай болсныг илэрхийлнэ. Засах арга нь тэр файлыг нээсэн бусад програмыг хаах юм. Түгжээний тухай Бүлэг 12-т дэлгэрэнгүй ярина.
Edit table definition цонхонд хүснэгт үүсгэчихсэн. Алхам 5-д Cancel дарахын оронд санамсаргүй OK дарсан бол нэргүй эсвэл хоосон хүснэгт үүссэн байж магадгүй. Санаа зоволтгүй — энэ нь скриптийг ажиллуулахад саад болохгүй. Хэрэв Database Structure таб дээр books, members-ээс өөр хүснэгт харагдвал түүн дээр баруун товч дараад Delete Table сонгож устгаад, Write Changes дарахад хангалттай.
Энэ хичээлд та DB Browser for SQLite-ийг албан ёсны хуудаснаас татаж суулгалаа, түүний хэрэгслийн мөр болон дөрвөн табтай танилцлаа. Documents\sql-course хавтсанд library.db нэртэй өгөгдлийн сан үүсгэж, скриптээр books болон members хүснэгтүүдийг дүүргэлээ. Мөн энэ програм өөрчлөлтийг Write Changes дарах хүртэл хадгалдаггүй гэдгийг, скриптийг хэдэн ч удаа дахин ажиллуулж өгөгдлийн сангаа цэвэр байдалд буцааж болохыг мэдлээ.
Дараагийн хичээлд бид Execute SQL таб руу буцаж очоод анхны SELECT query-гээ бичнэ. books хүснэгтийн бүх мөрийг SQL-ээр уншиж, дараа нь зөвхөн хэрэгтэй багануудаа сонгож сурна. Мөн энэ сургалтын онцгой дадал болох query-г монгол хэлээр чангаар унших зуршлаа тэндээс эхлүүлнэ.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.