Өгөгдлийг эрэмбэлэх

SQL-операторт эрэмбэлэх дарааллыг зааж өгөөгүй бол өгөгдлийг хүснэгтэд байгаа байрлалын дагуу татан ирнэ. Энэ нь бичлэгүүд хүснэгтэд нэмэгдсэн дараалал байж болно. Гэхдээ бичлэгүүд дараа нь өөрчлөгдөх, утсгах зэрэг ажиллагаанд хамрагдсан бол дараалал нь ӨСУС үлдсэн зайг хэрхэн ашигласнаас шалтгаалах болно.
SELECT оператораар татан авч байгаа өгөгдлүүдийн дарааллыг тогтоохдоо ORDER BY гэсэн түлхүүр үгийг ашиглана.

SELECT prod_name FROM Products ORDER BY prod_name;

Командын үр дүн

Энэ бичлэг нь Өгөгдлийг татан авах хичээлд гарсан жишээтэй ижил боловч ORDER BY нь ӨСУС-д татан авсан өгөгдлүүдийг prod_name баганаар цагаан толгойн үсгийн дараалалаар эрэмбэлэхийг зааж өгнө. Тоонууд нь үсгүүдээс кодын хувьд өмнө байрладаг тул энд тоонуудаар эхэлсэн нэрүүд өмнө нь гарч ирсэн болно.

Хэд хэдэн баганаар эрэмбэлэх

Өгөгдлийг хэд хэдэн баганаар эрэмбэлэх шаардлага их тохиолддог. Жишээлбэл ажилчдын нэрсийг овог нэрээр нь, бүтээгдхүүнийг нэр, үйлдвэрлэсэн хугацаагаар эрэмбэлэх гэх мэтээр. Өгөгдлийг хэд хэдэн баганаар эрэмбэлэхийн тулд ORDER BY –д эрэмбэлэгдэх багануудын нэрийг таслалаар тусгаарлан бичиж өгдөг.

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price, prod_name;

Командын үр дүн

Энэ жишээ нь Products хүснэгтээс 3 баганыг татан эхлээд үнээр нь дараа нь нэрээр нь эрэмбэлэж байна. Олон баганаар эрэмбэлэхдээ ORDER BY -д заагдсан дарааллын дагуу эрэмбэлэгдэнэ. Өөрөөр хэлбэл дээрх жишээгээр prod_price талбарт ижил утгатай хэд хэдэн мөр байсан тохиолдолд үр дүн prod_name талбараар эрэмбэлэгдэнэ.

Баганы байрлалаар эрэмбэлэх

Эрэмбэлэх дарааллыг багануудын нэрээр өгөхөөс гадна баганы харьцангуй байрлалаар (энгийнээр баганы дугаараар) өгч болно. Жишээлбэл

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY 2, 3; 

Командын үр дүн

Операторын бичлэг нь ORDER BY д зөрж байгаа хэдий ч үр дүн өмнөхтэйгээ ижил байна. Энд эрэмбэлэх дарааллыг баганы нэрээр биш SELECT операторт байрлаж байгаа дарааллаар ORDER BY 2 гэдэг нь SELECT операторын баганы жагсаалтын 2 -р багана буюу prod_price –г зааж байгаа юм. Эндээс ORDER BY 2,3 нь ORDER BY prod_price, prod_name гэсэнтэй ижил болно. SELECT операторт нэрийг нь заагаагүй баганаар эрэмбэлэхэд энэ аргыг ашиглаж болохгүй.

Эрэмбэлэх дарааллыг тогтоох

Өгөгдлийг эрэмбэлэх анхдагч нөхцөл нь (А гаас Я) буюу өсөх дараалал байдаг хэдий ч  ORDER BY –д (Я гаас А) буурах дарааллыг өгч болдог. Үүнийг DESC гэсэн түлхүүр үгийн тусламжтайгаар хийнэ. Доорх жишээн дээр бүтээгдхүүний үнүүд буурах дарааллаар эрэмбэлэгдэж байна. Өөрөөр хэлбэл хамгийн эхэнд хамгийн их үнэтэйгээс эхэлнэ гэсэн үг.

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price DESC, prod_name;

Командын үр дүн

Дээрх жишээнээс харвал DESC -г зөвхөн prod_price баганад тавьж өгсөн болохоор бүтээгдхүүний үнэ буурах дарааллаар харин prod_name багана нь ердийн өсөх дарааллаар эрэмбэлэгдсэн байгаа нь харагдаж байна. Эндээс хэрвээ та хэд хэдэн баганаар буурах дарааллаар эрэмбэлэхийг хүсвэл буурах эрэмбэтэй багана бүрийн ард DESC түлхүүр үгийг тавьж өгөх шаардлагатай.
DESC гэсэн үг нь DESCENDING гэсэн үгний товчлол бөгөөд энэ хоёр үгний алиныг ч ашиглаж болно. Харин анхдагч утга болох ASC нь ASCENDING гэсэн үгний товчлол юм.

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

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

Бидний энд хүртэл үзсэн SQL үйлдлүүд нь нэг оператораар нэг буюу хэсэг хүснэгтэд хандаж байснаараа энгийн байсан. Гэхдээ SQL үйлдлүүд нь бүгд тийм ч хялбархан биш. Нарийн үйлдлүүдийг гүйцэтгэхэд хэд хэдэн операторыг ашиглах явдал гардаг. Дараах тохиолдолыг авч үзье.

  • Захиалгыг боловсруулах явцад тухайн бүтээгдхүүн агуулахад байгаа эсэхийг шалгах
  • Хэрвээ бүтээгдхүүн агуулахад байгаа бол тухайн бүтээгдхүүнийг захиалсан тухай тэмдэглэл хийж агуулахад байгаа барааны үлдэгдлийг өөрчлөх
  • Бүтээгдхүүн агуулахад байхгүй бол захиалгыг аваад нийлүүлэгчтэй холбогдох
  • Харилцагчид захиалгын талаар мэдээллэх

гэх мэтээр маш олон янзын тохиолдол байж болно.

  Нээгдсэн тоо: 17026 Нийтийн

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

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

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

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

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

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

Програмчлалын хэлнүүдийн адилаар SQL нь өгөгдлийг боловсруулах функцуудтэй байдаг.
Функц гэдэг нь өгөдлүүдийг боловсруулах, удирдах ажиллагааг хөнгөвчилөхөд зориулагдсан үйлдлүүд юм. Функцын жишээгээр бид өмнөх хичээлд мөрийн араас хоосон тэмдэгтийг устгахад ашигласан RTRIM() функцыг нэрлэж болно.
Юуны өмнө функцыг хэрхэн ашиглах талаар авч үзэхээс өмнө SQL-д функц ашиглах нь тодорхой асуудал үүсгэдэг гэдгийг тэмдэглэх нь зүйтэй. Бүх ӨСУС-д дэмждэг SQL операторуудаас (жишээ нь SELECT) ялгаатай нь ӨСУС-д төрөл бүрийн функцуудыг ашигладаг. Зөвхөн цөөн тооны функцууд зарим ӨСУС-д ижилхэн хэлбэртэй байдаг. Гэхдээ бүх төрлийн функцууд ӨСУС бүрд байдаг хэдий ч тэдгээрийг ашиглах нь ихээхэн зөрөөтэй байдаг. ӨСУС-д функцын ялгаатай байдлыг доорх хүснэгтээс харна уу.

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

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

тэгшитгэлийг бод.

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

 

тэнцэтгэл бишийг бод.

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

 

Хоёр тамирчин тойрог замаар нэгэн зэрэг гарч 3,2 км замыг туулан барианд оржээ. Тойргийг нэг тамирчин нөгөөгөөсөө 10 секундээр хурдан тойрдог. Ялагч барианд орж байхад нөгөө нь бүтэн тойрог гүйх үлдсэн байлаа. Ялагч замыг 9 мин 20 секундэд туулсан бол тойрог замын уртыг ол. Тамирчдын хурдыг тогтмол гэж үзнэ.

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