Se304 lec8

Preview:

Citation preview

C# ба MS-SQLӨгөгдлийн санг visual studio –д холбох

SE304 ӨГӨГДЛИЙН САНГИЙН УДИРДАХ СИСТЕМ

Батлав: ПХТ-ийн эрхлэгч Г.ЭРДЭНЭЧИМЭГ

ЛЕКЦ №8

ШУТИС-Ñ¿ÒÑ, Ìàãèñòð Ë.Áàòáèëýã (bayanzeerd2002@yahoo.com, +976-88515155)

Тооцоологдох талбар үүсгэх (SQL).

Өгөгдлийн сангийн хүснэгтүүдэд хадгалагдаж байгаа мэдээллүүд нь

таны програмд яг хэрэгтэй байдлаараа байхгүй байх нь элбэг

тохиолддог. Жишээлбэл:

компаний нэрийг хаягтай нь цуг үзүүлэх хэрэгтэй байтал эдгээр

нь хүснэгтийн өөр өөр баганад байх

Багнаны өгөгдлүүд том, жижиг үсгээр байхад тайланд бүгдийг

жижиг үсгээр гаргах хэрэгтэй болох

Хүснэгтэд худалдан авсан барааны тоо хэмжээ, үнийн мэдээлэл

байхад тайланд бараа бүрээр худалдан авалтын нийт үнийн дүнг

гаргах

Хүснэгтүүдэд байгаа өгөгдлүүдээс дунджийг олох, нийт дүнг

гаргах г.м ажиллагаа хийх болсон.

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

нь яг танд хэрэгтэй байдлаараа хүснэгтүүдэд

хадгалагдаагүй байдаг. Эдгээр мэдэээллийг

татан авчран клиент эсвэл тайлангийн

програмаар хэрэгтэй хэлбэрт оруулах,

ажиллагааг хийснээс шууд өгөгдлийн сангаас

хэрэгтэй хэлбэрээрээ татан авах нь илүү үр

дүнтэй.

Энд бид тооцоологдох талбарыг ашиглах

болно. Өмнө ашиглаж байсан хүснэгтийн

багануудаас тооцоолох талбар нь өгөгдлийн

сангийн хүснэгтүүдэд байхгүй бадгаараа

онцлогтой. Эдгээрийг SELECT оператороор

шууд үүсгэдэг.

Select операторт байгаа талбаруудын

аль нь жинхэнэ, аль нь тооцоологдох

талбар гэдгийг өгөгдлийн сан мэддэг.

Хэрэглэгчийн хувьд эдгээр талбарууд

нь яг л өгөгдлийн сангийн хүснэгтийн

ердийн талбар мэт харагдана.

Хэрэглэгчийн програмаар төрөл бүрийн

хувиргалт тооцооллыг хийж болох хэдий

ч энэ ажиллагааг ӨСУС-ээр сервер

талд хийлгэх нь илүү үр дүнтэй байдаг.

Учир нь ӨСУС нь яг тийм төрлийн

ажлыг хурдан, өндөр үр дүнтэй хийхэд

зориулагдсан байдаг.

Талбаруудыг холбох

Хоѐр өөр баганын мэдээллээс бүтсэн гарчиг үүсгэх

жишээгээр тооцоологдох талбарын ажиллагааг авч

үзье. Vendors хүснэгтэд нийлүүлэгчийн нэр, хаяг

байгаа. Нийлүүлэгчээр тайлан гаргахдаа гарчигийг

нэр(хаяг) гэсэн хэлбэрээр гаргах хэрэгтэй боллоо

гэе. Хүснэгтэд эдгээр мэдээллүүд vend_name,

vend_country багануудад байгаа бөгөөд хаягыг

хаалтанд оруулж гаргах хэрэгтэй. Эдгээр хаалт нь

нийлүүлэгчийн хаягийн мэдээлэлд байхгүй байдаг

Холболт гэдэг нь нэг утга гарган авахын

тулд баганы утгуудыг хооронд нь нийлүүлэх

үйлдлийг хэлнэ.

Дээрх бодлогыг шийдэхийн тулд баганы

утгуудыг холбох хэрэгтэй. SQL-д хоѐр

талбарын утгыг холболт хийхдээ SELECT-

ийн бичлэгт тусгай операторыг ашигладаг.

ӨСУС-ээс хамаарч оператор нь (+) нэмэх

тэмдэг эсвэл (||) хоѐр босоо зураас байдаг.

Санамж: (+) тэмдгийг Microsoft access,

MiroSoft SQL Server, SyBase ӨСУС-д (||)

хоѐр босоо зураас тэмдэглэгээг

ашигладаг.

Нийлүүлэгчийн тайлангийн толгойг нэр(хаяг)

гэсэн хэлбэрээр гаргах командуудын

жишээнүүд.

SELECT vend_name +‟(„+ved_country+‟)‟

FROM Vendors ORDER BY vend_name;

Эсвэл SELECT vend_name

||‟(„||ved_country||‟)‟ FROM Vendors ORDER

BY vend_name;

Дээрх жишээнүүд дээр дараах элементүүдийг

холбосон байна.

Vend_name талбарын утга

Нээсэн тэмдэгт агуулсан мөр

Vend_country талбарын утга

Хаасан хаалт агуулсан мөр

Select командын үр дүнд дээрх 4н элементийг

холбосон(тооцооллын талбар) нэг талбар

буцаасан байгаа нь харагдаж байна

Санамж: ӨСУС MySql нь холболт хийхдээ (+),

(||) тэмдгүүдийг ашигладаггүй. Энэ холболтыг

СONCAT гэдэг функцыг ашиглан хийдэг.

Дээрх нь MySql-д

SELECT CONCAT(vend_name,

„(„,vend_country,‟)‟) FROM Vendors ORDER

BY vend_name;

Байдлаар бичигдэнэ.

MySQL нь (||) тэмдгийг OR, (&&) тэмдгийг

and гэж ойлгодог.

Татан авчрах мэдээлэл зөв форматлагдсан

байлгахын тулд эдгээр хоосон зайг авч хаях

хэрэгтэй. Энэ ажиллагаа RTRIM() функцээр доорх

байдлаар хийнэ.

SELECT RTRIM(vend_name)+‟(„+RTRIM(vend_country)+‟)‟

FROM Vendors ORDER BY vend_name;

Ихэнх ӨСУС-д RTRIM() утгын баруун талаас

хоосон зайг арилгах, LTRIM() утгын зүүн талаас

хоосон зайг арилгах, TRIM() утгын баруун ба зүүн

талуудаас хоосон зайг арилгах функцуудыг

дэмждэг.

Завсрын нэр ашиглах (Alias name)

Өмнөх жишээнд SELECT оператор

нийлүүлэгчийн нэр, хаягыг холбох асуудлыг бүрэн

шийдвэрлэсэн. Гэхдээ шинээр тооцоологдсон

талбар ямарч нэргүй байгаа. SELECT операторын

үр дүнгээс харахад (жишээг Access дээр хийсэн

болохоор ӨСУС нь талбарт Expr1000 гэсэн нэр

өөрөө өгсөн байна зарим ӨСУС нь ямарч нэргүй

үр дүн буцаадаг) шинээр тооцоологдсон талбар нь

тухайлсан нэргүй нь харагдаж байна.

ӨСУС нь тооцоологдсон талбарт нэр өгөхгүй

эсвэл ямар нэр өгч байгааг мэдэхгүйгээр

клиент програм энэ талбарыг ашиглах

боломжгүй болно гэсэн үг. Энэ асуудлыг

шийдэхийн тулд SQL-д завсарын нэр (alias

name) гэсэн ойлголтыг ашигладаг.

Завсарын нэр (alias name) гэдэг нь талбар

болон утганы альтернатив /сонголттой/ нэр

юм.

Завсрын нэрийг AS түлхүүр үгээр

олгоно. Дараах жишээг харна уу.

SELECT

RTRIM(vend_name)+‟(„+RTRIM(vend_country

)+‟)‟AS vend_title FROM Vendors ORDER BY

vend_name;

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

Дээрх оператор нь өмнөх жишээнээс тооцоогогдох

талбарын AS vend_title гэж зааж өгснөөс өөрөөр ямарч

ялгаа байхгүй. Ингэснээр SQL тооцооны үр дүнд үүсгэх

vend_title нэртэй тооцоологдох талбарыг үүсгэнэ.

Командын үр дүн яг адилхан боловч талбар нь vend_title

нэртэй болсноор клиент талын програм энэ талбарт

хүснэгтийн бусад баганад ханддагтай адилаар хандах

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

нь уншигдахад хүнд, зөвшөөрөгдөөгүй тэмдэгт агуулж

байгаа тохиолдолд завсрын нэрийг ашигладаг.

Математик тооцоолол хийх.

Тооцоологдох талбарыг ашиглах бас нэгэн

арга нь сонгон авсан өгөгдлүүдэд

математик тооцоолол хийх юм. Жишээ авч

үзье: Orders хүснэгтэд захиалгууд байх ба

OrderItems хүснэгт нь захиалга бүрээр

ямар бараанууд захиалсан мэдээллийг

хадгална.

Prod_id quantity Item_prive

RGAN01 5 4,99₮

R03 5 11,99₮

BNBG01 10 3,49₮

BNBG02 10 3,49₮

BNBG03 10 3,49₮

Дараах SQL оператор нь 2008 дугаартай захиалгаар

захиалсан барааны жагсаалтуудыг авчирна.

SELECT prod_id, quantity, item_price FROM OrderItems

WHERE order_num=2008;

Командын үр дүн: Захиалгад байгаа бараа

бүрийн үнэ item_price баганад байгаа ба

барааны нийт үнийг (захиалсан барааны тоог

үнэд үржүүлсэн үржвэр) олохын тулд дараах

үйлдлийг хийх хэрэгтэй.

SELECT prod_id, quantity, item_price,

quantity*item_price AS expanded_price

FROM OrderItems WHERE

order_num=20008;

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

Prod_id quantity Item_priveExpanded_price

RGAN01 5 4,99₮24,95₮

R03 5 11,99₮ 59,95₮

BNBG01 10 3,49₮34,90₮

BNBG02 10 3,49₮34,90₮

BNBG03 10 3,49₮34,90₮

Дээрх шаардлагаар гарч ирсэн expanded_price талбар

нь тооцоологдох талбар бөгөөд клиент талын програм

энэ талбарыг хүснэгтийн бусад талбарын нэгэн

адилаар ашиглах боломжтой.

SQL нь математикийн үндсэн үйлдлүүдийг дэмждэг.

Үүнээс гадна үйлдлийн дарааллыг бөөрөнхий хаалт “()”

ашиглан өөрчилж болно.

АНХААРАЛ ХАНДУУЛСАНД

БАЯРЛАЛАА

Recommended