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



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


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


                                              ЛЕКЦ №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 хүснэгт нь захиалга бүрээр
ямар бараанууд захиалсан мэдээллийг
хадгална.
Дараах SQL оператор нь 2008 дугаартай захиалгаар
захиалсан барааны жагсаалтуудыг авчирна.
SELECT prod_id, quantity, item_price FROM OrderItems
WHERE order_num=2008;


       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₮
Командын үр дүн: Захиалгад байгаа бараа
бүрийн үнэ item_price баганад байгаа ба
барааны нийт үнийг (захиалсан барааны тоог
үнэд үржүүлсэн үржвэр) олохын тулд дараах
үйлдлийг хийх хэрэгтэй.
SELECT prod_id, quantity, item_price,
quantity*item_price AS expanded_price
FROM OrderItems WHERE
order_num=20008;
Командын үр дүн:

                                   Expanded_price
 Prod_id   quantity   Item_prive

                                           24,95₮
RGAN01            5        4,99₮

R03               5       11,99₮           59,95₮
                                           34,90₮
BNBG01           10        3,49₮

                                           34,90₮
BNBG02           10        3,49₮

                                           34,90₮
BNBG03           10        3,49₮
Дээрх шаардлагаар гарч ирсэн expanded_price талбар
нь тооцоологдох талбар бөгөөд клиент талын програм
энэ талбарыг хүснэгтийн бусад талбарын нэгэн
адилаар ашиглах боломжтой.


SQL нь математикийн үндсэн үйлдлүүдийг дэмждэг.
Үүнээс гадна үйлдлийн дарааллыг бөөрөнхий хаалт “()”
ашиглан өөрчилж болно.
АНХААРАЛ ХАНДУУЛСАНД
     БАЯРЛАЛАА

Se304 lec8

  • 1.
    SE304 ӨГӨГДЛИЙН САНГИЙНУДИРДАХ СИСТЕМ Батлав: ПХТ-ийн эрхлэгч Г.ЭРДЭНЭЧИМЭГ C# ба MS-SQL Өгөгдлийн санг visual studio –д холбох ЛЕКЦ №8 ШУТИС-Ñ¿ÒÑ, Ìàãèñòð Ë.Áàòáèëýã (bayanzeerd2002@yahoo.com, +976-88515155)
  • 2.
    Тооцоологдох талбар үүсгэх(SQL). Өгөгдлийн сангийн хүснэгтүүдэд хадгалагдаж байгаа мэдээллүүд нь таны програмд яг хэрэгтэй байдлаараа байхгүй байх нь элбэг тохиолддог. Жишээлбэл: компаний нэрийг хаягтай нь цуг үзүүлэх хэрэгтэй байтал эдгээр нь хүснэгтийн өөр өөр баганад байх Багнаны өгөгдлүүд том, жижиг үсгээр байхад тайланд бүгдийг жижиг үсгээр гаргах хэрэгтэй болох Хүснэгтэд худалдан авсан барааны тоо хэмжээ, үнийн мэдээлэл байхад тайланд бараа бүрээр худалдан авалтын нийт үнийн дүнг гаргах Хүснэгтүүдэд байгаа өгөгдлүүдээс дунджийг олох, нийт дүнг гаргах г.м ажиллагаа хийх болсон.
  • 3.
    Дээрх жишээнүүдэд шаардлагатаймэдээллүүд нь яг танд хэрэгтэй байдлаараа хүснэгтүүдэд хадгалагдаагүй байдаг. Эдгээр мэдэээллийг татан авчран клиент эсвэл тайлангийн програмаар хэрэгтэй хэлбэрт оруулах, ажиллагааг хийснээс шууд өгөгдлийн сангаас хэрэгтэй хэлбэрээрээ татан авах нь илүү үр дүнтэй.
  • 4.
    Энд бид тооцоологдохталбарыг ашиглах болно. Өмнө ашиглаж байсан хүснэгтийн багануудаас тооцоолох талбар нь өгөгдлийн сангийн хүснэгтүүдэд байхгүй бадгаараа онцлогтой. Эдгээрийг SELECT оператороор шууд үүсгэдэг.
  • 5.
    Select операторт байгааталбаруудын аль нь жинхэнэ, аль нь тооцоологдох талбар гэдгийг өгөгдлийн сан мэддэг. Хэрэглэгчийн хувьд эдгээр талбарууд нь яг л өгөгдлийн сангийн хүснэгтийн ердийн талбар мэт харагдана.
  • 6.
    Хэрэглэгчийн програмаар төрөлбүрийн хувиргалт тооцооллыг хийж болох хэдий ч энэ ажиллагааг ӨСУС-ээр сервер талд хийлгэх нь илүү үр дүнтэй байдаг. Учир нь ӨСУС нь яг тийм төрлийн ажлыг хурдан, өндөр үр дүнтэй хийхэд зориулагдсан байдаг.
  • 7.
    Талбаруудыг холбох Хоѐр өөрбаганын мэдээллээс бүтсэн гарчиг үүсгэх жишээгээр тооцоологдох талбарын ажиллагааг авч үзье. Vendors хүснэгтэд нийлүүлэгчийн нэр, хаяг байгаа. Нийлүүлэгчээр тайлан гаргахдаа гарчигийг нэр(хаяг) гэсэн хэлбэрээр гаргах хэрэгтэй боллоо гэе. Хүснэгтэд эдгээр мэдээллүүд vend_name, vend_country багануудад байгаа бөгөөд хаягыг хаалтанд оруулж гаргах хэрэгтэй. Эдгээр хаалт нь нийлүүлэгчийн хаягийн мэдээлэлд байхгүй байдаг
  • 8.
    Холболт гэдэг ньнэг утга гарган авахын тулд баганы утгуудыг хооронд нь нийлүүлэх үйлдлийг хэлнэ. Дээрх бодлогыг шийдэхийн тулд баганы утгуудыг холбох хэрэгтэй. SQL-д хоѐр талбарын утгыг холболт хийхдээ SELECT- ийн бичлэгт тусгай операторыг ашигладаг. ӨСУС-ээс хамаарч оператор нь (+) нэмэх тэмдэг эсвэл (||) хоѐр босоо зураас байдаг.
  • 9.
    Санамж: (+) тэмдгийгMicrosoft access, MiroSoft SQL Server, SyBase ӨСУС-д (||) хоѐр босоо зураас тэмдэглэгээг ашигладаг.
  • 10.
    Нийлүүлэгчийн тайлангийн толгойгнэр(хаяг) гэсэн хэлбэрээр гаргах командуудын жишээнүүд. SELECT vend_name +‟(„+ved_country+‟)‟ FROM Vendors ORDER BY vend_name; Эсвэл SELECT vend_name ||‟(„||ved_country||‟)‟ FROM Vendors ORDER BY vend_name;
  • 11.
    Дээрх жишээнүүд дээрдараах элементүүдийг холбосон байна.  Vend_name талбарын утга  Нээсэн тэмдэгт агуулсан мөр  Vend_country талбарын утга  Хаасан хаалт агуулсан мөр Select командын үр дүнд дээрх 4н элементийг холбосон(тооцооллын талбар) нэг талбар буцаасан байгаа нь харагдаж байна
  • 12.
    Санамж: ӨСУС MySqlнь холболт хийхдээ (+), (||) тэмдгүүдийг ашигладаггүй. Энэ холболтыг СONCAT гэдэг функцыг ашиглан хийдэг. Дээрх нь MySql-д SELECT CONCAT(vend_name, „(„,vend_country,‟)‟) FROM Vendors ORDER BY vend_name; Байдлаар бичигдэнэ. MySQL нь (||) тэмдгийг OR, (&&) тэмдгийг and гэж ойлгодог.
  • 13.
    Татан авчрах мэдээлэлзөв форматлагдсан байлгахын тулд эдгээр хоосон зайг авч хаях хэрэгтэй. Энэ ажиллагаа RTRIM() функцээр доорх байдлаар хийнэ. SELECT RTRIM(vend_name)+‟(„+RTRIM(vend_country)+‟)‟ FROM Vendors ORDER BY vend_name; Ихэнх ӨСУС-д RTRIM() утгын баруун талаас хоосон зайг арилгах, LTRIM() утгын зүүн талаас хоосон зайг арилгах, TRIM() утгын баруун ба зүүн талуудаас хоосон зайг арилгах функцуудыг дэмждэг.
  • 14.
    Завсрын нэр ашиглах(Alias name) Өмнөх жишээнд SELECT оператор нийлүүлэгчийн нэр, хаягыг холбох асуудлыг бүрэн шийдвэрлэсэн. Гэхдээ шинээр тооцоологдсон талбар ямарч нэргүй байгаа. SELECT операторын үр дүнгээс харахад (жишээг Access дээр хийсэн болохоор ӨСУС нь талбарт Expr1000 гэсэн нэр өөрөө өгсөн байна зарим ӨСУС нь ямарч нэргүй үр дүн буцаадаг) шинээр тооцоологдсон талбар нь тухайлсан нэргүй нь харагдаж байна.
  • 15.
    ӨСУС нь тооцоологдсонталбарт нэр өгөхгүй эсвэл ямар нэр өгч байгааг мэдэхгүйгээр клиент програм энэ талбарыг ашиглах боломжгүй болно гэсэн үг. Энэ асуудлыг шийдэхийн тулд SQL-д завсарын нэр (alias name) гэсэн ойлголтыг ашигладаг. Завсарын нэр (alias name) гэдэг нь талбар болон утганы альтернатив /сонголттой/ нэр юм.
  • 16.
    Завсрын нэрийг ASтүлхүүр үгээр олгоно. Дараах жишээг харна уу. SELECT RTRIM(vend_name)+‟(„+RTRIM(vend_country )+‟)‟AS vend_title FROM Vendors ORDER BY vend_name;
  • 17.
    Командын үр дүн. Дээрхоператор нь өмнөх жишээнээс тооцоогогдох талбарын AS vend_title гэж зааж өгснөөс өөрөөр ямарч ялгаа байхгүй. Ингэснээр SQL тооцооны үр дүнд үүсгэх vend_title нэртэй тооцоологдох талбарыг үүсгэнэ. Командын үр дүн яг адилхан боловч талбар нь vend_title нэртэй болсноор клиент талын програм энэ талбарт хүснэгтийн бусад баганад ханддагтай адилаар хандах боломжтой болно. Зарим тохиолдолд баганы жинхэнэ нэр нь уншигдахад хүнд, зөвшөөрөгдөөгүй тэмдэгт агуулж байгаа тохиолдолд завсрын нэрийг ашигладаг.
  • 18.
    Математик тооцоолол хийх. Тооцоологдохталбарыг ашиглах бас нэгэн арга нь сонгон авсан өгөгдлүүдэд математик тооцоолол хийх юм. Жишээ авч үзье: Orders хүснэгтэд захиалгууд байх ба OrderItems хүснэгт нь захиалга бүрээр ямар бараанууд захиалсан мэдээллийг хадгална.
  • 19.
    Дараах SQL операторнь 2008 дугаартай захиалгаар захиалсан барааны жагсаалтуудыг авчирна. SELECT prod_id, quantity, item_price FROM OrderItems WHERE order_num=2008; 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₮
  • 20.
    Командын үр дүн:Захиалгад байгаа бараа бүрийн үнэ item_price баганад байгаа ба барааны нийт үнийг (захиалсан барааны тоог үнэд үржүүлсэн үржвэр) олохын тулд дараах үйлдлийг хийх хэрэгтэй. SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM OrderItems WHERE order_num=20008;
  • 21.
    Командын үр дүн: Expanded_price Prod_id quantity Item_prive 24,95₮ RGAN01 5 4,99₮ R03 5 11,99₮ 59,95₮ 34,90₮ BNBG01 10 3,49₮ 34,90₮ BNBG02 10 3,49₮ 34,90₮ BNBG03 10 3,49₮
  • 22.
    Дээрх шаардлагаар гарчирсэн expanded_price талбар нь тооцоологдох талбар бөгөөд клиент талын програм энэ талбарыг хүснэгтийн бусад талбарын нэгэн адилаар ашиглах боломжтой. SQL нь математикийн үндсэн үйлдлүүдийг дэмждэг. Үүнээс гадна үйлдлийн дарааллыг бөөрөнхий хаалт “()” ашиглан өөрчилж болно.
  • 23.