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

Se304 lec7

Embed Size (px)

Citation preview

Page 1: Se304 lec7

Өгөгдлийн сангийн тодорхойлолт

Indexes, Primary keys, Foreign keys

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

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

ЛЕКЦ №7

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

Page 2: Se304 lec7

MS SQL Server-ийн Хувилбарууд

MS SQL Server нь олон янзын хувилбаруудтай

ба тус бүр өөрсдийн давамгай чадваруудтай ба

мөн өөр өөр түвшний хэрэглэгчдэд

зориулагдсан. Эдгээрийг доор дурдвал :

Page 3: Se304 lec7

SQL Server Compact Edition (SQL CE)

Энэ нь SQL Server-ийн бага оврын хувилбар юм (2MB DLL

footprint-тэй). Бусдаасаа бага хэмжээтэй байх ба мөн чадваруудыг

нь багасган тохируулсан. Энэ хувилбар нь хамгийн ихдээ 4 ГБ

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

Мөн Windows орчинд ажилладаггүй.

Page 4: Se304 lec7

SQL Server Express Edition

Express Edition бол SQL Server-н багасгасан,

үнэгүй хувилбар боловч өгөгдлийн сангийн үндсэн

цөм хөдөлгүүрийг агуулсан байдаг. Өгөгдлийн

сангийн , хэрэглэгчийн тоонд хязгаарлалт

байдаггүй ба нэг процессор, 1GB ram, 4 GB

өгөгдлийн сангийн файлтай байхаар

хязгаарлагддаг. Бүтэн өгөгдлийн сан нь

ганцхан .DBF файл байдаг. Энэ нь тэгэхээр

XCOPY технологийг ашиглахад хялбар болгож

байдаг

Page 5: Se304 lec7
Page 6: Se304 lec7

SQL Server Workgroup Edition

Энэ хувилбар нь өгөгдлийн сангийн цөм хөдөлгүүр,

функцуудыг агуулдаг боловч нэмэлт үйлчилгээнүүдийг

агуулдаггүй.

Page 7: Se304 lec7

SQL Server Standard Edition

Энэ хувилбар нь өгөгдлийн сангийн цөм

хөдөлгүүр, stand-alone үйлчилгээний дагуух

зүйлсийг агуулдаг. Enterprise хувилбараас

ялгаатай нь хязгаарлагдмал нэг дор холбогдох

боломжтой хэрэглэгчийн тоо юм. Бас зарим өндөр

түвшний hot-add memory (сервер ажиллаж байх

үед ч санах ой нэмэх боломжтой ! )гэх мэт

функцууд , параллель индекслэх функц байдаггүй.

Page 8: Se304 lec7
Page 9: Se304 lec7

SQL Server Enterprise Edition

Энэ хувилбар нь SQL Server-н иж бүрэн хувилбар бөгөөд өгөгдлийн

сангийн цөм хөдөлгүүр, нэмэлт үйлчилгээнүүд, SQL Server cluster –г

үүсгэх, зохион байгуулах өргөн хэмжээний боломжууд хавсаргагдсан

байдаг.

Page 10: Se304 lec7

SQL Server Developer Edition

Энэ хувилбар нь Enterprise хувилбарын зарим

чанаруудыг агуулсан боловч зөвхөн хөгжүүлэх,

тестлэх боломжтой, өөрөөр хэлбэл бүтээгдэхүүн

(өгөгдлийн бааз) серверт ажиллуулах боломжгүй

лицензтэй байдаг. Энэ хувилбар нь Microsoft-н

DreamSpark хөтөлбөрийн дагуу оюутнууд үнэгүй

татаж авах боломжтой байдаг.

Page 11: Se304 lec7

Relationship холболт

Relational database-ийн хүснэгтүүдэд нэг давхацсан /адилхан/ талбар байх ёстой. Энэ давхцагч талбар нь нэг хүснэгтийн нөгөө хүснэгттэй холбох холбоос байх болно. Тэгэхээр relationship гэдэг нь нэг хүснэгтийн бичлэгийг нөгөө хүснэгтийн бичлэгтэй холбох холбоос юм. Үүний ачаар тус тусдаа хүснэгтүүд хоорондоо харилцан уялдаа холбоотой болж цогц өгөгдлийн санг үүсгэх юм. Хүснэгтүүдийг хооронд нь холбох 3 янзын холбоос байдаг. Үүнд:1. Нэг нь нэгтэй /one to one/2. Нэг нь олонтой /one to many/3. Олон нь олонтой /many to many/

Page 12: Se304 lec7

Primary key / Foreign key-түлхүүр талбар

Relatonal database-ийн хүснэгтийн бичлэгүүд давхардсан

байж болохгүй. Үүний тулд нэг бичлэгийг нөгөөгөөс ялгаж өгч

байдаг дор хаяж нэг талбар байх ёстой. Ийм талбарыг

түлхүүр талбар буюу primary key гэнэ. Жишээ нь: 5 талбартай

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

үлдсэн ганц талбарын утгууд нь өөр хоорондоо ялгаатай байх

ёстой.

Түлхүүр талбарыг мөн хүснэгтүүд хооронд relationship

үүсгэхэд ашиглана. Энэ тохиолдолд эхний хүснэгтэд primary

key болж орсон бол нөгөө хүснэгтэд түүнийг foreign key гэнэ.

Page 13: Se304 lec7

Primary key тодорхойлох

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

талбарыг тодорхойлж өгөхийн тулд түлхүүр

талбар болгох талбараа сонгон хулганы баруун

товчийг даран Set primary key командыг өгөх

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

талбарын утгууд давхардсан байж болохгүйг

анхаарна

Page 14: Se304 lec7

Хүснэгтүүдээ Relationship-ээр холбох

Үүсгэсэн хүснэгтүүдээ relationship-ээр холбохын тулд

үүсгэсэн Databse дотор хамгийн эхний хавтас буюу

Database Diagrams хэсгийг идэвхжүүлээд хулганы баруун

товчийг дарж New Database Diagram-ийг сонгоход Add

Table цонх гарч ирнэ. Энэ цонхны Tables хэсэгт холбох

хүснэгтүүдээ Add хийнэ. Гарч ирсэн хүснэгтүүдийн

primary key тодорхойлсон хэсэг дээр дарж чирээд нөгөө

хүснэгт рүү аваачин click хийнэ. Холболт хийсэн Diagram-

даа нэрээ өгч хадгалах шаардлагатай. Ингэснээр

хүснэгтүүд хоорондоо уялдаа холбоотой болж цогц

өгөгдлийн сан бүрдэж байгаа юм.

Page 15: Se304 lec7

SELECT, WHERE, AND, OR, ORDER BY

SQL SELECT Statement - SQL SELECT үйлдэл

SELECT үйлдэл нь Өгөгдлийн сангийн өгөгдлүүдийг сонгож харахад хэрэглэгдэнэ.Үр дүн нь үр дүнгийн хүснэгтэнд хадгалагдах бөгөөд түүнийг result-set (Үр дүнгийн олонлог) гэж нэрлэдэг.

Формат1. SELECT баганы_нэр(-үүд) FROM хүснэгтийн_нэр2. SELECT * FROM хүснэгтийн_нэр

Жишээ.SELECT LastName, FirstName FROM Student

SELECT * FROM Student* тавьсанаар хүснэгтийн бүх бичлэгийн харуулна

Page 16: Se304 lec7

SELECT DISTINCT үйлдэл

Хүснэгтэнд зарим баганууд давхардсан (ижил) утга агуулсан байдаг. Хэрэв тийм хүснэгтээс ялгаатай утгуудыг сонгож харах шаардлагатай бол DISTINCT үйлдлийг ашигладаг. (Distinct - Ялгаатай)

ФорматSELECT DISTINCT баганы_нэр(-үүд)FROM хүснэгтийн_нэр

Page 17: Se304 lec7

WHERE түлхүүр үг

WHERE түлхүүр үг нь бичлэг(өгөгдөл)-үүдийг тодорхой нөхцөлийн дагуу шүүж харуулна.

ФорматSELECT баганы_нэр(-үүд)FROM хүснэгтийн_нэрWHERE нөхцөл

Жишээлбэл, "Student" Хүснэгтээс "СБ-3-7" гэсэн хаягтай сурагчдыг сонгож харъя.SELECT * FROM Student WHERE Address = 'СБ-3-7'

Page 18: Se304 lec7

Текстэн болон огноон төрлийн утгын 2 талд нь дан кавычка('') тавигдана.

Жишээ. "Student" хүснэгт нь төрсөн огноо гэсэн огноон(Datetime) төрөлтэй баганатай байг. 1992.05.05-нд төрсөн оуютнуудыг харахдаа:SELECT * FROM Student WHERE BirthDate = '1992.05.05'

Page 19: Se304 lec7

WHERE үйлдэлтэй хамт хэрэглэгддэг операторууд

= Тэнцүү

<> Ялгаатай

> Эрс их

< Эрс бага

>= Их буюу тэнцүү

<= Бага буюу тэнцүү

BETWEEN Хооронд

LIKEТухайн багана тухайн дэд мөр(текст)-ийг агуулсан эсэх

INТухайн элемент(утга) бүлэг элемэнт(олонлог) дотор агуулагдсан эсэх

Page 20: Se304 lec7

AND ба OR операторууд

AND нь логик үржүүлэх оператор бөгөөд AND-

ээр холбогдсон 2 нөхцөл хоёулаа үнэн үед

нөхцөл үнэн байна. Харин OR оператор нь

логик нэмэх үйлдэл бөгөөд аль нэг нөхцөл

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

байна

Page 21: Se304 lec7

Ж.1. SELECT * FROM Book WHERE Year = 2000 AND Author = 'Garmaa'2000 онд бичигдсэн зохиогчийн нэр нь Garmaa байх номуудыг харуулна.

2. SELECT FirstName, LastName FROM Student WHERE Address LIKE '%БЗ%' OR Address LIKE '%БГ%'Хаяг(Address)-ийн утга нь БЗ болон БГ гэсэн хэсэг агуулсан оюутнуудын нэр, овогийг харуулна.

Page 22: Se304 lec7

ORDER BY түлхүүр үг

ORDER BY түлхүүр үг нь result-set(тодорхой бүлэг

өгөгдлүүд)-ийг тодорхой баганаар эрэмбэлж

харуулна. ORDERY BY нь ердийн үед өсөхөөр

эрэмбэлж харуулна. Буурахаар эрэмбэлэхээр бол

DESC түлхүүр үгийг нэмж бичинэ. Харин өсөхөөр

эрэмбэлэхдээ ASC түлхүүр үгийг нэмж бичсэн ч

болно.

Page 23: Se304 lec7

Формат

SELECT баганы_нэр(-үүд) FROM хүснэгтийн_нэр ORDER BY

баганы_нэр ASC|DESC

Жишээ.

1. SELECT * FROM Student ORDER BY FirstName

2. SELECT FROM Name, Author, Year FROM Book ORDER BY Year

DESC

Эхний тохиолдолд "Student" хүснэгтийн бүх өгөгдлийг оюутны нэр

буюу FirstName баганаар өсөхөөр эрэмбэлж харуулна, хоёрдох

тохиолдолд "Book" хүснэгтйин Name(Номын нэр), Author(Зохиогч),

Year(он) багануудыг Year баганы утга буурах байдлаар эрэмбэлэн

харуулна. 

Page 24: Se304 lec7

SQL Server дээрх өгөгдлийн санг BackUp хийх.

Өгөгдлийн сангийн баазыг өөр компьютерт зөөж ашиглах тохиолдол гардаг.

Энэ тохиолдолд тухайн өгөгдлийн санг өөр дээр нь Backup(нөөцлөх) хийгээд

шилжүүлж зөөх компьютертаа баазаа Restore хийдэг. Энэ үйлдлүүдийг

жишээгээр үзүүлье.

Эхлээд backup хийх. Дараах book_db нэртэй баазыг backup хэрхэн хийдэг

тухай үзье.

Нөөцлөх гэж байгаа баазаа сонгоод хулганы mouse2 –р гарч ирэх цэснээс Тasks -> Back Up… командыг сонгоход дараах цонх гарч ирнэ.

Page 25: Se304 lec7

Destination хэсгийн Remove командыг сонгно.

Энэ нь шинээр нөөц үүсгэх зай гаргаж өгч байна. Үүний дараа Add

командыг дарж үргэлжлүүлнэ.

Page 26: Se304 lec7

Бааз хадгалах фолдерыг зааж өгсөний дараа баазын

нэрийг бичиж өгөх хэрэгтэй. Баазын нэрийн File name

хэсэгт бичиж өгөх бөгөөд дээрх тохиолдолд book_db гэсэн

баазын нэрийг өөрчлөхгүйгээр өгсөн байна. Энэ нэрийн

өөрөөр өгч болно. Гэвч тухайн нэрээр нь өгөх нь бидэнд

ашигтай. Учир нь програм дотор баазын нэртэй холбоотой

код бичигдсэн байгаа. Файлын нэрийг өгөхдөө book_db.bak

өргөтгөл зааж өгсөнийг анзаараарай. Энэ нь backup

файлын өргөтгөл юм.

Page 27: Se304 lec7

OK товч дарахад. Back Up Database – book_db нэртэй цонх гард чирэх

бөгөөд энэ цонхны Ок командыг сонгосоноор бааз амжилттай нөөцлөгдсөн

гэдгийг илэрхийлж The backup of database ‘book_db’ completed successfully

гэсэн мессеж өгнө.

Page 28: Se304 lec7

Ок товч дарснаар ажиллагаа дуусч нөөц файл маань

c:/database/book_db.bak нэртэйгээр үүснэ.

Page 29: Se304 lec7

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

БАЯРЛАЛАА