SQL гэж юу вэ?

Та энэ хичээлийг уншиж байна гэдэг нь танд ямар нэгэн байдлаар өгөгдлийн сантай ажиллах шаардлага байгаа гэдгийг баталж байна. SQL хэл нь яг үүнд зориулагдсан ойлгохын тулд юуны өмнө өгөгдлийн сангийн технологийн үндсэн ойлголтуудтай танилцах нь маш чухал.
Бид өгөгдлийн санг бараг өдөр бүр ашиглаж байдаг. Жишээ нь өөрийн майлыг шалгахдаа нэр, нууц үгээ оруулах, интернетээс ямар нэгэн мэдээллийг хайх, ажил дээрээ байгууллагынхаа дотоод сүлжээнд нэвтрэх, банкны картын үлдэгдлээ шалгах г.м маш олон жишээг дурьдаж болно.  Гэсэн хэдий ч бараг ихэнх хүмүүст өгөгдлийн сан гэж юу болох нь ойлгомжгүй хэвээрээ үлддэг. Иймээс бид хичээлээ өгөгдлийн сантай хамааралтай хамгийн чухал тодорхойлолтуудаас эхэлье.

Өгөгдлийн сан гэж юу вэ?

Өгөгдлийн сан гэсэн ухагдхууныг маш олон хэлбэрээр тайлбарладаг боловч бид / SQL  талаас илүү түлхүүгээр / өгөгдлийн сан гэдгийг ямар нэгэн байдлаар зохион байгуулагдсан мэдээллийн цуглуулга гэж үзье. Энгийнээр өгөгдлийн санг баримт бичиг хадгалдаг шүүгээ гэж ойлгоход болно. Шүүгээ гэдэгт ямар мэдээллүүд болон тэдгээр нь ямар зохион байгуулалттай гэдгээс үл хамааран зүгээр л мэдээлэл хадгалагдаж байгаа биет байрлалыг ойлгоно.
Өгөгдлийн сан гэдэг нь зохион байгуулалт бүхий / голдуу файлууд эсвэл хэсэг файлууд байна. / өгөгдлүүдийг хадгалах контейнер /сав/ юм.

Хүснэгтүүд / Tables /

Хүмүүс шүүгээнд бичиг баримтаа хадгалахдаа тэдгээрийг холилдуулахгүйн тулд хавтсанд хадгалдаг. Өгөгдлийн санд эдгээр хавтсыг хүснэгт гэж нэрлэдэг.
Хүснэгт гэж тодорхой төрлийн өгөгдлүүдийг зохион байгуулалттайгаар хадгалж байгаа файл юм. Хүснэгт нь харилцагчдын жагсаалт, бүтээгдхүүний нэрсүүд гэх мэтээр төрөл бүрийн мэдээллийг хадгална. Хүснэгтэд нэг төрлийн мэдээллийг хадгалах хэрэгтэй. Жишээ нь нэг хүснэгтэд харилцагчдын болон захиалгын жагсаалтыг хольж болохгүй. Энэ нь тухайн жагсаалтаас мэдээлэл татан авахад хүндрэл үүсгэдэг. Ийм тохиолдолд тухайн мэдээллүүдийг хоёр хүснэгт болгон салгах хэрэгтэй. Өгөгдлийн сангийн хүснэгт бүр нь өөрийн давтагдахгүй нэртэй байх шаардлагатай.

Баганууд болон өгөгдлийн төрлүүд  / Column and Data type /

Хүснэгт нь багануудаас бүрдэх бөгөөд тэдгээрт хүснэгтийн мэдээллийн тордорхой хэсэг байрлана. Багана нь хүснэгтийн нэг талбар юм. Хүснэгт нь нэг буюу түүнээс илүү талбартай байна. Жишээ нь харилцагчдын хүснэгтийн нэг талбар /багана/ -т код, нөгөө талбарт нэр, гуравдах талбарт хаяг г.м
Багана бүр нь энэ баганад байж болох мэдээллийн тодорхой төрөлтэй байдаг. Жишээ нь талбар нь захиалгын тоог илэрхийлсэн мэдээлэл агуулах бол энэ талбар нь тоон төрлийн байх, хэрвээ нэрийг хадгалах бол текст төрлийн байх г.м
Өгөгдлийн төрөл гэдэг нь баганад хадгалах өгөгдлийн шинжийг хэлнэ. Баганы өгөгдлийн төрлийг зөв сонгох нь өгөгдлийн санг зохион байгуулах цаашид ашиглахад чухал үүрэгтэй байдаг.

Мөрүүд / Rows /

Хүснэгтийн өгөгдлүүд мөрөнд хадгалагдана. Бичлэг бүр нь өөрийн мөрөнд байна. Жишээ нь харилцагчдын жагсаалтын хүснэгтэд харилцагч бүрийн мэдээлэл нь тусдаа мөрөнд байрлах ба хүснэгтийн мөрийн тоо нь харилцагчдын хүснэгтийн бичлэгийн тоотой тэнцүү байна.
Мөр гэдэг нь хүснэгтийн бичлэг юм. Өгөгдлийн санд мөрийг бичлэг гэж авч үздэг.

Анхдагч түлхүүр / Primary key /

Хүснэгтийн мөр бүрт тухайн мөрийг давхардахгүй байдлаар илэрхийлэх баганууд байх ёстой. Жишээ нь харилцагчдын хүснэгтэд ийм талбар нь харилцагчийн код /дугаар/, захиалгын хүснэгтэд захиалгын номер байх жишээтэй.
Хүснэгтийн мөр бүрийг давхардахгүй байдлаар илэрхийлэх баганыг /эсвэл багануудыг/ анхдагч түлхүүр гэнэ. Анхдагч түлхүүрээр хүснэгтийн баганыг тодорхойлно. Ийм түлхүүргүйгээр хүснэгтийн мөрийн мэдээллийг устгах, өөрчлөх үйлдлийг хийхэд ихээхэн хүндрэл үүсгэдэг.
Хүснэгтэд анхдагч түлхүүр байх албагүй боловч өгөгдлийн сангийн хүснэгт хоорондын холбоо, мэдээлэл боловсруулахад энэ нь чухал үүрэгтэй тул ихэнх програм зохиогчид хүснэгт бүрт анхдагч түлхүүрийг тавьж өгдөг.
Дараах нөхцлүүдийг хангаж байгаа ямарч баганыг анхдагч түлхүүрээр сонгож болно. Үүнд:

  • Хүснэгтийн хоёр өөр мөр анхдагч түлхүүрийн талбарт ижил утга авахгүй
  • Анхдагч түлхүүрийн талбарт мөр бүр нь тодорхой утгатай байх /Хүснэгтийн анхдагч түлхүүрийн багана NULL утга авч болохгүй/
  • Анхдагч түлхүүрийн баганы утганд өөрчлөлт оруулах боломжгүй байх
  • Анхдагч түлхүүрийн баганы утгыг дахин ашиглахгүй байх /Хүснэгтийн бичлэгийг устгасны дараа түүний анхдагч түлхүүрийн утгыг өөр мөрөнд олгож болохгүй/
    зэрэг болно

Анхдагч түлхүүрээр ихэнхдээ нэг баганыг сонгодог боловч хэд хэдэн баганыг сонгож болно. Гэхдээ эдгээр багануудын хувьд дээрх нөхцөл хангагдаж байх ёстой. Бас гадаад түлхүүр гэсэн чухал төрлийн түлхүүр байдаг ба энэ тухай бид дараа үзэх болно.

SQL гэж юу вэ?

SQL гэдэг нь Structured Query Language буюу / орчуулах шаардлагагүй товчлолоор нь ойлгоход болно / гэсэн үгний товчлол юм. SQL нь өгөгдлийн сантай ажиллахад зориулагдан зохиогдсон хэл бөгөөд өгөгдлийн сангийн мэдээллийг татан авах, мэдээллийг өгөгдлийн санд бичих үйлдлийг энгийн, үр дүнтэйгээр гүйцэтгэх үүрэгтэй. SQL-ийн давуу талууд нь

  • Бараг ихэнх том ӨСУСSQL-ийг дэмждэг. Энэ нь танд ямарч өгөгдлийн сантай ажиллах боломжийг олгоно
  • Сурахад амархан. SQL-нь энгийн англи үгнүүдээс бүтсэн цөөн тооны командтай.
  • SQL нь энгийн мэт харагдах боловч маш хүчирхэг хэл. Түүний элементүүдийг оновчтой ашигласнаар өгөдлийн санд нарийн хүнд ажиллагааг амархан хийж болдог.

Иймээс SQL-ийг сурах хэрэгтэй.

Стандарт SQL нь стандартын хороогоор /ANSI / батлагдсан бөгөөд ANSI SQL гэж нэрлэгддэг. Ихэнх том ӨСУС-д  ANSI SQL-г дэмжин ажилладаг.
Ямарч хэлийг сурах хамгийн шалгарсан арга бол түүнийг практик дээр турших явдал байдаг. Иймд SQL-ийн командуудыг туршин үзэхийн тулд танд өгөгдлийн сан хэрэгтэй болно. Хичээлүүдэд ашиглагдаж байгаа жишээнүүд бүгд бодит баазтай ажиллаж байгаа ба туршилтын баазыг эндээс татан аваарай. Ашиглахад хялбарыг бодон архивт зөвхөн MicroSoft Access баазыг оруулсан болно. Өгөгдлийн сангийн бүтэц зохион байгуулалтын талаар Хавсралтаас үзээрэй.

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 1980 Бүртгүүлэх

Өмнөх хичээлд үзсэн жишээнүүд нь бүгд өгөгдлүүдийг зөвхөн ганцхан нөхцлөөр татан авч байсан билээ. Тэгвэл WHERE –д AND эсвэл OR гэсэн түлхүүр үгнүүдийг ашиглан хайлтын нөхцлийг өргөтгөж болно. Хайлтын нөхцлийг хэрхэн өргөтгөхийг жишээн дээр авч үзье.

SELECT prod_id, vend_id, prod_name, prod_price FROM Products 
WHERE vend_id='DLL01' AND prod_price<=4;

  Нээгдсэн тоо: 1800 Төлбөртэй

Өмнөх хичээлээс бид хүснэгтийн өгөгдлүүдийн дүнг SQL статик функцээр хэрхэн авахыг мэдсэн. Гэхдээ бид өгөгдлүүдийн дүнг хүснэгтийн бүх бичлэгүүдийн хувьд WHERE-д заагдсан нөхцлийн дагуу авч байсан.
Тэгвэл бидэнд нийлүүлэгч хэдэн бараа санал болгосныг нийлүүлэгч бүрээр мэдэх шаардлагтай болсон гэж бодъё. Энэ асуудлыг шийдвэрлэхэд бид групп /бүлэг/-ыг хэрэглэнэ. Бүлэглэх нь бүх өгөгдлүүдийг логик хэсгүүдэд хувааснаар бидэнд энэ хэсгүүдэд статик функцуудыг ашиглах боломж олгодог.

  Нээгдсэн тоо: 2682 Төлбөртэй

Бид өмнө нь Тооцоологдох талбар үүсгэх хичээлд хүснэгтийн баганад завсарын нэр /alias/ хэрхэн өгөх тухай үзсэн. Үүнээс гадна SQL нь хүснэгтийн нэрэнд завсарын нэр /alias/ олгох боломжой байдаг. Энэ нь дараах хоёр үндсэн шалтгаантай.

  1. SQL-ийн илүү богино бичлэг
  2. Нэг SELECT операторт нэг хүснэгтийг олон дахин ашиглах боломжийг нээнэ

Дараах операторыг авч үзье

  Нээгдсэн тоо: 1875 Төлбөртэй

Өгөгдлийн сангийн хүснэгтүүдэд хадгалагдаж байгаа мэдээллүүд нь таны програмд яг хэрэгттэй байдлаараа байхгүй байх нь элбэг тохиолдоно. Жишээлбэл

  • Танд компаний нэрийг хаягтай нь цуг үзүүлэх хэрэгтэй байтал эдгээр нь хүснэгтийн өөр өөр баганад байх
  • Баганы өгөгдлүүд том, жижиг үсгээр байхад та тайланд бүгдийг жижиг үсгээр гаргах хэрэгтэй болох
  • Хүснэгтэд худалдан авсан барааны тоо хэмжээ, үнийн мэдээлэл байхад тайланд бараа бүрээр худалдан авалтын нийт үнийн дүнг гаргах
  • Хүснэгтүүдэд байгаа өгөгдлүүдээс дундажийг олох, нийт дүнг гаргах г.м ажиллагаа хийх болсон

Дээрх жишээнүүдэд шаардлагатай мэдээллүүд яг танд хэрэгтэй байдлаараа хүснэгтүүдэд хадгалагдаагүй байдаг.

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

Нээгдсэн тоо : 139

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

Нээгдсэн тоо : 201

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

Нээгдсэн тоо : 168

 

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 292

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 319

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 325

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 397

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 399

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 472

 
Энэ долоо хоногт

KLM суурьтай, KL=1, KK1=d талтай KLL1K1 тэгш өнцөгт хажуу бүхий KLMK1L1M1 призм өгөгджээ. KL_|_KM, LMM1 , KMM1 хавтгайнуудын хоорондын өнцөг 60°, бол утганд призмд түүний бүх талыг шүргэх шаарыг багтааж болно.

Нээгдсэн тоо : 1807

 

тоонд хуваахад гарах тооны аравтын бичлэгт "0" цифр хэдэн удаа орох вэ?

Нээгдсэн тоо : 1510

 

Нээгдсэн тоо : 1490