23
C# ба MS-SQL Өгөгдлийн санг visual studio –д холбох SE304 ӨГӨГДЛИЙН САНГИЙН УДИРДАХ СИСТЕМ Батлав: ПХТ-ийн эрхлэгч Г.ЭРДЭНЭЧИМЭГ ЛЕКЦ №8 ШУТИС-Ñ¿ÒÑ, Ìàãèñòð Ë.Áàòáèëýã ([email protected], +976-88515155)

Se304 lec8

Embed Size (px)

Citation preview

Page 1: Se304 lec8

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

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

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

ЛЕКЦ №8

ШУТИС-Ñ¿ÒÑ, Ìàãèñòð Ë.Áàòáèëýã ([email protected], +976-88515155)

Page 2: Se304 lec8

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

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

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

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

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

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

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

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

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

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

гаргах

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

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

Page 3: Se304 lec8

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

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

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

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

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

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

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

дүнтэй.

Page 4: Se304 lec8

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

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

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

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

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

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

Page 5: Se304 lec8

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

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

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

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

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

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

Page 6: Se304 lec8

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

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

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

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

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

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

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

Page 7: Se304 lec8

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

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

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

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

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

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

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

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

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

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

Page 8: Se304 lec8

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

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

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

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

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

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

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

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

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

Page 9: Se304 lec8

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

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

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

ашигладаг.

Page 10: Se304 lec8

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

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

жишээнүүд.

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

FROM Vendors ORDER BY vend_name;

Эсвэл SELECT vend_name

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

BY vend_name;

Page 11: Se304 lec8

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

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

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

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

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

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

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

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

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

Page 12: Se304 lec8

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

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

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

Дээрх нь MySql-д

SELECT CONCAT(vend_name,

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

BY vend_name;

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

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

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

Page 13: Se304 lec8

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

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

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

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

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

FROM Vendors ORDER BY vend_name;

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

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

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

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

дэмждэг.

Page 14: Se304 lec8

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

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

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

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

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

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

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

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

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

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

Page 15: Se304 lec8

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

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

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

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

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

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

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

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

юм.

Page 16: Se304 lec8

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

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

SELECT

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

)+‟)‟AS vend_title FROM Vendors ORDER BY

vend_name;

Page 17: Se304 lec8

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

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

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

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

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

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

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

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

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

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

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

Page 18: Se304 lec8

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

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

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

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

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

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

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

хадгална.

Page 19: Se304 lec8

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;

Page 20: Se304 lec8

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

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

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

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

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

SELECT prod_id, quantity, item_price,

quantity*item_price AS expanded_price

FROM OrderItems WHERE

order_num=20008;

Page 21: Se304 lec8

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

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₮

Page 22: Se304 lec8

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

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

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

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

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

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

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

Page 23: Se304 lec8

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

БАЯРЛАЛАА