pp lect8 1
TRANSCRIPT
1
9 долоо хоногӨС-ийн боловсруулалт
Агуулга Select команд
Хүснэгтүүдийг холбох энгийн холболт гадаад холболт
Эрэмбэлэлт,бүлэглэлт
2
ӨС-ийн боловсруулалт Select команд Үндсэн үйлдлүүд
Хүснэгтүүд холбох Энгийн холболт SELECT < хүснэгт1>.<талбар1>, <хүснэгт1>.<талбар2>,
<хүснэгт2>.<талбар1>, <хүснэгт2>. <талбар2>,... FROM <хүснэгт1> INNER JOIN < хүснэгт2> ON <хүснэгт1>.<түлхүүр
>=<хүснэгт2>.<түлхүүр > Талбарыг ямар хүснэгтээс уншихыг заахын тулд хүснэгтийн
нэр, талбарын нэр хоёрыг цэгээр тусгаарлаж өгнө
3
ӨС-ийн боловсруулалт Select команд
Энгийн холболт
Жишээ нь: Оюутан ба оюутны мэргэжил хүснэгтийг мэргэжлийн кодоор холбож оюутны мэргэжлийг дэлгэрүүлж гаргах
Select St.*, Pr. Prof_Name
From Students St Inner Join Profession Pr
ON St. Prof_ID = Pr. Pr_ID Тайлбар: St.*- оюутан хүснэгтээс бүх талбарыг уншина
4
ӨС-ийн боловсруулалт Select команд
Энгийн холболт
Зэрэгцээ энгийн холболт
Жишээ Оюутны 7 хоногийн цагийн ачааллыг бодох зорилгоор
Хичээл(Course), Хичээлийн хэлбэр(Course_Type), Оюутны хичээл сонголт(Student _Course) гэсэн 3 хүснэгтийг холбоё
SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour
FROM Course Crs INNER JOIN Course_type Crs_T
ON Crs. Crs_ID=Crs_T. Crs_ID,
INNER JOIN Student _Course St_Crs
ON Crs. Crs_ID=St_Crs.Crs_ID
INTO TEMP Student_Hour
5
ӨС-ийн боловсруулалт Select команд
Энгийн холболт
Үр дүнгийн Student_Hour хүснэгт
St_ID Crs_ID Crs_Name Credit Type Hour
HW03D025 SW207 ӨС 3 Лекц 2
HW03D025 SW207 ӨС 3 Семинар 2
HW03D025 SW230 Веб дизайн 2 Лекц 2
HW03D025 SW230 Веб дизайн 2 Лаборатор 1
SW03D026 SW207 ӨС 3 Лекц 2
SW03D026 SW207 ӨС 3 Семинар 2
SW03D026 SW230 Веб дизайн 2 Лекц 2
SW03D025 SW230 Веб дизайн 2 Лаборатор 1
6
ӨС-ийн боловсруулалт Select команд
Энгийн холболт
Холболтын үр дүнгээс бичлэг сонгох Жишээ Програм хангамжийн оюутнуудын 7 хоногийн цагийн
ачааллыг бодоё гэвэл бичлэг сонгох үйлдэл нэмэгдэнэ SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour FROM Course Crs INNER JOIN Course_type Crs_T ON Crs. Crs_ID=Crs_T. Crs_ID, INNER JOIN Student _Course St_Crs ON Crs. Crs_ID=St_Crs.Crs_ID WHERE Left(St_ID, 2)=“SW” INTO TEMP SW_student_hour
7
ӨС-ийн боловсруулалт Select команд
Энгийн холболт
Эсвэл
SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour
FROM Student_Hour
WHERE Left(St_ID, 2)=“SW”
INTO TEMP SW_student_hour
Хуудас 4 дээрх Select –ийн Student_Hour гэсэн хайлтыг ашиглаж болно
8
ӨС-ийн боловсруулалт Select команд
Энгийн холболт
Үр дүнгийн SW_student_hour хүснэгт
St_ID Crs_ID Crs_Name Credit Type Hour
SW03D026 SW207 ӨС 3 Лекц 2
SW03D026 SW207 ӨС 3 Семинар 2
SW03D026 SW230 Веб дизайн 2 Лекц 2
SW03D025 SW230 Веб дизайн 2 Лаборатор 1
9
ӨС-ийн боловсруулалт Select команд Үндсэн үйлдлүүд
Гадаад холболт SELECT команданд зүүн гадаад холболтыг Left Outer Join
гэж заадаг
Select < харьцаа1>.<талбар1>,<харьцаа1>.<талбар2>,...
<харьцаа2>.<талбар1>, <харьцаа2>. <талбар2>, ...
From <эх харьцаа> Left Outer Join <охин харьцаа>
On <харьцаа1>.<түлхүүр> =<харьцаа2>.<түлхүүр>
10
ӨС-ийн боловсруулалт Select команд
Гадаад холболт
Баруун гадаад холболтыг Right Outer Join гэж заадаг
Select < харьцаа1>.<талбар1>, харьцаа1>.<талбар2>,... <харьцаа2>.<талбар1>,<харьцаа2>.<талбар2>,
… From <охин харьцаа> Right Outer Join <эх харьцаа> On <харьцаа1>.<түлхүүр>
=<харьцаа2>.<түлхүүр>
11
ӨС-ийн боловсруулалт Select команд
Гадаад холболт
Жишээ нь: оюутан ба мэргэжил хүснэгтүүдийг гадаадаар холбох Select St. *, Pr. Prof_Name From Student St
Left Outer Join Profession Pr On St. Prof_ID = Pr. Prof_ID
Оюутны код
Оюутны нэр
Мэрг. код
Мэрг. нэр
SW99B027 Д.Болор D484105 Комп.ПХ
SW99B028 Х.Тамир D484105 Комп.ПХ
SW99B029 M.Сувд D484110 Комп.ТХ
SW99B039 С. Баяр D484112
12
Зэрэгцээ гадаад холболт
Жишээ1: Оюутны цагийн ачааллыг бодохын тулд хичээл сонголт (Student _Course) гэсэн гол мэдээллийг агуулж буй хүснэгтийг эх болгон, түүн рүү (Course), хичээлийн хэлбэрийг (Course_Type) хоёрыг зэрэг холбоё
SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour
FROM Student _Course St_Crs
LEFT OUTER JOIN Course Crs
ON St_Crs.Crs_ID=Crs.Crs_ID,
LEFT OUTER JOIN Course_type Crs_T
ON St_Crs. Crs_ID=Crs_T. Crs_ID
INTO TEMP Student_Hour
ӨС-ийн боловсруулалт Select команд
Гадаад холболт
13
ӨС-ийн боловсруулалт Select команд
Гадаад холболтДараалсан гадаад холболт
Жишээ1-ийг оюутны хичээл сонголт (Student _Course) гэсэн гол мэдээллийг агуулж буй хүснэгтийг эх болгон, түүн рүү 1-рт хичээлийг (Course), 2-рт хичээлийн хэлбэрийг (Course_Type) холбож бас болох боловч илүү Select хийгдэнэ.
SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour FROM
(SELECT St_Crs. St_ID, Crs. *
FROM Student _Course St_Crs
LEFT OUTER JOIN Course Crs
ON St_Crs.Crs_ID=Crs.Crs_ID)
LEFT OUTER JOIN Course_type Crs_T
ON St_Crs. Crs_ID=Crs_T. Crs_ID INTO TEMP Student_Hour
14
Буруу холболтын жишээ
Харин жишээ1-ийг хичээл(Course), хичээлийн хэлбэрийг (Course_Type) гэсэн мэдээллийг түрүүлж холбоход тухайн улиралд ордоггүй, нэг ч оюутан сонгоогүй хичээлүүд үр ашиггүй холбогдоно
SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour FROM
(SELECT Crs. *, Crs_T.Type, Crs_T. Hour
FROM Course Crs
INNER JOIN Course_type Crs_T
ON Crs.Crs_ID=Crs_T. Crs_ID)
LEFT OUTER JOIN Student _Course St_Crs
ON Crs.Crs_ID=St_Crs. Crs_ID
INTO TEMP Student_Hour
ӨС-ийн боловсруулалт Select команд
Гадаад холболт
15
ӨС-ийн боловсруулалт Select команд
Хүснэгтүүдийг холбох
Холболт хийхэд анхаарах зүйлс Үр ашиггүй холболт хийхгүй байх Тайлан боловсруулалтанд орох гол мэдээллийн
хүснэгтүүдээ эхлэж холбох ямар нэгэн vйл ажиллагааны бvртгэл дэх єгєгдлийг нэгтгэсэн
тайлан
Гол мэдээллийг нэгтгэж боловсруулсны дараа бүртгэл дэх кодуудыг дэлгэрүүлж задлах зорилгоор лавлахуудыг холбож байх
Лавлахуудыг хооронд нь түрүүлж холбохгүй байх
16
ӨС-ийн боловсруулалт Select команд
Эрэмбэлэлт
Хайлтын үр дүнг эрэмбэлэх Хайлтын үр дүнг тодорхой эрэмбэтэй гаргая гэвэл Select
командыг дараахи хэлбэрээр хэрэглэнэ
Select <талбарын жагсаалт> From <хүснэгтийн нэр> Order By <эрэмбэлэх түлхүүр>
Тайлбар: ORDER BY <эрэмбэлэх түлхүүр> - эрэмбэлэх түлхүүр талбар Олон талбараар эрэмбэлэх үед талбаруудыг таслалаар
тусгаарлаж заана
17
ӨС-ийн боловсруулалт Select команд
Бүлэглэлт
Бүлэглэх Select командын ерөнхий хэлбэр
SELECT <талбаруудын жагсаалт>
FROM <хүснэгтийн нэр>
GROUP BY <бүлэглэх түлхүүр>
[HAVING <бичлэг сонгох нөхцөл>] Тайлбар:
GROUP BY <бүлэглэх түлхүүр>- бүлэглэх түлхүүр Олон талбараар бүлэглэх үед талбаруудыг таслалаар тусгаарлана HAVING <нөхцөл>-бүлэглэлтийн үр дүнгээс бичлэг сонгох HAVING –ийг GROUP BY заалтууртай давхар хэрэглэнэ
18
ӨС-ийн боловсруулалт Select команд
Бүлэглэлт Бүлэглэлтийн жишээ Багшийн хичээлийн нэгтгэлийг гаргах
Select T_ID As Багшийн код,
COUNT (хичээлийн код) As Нийт хичээл,
Sum (кредит) As Нийт кредит
From COURSE Group by T_ID Order by T_ID
Into temp Teacher_Courses
19
ӨС-ийн боловсруулалт Select команд
Бүлэглэлт
2 хичээлтэй, 8-аас илүү кредит заасан багш нарын нэгтгэлийг гаргах
Select T_ID As Багшийн код, Count (хичээлийн код) As Нийт хичээл, Sum (кредит) As Нийт кредит From COURSE Group by T_ID Having Нийт хичээл=2 and Нийт кредит>=8 Into temp Teacher_Courses
20
ӨС-ийн боловсруулалт Select команд
Бүлэглэлт
Үр дүнгийн Student_Hour хүснэгтээс оюутны хичээлийн ачааллыг улирлаар нэгтгэж гаргая
Үүсэх бүлгүүд
HW
SW
St_ID Crs_ID Credit Type Hour
HW03D025 SW207 3 Лекц 2
HW03D025 SW207 3 Семинар 2
HW03D025 SW230 2 Лекц 2
HW03D025 SW230 2 Лаборатор 1
SW03D026 SW207 3 Лекц 2
SW03D026 SW207 3 Семинар 2
21
ӨС-ийн боловсруулалт Select команд
Бүлэглэлт
Тэнхмийн код
Суусан хичээлийн
дундаж
Дундаж цаг
HW 20.5 41
SW 20.1 45
BA 14.5 29
Нэгтгэлийн үр дүн
22
ӨС-ийн боловсруулалт Select команд
БүлэглэлтЗавсрын Query1
St_ID Crs_IDCred
itType Hour
HW03D025
SW207 3 Лекц 2
HW03D025
SW207 3 Семинар 2
HW03D025
SW230 2 Лекц 2
HW03D025
SW230 2 Лаборатор 1
… … … … …
SW03D026
SW207 3 Лекц 2
SW03D026
SW207 3 Семинар 2
Select St_ID As Оюутны_код,
Count(Crs_Type) As Суусан цаг.тоо,
Sum(Crs_Type_Hour*15) As Суусан нийт цаг
From Student_hour Group by St_ID, Crs_ID Into Query1
Оюутны кодСуусан цаг.тоо
Суусан
нийт цаг
HW03D025
4 105
... .. ...
SW03D026
2 60
1 дэх шатанд оюутан тус бvрээр бvлэглэж нэгтгэлийг хийнэ
23
ӨС-ийн боловсруулалт Select команд
БүлэглэлтЗавсрын Query1
Оюутны код Суусан цаг.тоо
Суусан
нийт цаг
HW03D025
4 105
... .. ...
SW03D026
2 60
Select Left(Оюутны код,2) As Тэнхмийн код,
Avg (Суусан цаг.тоо ) As Суусан хичээлийн дундаж, Avr(Суусан нийт цаг) As Дундаж цаг
From Query1 Group by Left(Оюутны код,2)
Into Department_Totals
Тэнхмийн код
Суусан хичээлийн дундаж
Дундаж цаг
HW 20.5 41
SW 20.1 45
BA 14.5 29
24
Унших материал “ӨС” ном, бүлэг 6
хуудас 62-71 хуудас 76-81
Харьцаа алгебрийн илэрхийлэл Select командыг харьцуулж унших