Matematika Fakulteti "AxbOrOt xAvfsizligi"


Download 472.62 Kb.
Pdf ko'rish
Sana31.10.2020
Hajmi472.62 Kb.
#139384
Bog'liq
Kurs ishi mavzular(1-u)


 

 



 

Mirzo UlUg’bek nomidagi O’zbekistOn Milliy 

Universiteti 

Matematika Fakulteti 

“AxbOrOt xAvfsizligi” yO’nAlishi 

3-bosqichi tAlAbAsi O’ktAmOv DAvlAtjOnning 

Berilganlar bazasi xavfsizligi fanidan 

Kurs ishi 

 

 

Mavzu:



 “EXCEPT,INTERSECT,VIEW operatorlari”

 

 



 

 

 



 

 

 



 

 

 



 

 

 



 

 

Toshkent – 2020y



 

 

 



 

 

 



 

 

 



 

Mundarija 

 

Kirish………………………………………………………………………..

I-bob.  SQL server operatorlari…………………………….......................5 

       1.1 Sql  haqida  tushincha  …………………...…………………………5 

  1.2 Sql  VIEW operatori………………………………………………...6 

II-bob.SQL  EXCEPT va INTERSECT operatorlari………….................8 

      2.1  Sql  exsept operatori……..………………..…………………...........11 

      2.2  Sql intersect operatori………………….………………..………….16 

Xulosa………………………………………………………….……..…......21 

Foydalanilgan  adabiyotlar…………………………...…………………...22 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 



  

 

 

 

 

Kirish 

 Axborotlashgan    jamiyat    tezlik    bilan    shakllanib    bormoqda.    Axborot  

dunyosida    davlat    chegaralari    degan    tushuncha    yo‘qolib    bormoqda.    Jahon  

kompyuter  tarmog‘i  davlat  boshqaruvini  tubdan  o‘zgartirmoqda.   

 Hududiy  joylashishidan  qat’i  nazar,  kundalik  hayotimizga  turli  xildagi  

axborotlar    Internet    xalqaro    kompyuter    tarmog‘i    orqali    kirib    keldi.    Shuning  

uchun    ham    mavjud    axborotlarga    noqonuniy    kirish,    ulardan    foydalanish    va  

o‘zgartirish,  yo‘qotish  kabi  muammolardan  himoya  qilish  dolzarb  masala  bo‘lib  

qoldi.   

 Axborotlashtirish  sohasidagi  davlat  siyosati  axborot  resurslari,  axborot  

texnologiyalari  va  axborot  tizimlarini  rivojlantirish  hamda  takomillashtirishning  

zamonaviy    jahon   tamoyillarini    hisobga   olgan    holda    milliy    axborot    tizimini  

yaratishga  qaratilgan. 

Zamonaviy  dunyoda  hayotimizni  kompyutersiz  tasavvur  qila  olmaymiz.  

Kundalik  turmushimizning  barcha  yo’nalishlari  (ta’lim  tizimi,  ishlab  chiqarish,  

tibbiyot,  iqtisod  va  hokazo)da  axborotlarni  qabul  qilish,  qayta  ishlash  va  uzatish  

ishlarini  tez  va  so’z  amalga  oshirishda,  kompyuter  texnologiyalaridan  keng  

foydalanmoqdamiz. 

Hоzirdа  “ахbоrоt  tushunchаsi”  sоtib  оlish,  sоtish,  birоr  bоshqа  tоvаrgа  

аlmаshtirish  mumkin  bo’lgаn  mахsus  tоvаr  bеlgisi  sifаtidа  ishlаtilmоqdа.  Shu  

bilаn  birgа  ахbоrоtning  bахоsi  ko’p  хоllаrdа  uning  uzi  jоylаshgаn  kоmpyutеr  

tizimining  bахоsidа  bir  nеchа  yuz  vа  ming  bаrоbаrgа  оshib  kеtmоqdа.  Shuning   

uchun    tаmоmilа    tаbiiy    hоldа    ахbоrоtni    ungа    ruхsаt    etilmаgаn    хоldа  

kirishdаn,  qаsddаn  uzgаrtirishdаn,  uni  o’g’irlаshdаn,  yuqоtishdаn  vа  bоshqа  

jinоiy  хаrаktеrlаrdаn  хimоya  qilishgа  kuchli  zаrurаt  tug’ilаdi.   

Kоmpyutеr    tizimlаri    vа    tаrmоqlаridа    aхbоrоtni    хimоya    оstiga    оlish  

dеgаndа,    bеrilаyotgаn,    sаqlаnаyotgаn    vа    qаytа    ishlаnilаyotgаn    ахbоrоtni  

ishоnchliligini  tizimli  tаrzdа  tа’minlаsh  mаksаdidа  turli  vоsitа  vа  usullаrni  

qullаsh,  chоrаlаrini  ko’rish  vа  tаdbirlаrni  аmаlgа  оshirishni  tushunish  qаbul  

qilingаn.   


 

 



Dasturlarini  ishlab  chiqish  ko'pincha  mijozlar  tajribasiga  qaratiladi  va  

ko'pincha    foydalanuvchilar    uchun    zarur    funktsional    imkoniyatlar    va    sifatli  

interfeysni    taqdim    etish    bilan    boshlanadi.    Ko'pincha,    dasturlarning    server  

integratsiyasi  tizimiga  e'tibor  qaratiladi.  Shu  bilan  birga,  xavfsizlik  masalalari  

ko'pincha    e'tiborsiz    qoldiriladi    yoki    oxirgi    bosqichga    -    dasturni    tekshirish  

bosqichiga    qoldiriladi.Turli    kompaniyalarning    ko'p    yillik    tajribasi    shuni  

ko'rsatadiki,  Veb  dasturlari va serverlarni  xavfsizligi   ishlab  chiqish  jarayonining  

dastlabki  bosqichlarida  bo’lishi  kerak. 



Kurs    ishidan    maqsad:Ushbu    kurs    ishida    biz  Sql    nima    ekanligini  

tushuntirib    beramiz,operator  misollarni    tasvirlab  ko’rsatamiz,  turli    xil    Sql 

serverdan  operatorlar  except,  intersect,view  orqali  foydalanishni  tushintirib 

beramiz.Hozirgi kunda barcha malumotlarimiz sql server bazasida saqlanmoqda.Biz 

shunday  operatorlardan  foydalanib  serverni  ishini  yengillatamiz,yaniy  ishini 

osonlashtiramiz.

 

 

 



 

 

 



 

 

 



 

 

 



 

 

 



 

 

 



 

 

 

 

 



I-bob.SQL server operatorlari 

 

1.1  Sql  haqida  tushincha? 

SQL  (talaffuz  qilingan  "ess-que-el")  Strukturalangan  so'rovlar  tilini  anglatadi.  

SQL  ma'lumotlar  bazasi  bilan  bog'lanish  uchun  ishlatiladi.  ANSI  (Amerika  

milliy  standartlar  instituti)  ma'lumotlariga  ko'ra,  bu  ma'lumotlar  bazasini  

boshqarish  tizimlari  uchun  standart  til.  SQL  bayonotlari  ma'lumotlar  bazasida  

ma'lumotlarni  yangilash  yoki  ma'lumotlar  bazasidan  ma'lumotlarni  olish  kabi  

vazifalarni  bajarish  uchun  ishlatiladi.  SQL-dan  foydalanadigan  ba'zi  bir  

relyatsion  ma'lumotlar  bazasini  boshqarish  tizimlari:  Oracle,  Sybase,  

Microsoft  SQL  Server,  Access,  Ingres  va  boshqalar.  Ko'pgina  ma'lumotlar  

bazalari  tizimlari  SQL-dan  foydalansa  ham,  ularning  aksariyati  o'zlarining  

shaxsiy  mulkiy  kengaytmalariga  ega,  ular  odatda  faqat  o'z  tizimlarida  

qo'llaniladi.Biroq,  "Select",  "Insert",  "Update",  "Delete",  "Create"  va  "Drop"  

kabi  standart  SQL  buyruqlari.  ma'lumotlar  bazasidan  bajarilishi  kerak  bo'lgan  

deyarli  barcha  ishlarni  bajarish  uchun  ishlatilishi  mumkin.  Ushbu  qo'llanmada  

sizga  ushbu  buyruqlarning  har  biri  asoslari  bo'yicha  ko'rsatmalar  beriladi,  

shuningdek  ularni  SQL  Interpreter  yordamida  mashq  qilish  imkoniyati  

beriladi.SQL  -  bu  ma'lumotlar  bazasida  ma'lumotlarni  saqlash,  boshqarish  va  

olish  uchun  standart  til.Bizning  SQL  qo'llanmamiz  sizga  SQL-dan  MySQL,  

SQL  Server,  MS  Access,  Oracle,  Sybase,  Informix,  Postgres  va  boshqa  

ma'lumotlar  bazalarida  foydalanishni  o'rgatadi.SQL  serversi  bu  sizning  

ma'lumotlar  bazangizni  yo'q  qilishga  olib  keladigan  kodni  kiritish  

usulidir.SQL  serversi  veb-xakerlik  qilishning  eng  keng  tarqalgan  usullaridan  

biridir.SQL  server  -  bu  veb-sahifaga  kirish  orqali  zararli  kodni  SQL  

bayonotlariga  joylashtirish.SQL  serversi  odatda  foydalanuvchidan  

foydalanuvchi  nomi  /  foydalanuvchi  identifikatori  kabi  kirishni  so'rashda  ro'y  

beradi  va  foydalanuvchi  ism  /  id  o'rniga  o'rniga,  siz  bilmagan  holda  sizning  

ma'lumotlar  bazangizda  ishlaydigan  SQL  bayonotini  beradi. 


 

 



1.2 Sql  VIEW operatori. 

SQL CREATE VIEW bayonoti 

SQL-da  ko'rinish  SQL  bayonotining  natijalar  to'plamiga  asoslangan  virtual 

jadvaldir.Ko'rinishda haqiqiy jadval kabi qatorlar va ustunlar mavjud. Ko'rinishdagi 

maydonlar  -  bu  ma'lumotlar  bazasidagi  bir  yoki  bir  nechta  haqiqiy  jadvallarning 

maydonlari. 

Siz  ko'rinishga  SQL,  WHERE  va  JOIN  funktsiyalarini  qo'shishingiz  va 

ma'lumotlarni bitta jadvaldan kelgan kabi taqdim etishingiz mumkin. 

Sintaksisni yarating 

CREATE VIEW view_name AS 

SELECT column1column2

... 


FROM table_name 

WHERE condition



Izoh: VIEW  har  doim  eng  so'nggi  ma'lumotlarni  ko'rsatadi! Foydalanuvchi 

ko'rinishi  so'ralganda  har  safar  SQL  so'rovidan  foydalanib  ma'lumotlar  bazasi 

mexanizmi ma'lumotlarni qayta yaratadi. 

SQL CREATE VIEWga misollar 

Quyidagi  SQL  Braziliyadagi  barcha  xaridorlarni  ko'rsatadigan  ko'rinishni 

yaratadi: 

Misol 

CREATE VIEW [Brazil Customers] AS 



SELECT CustomerName, 

ContactName 

FROM Customers 

WHERE Country = 'Brazil'; 

Yuqoridagi ko'rinishni quyidagicha so'rashimiz mumkin: 

Misol 


SELECT * FROM [Brazil Customers]; 

Quyidagi SQL "Mahsulotlar" jadvalidagi har bir mahsulotni o'rtacha narxdan 

yuqori narx bilan tanlaydigan ko'rinishni yaratadi: 


 

 



Misol 

CREATE VIEW [Products 

Above 

Average 


Price] AS 

SELECT ProductName, 

Price 

FROM Products 



WHERE Price > (SELECT AVG(Price) FROM Products); 

Yuqoridagi ko'rinishni quyidagicha so'rashimiz mumkin: 

Misol 

SELECT * FROM [Products Above Average Price]; 



 

SQL ko'rinishni yangilash 

Ko'rinishni CREATE yoki REPLACE VIEW buyrug'i bilan yangilash mumkin. 

SQL CREATE yoki ReplaCE VIEW sintaksisi 

CREATE OR REPLACE VIEW view_name AS 

SELECT column1column2

... 

FROM table_name 



WHERE condition

Quyidagi SQL "Siti" ustunini "Braziliya mijozlari" ko'rinishiga qo'shadi: 

Misol 

CREATE OR REPLACE VIEW [Brazil 



Customers] AS 

SELECT CustomerName, 

ContactName, 

City 


FROM Customers 

WHERE Country = 'Brazil'; 

SQL ko'rinishni o'chirish 

Ko'rish DROP VIEW buyrug'i bilan o'chiriladi. 

SQL DROP VIEW sintaksisi 

DROP VIEW view_name

Quyidagi SQL "Braziliya mijozlari" ko'rinishini pasaytiradi: 

MisolDROP VIEW [Brazil Customers]; 



 

 



II-bob.SQL  EXCERT va INTERSECT operatorlari. 

 

 

 

 

 

 

 

 



ning  UNION,  EXCEPT  va  INTERSECT  operatorlari  bitta  natija  to'plamini 

yaratish uchun bir nechta SELECT iboralarini birlashtirishga imkon beradi. UNION 

operatori barcha qatorlarni qaytaradi. INTERSECT operatori natijalar to'plamidagi 

barcha qatorlarni qaytaradi. EXCEPT operatori faqat birinchi natijalar to'plamidagi, 

ammo ikkinchisida bo'lmagan qatorlarni qaytaradi. Oddiymi? Rob Sheldon ko'pgina 

misollar bilan barchasini tushuntiradi 

Ko'pincha  siz  ikkita  yoki  undan  ko'p  jadvallarni  taqqoslash  yoki  so'rov 

natijalarini  aniqlash  uchun,  qaysi  ma'lumotlar  bir  xil  ekanligini  va  qaysi  biri 

emasligini  aniqlash  vazifasiga  duch  kelasiz. Bunday  taqqoslashni  amalga 

oshirishning  eng  keng  tarqalgan  usullaridan  biri  bu  taqqoslashni  istagan 



 

 



natijalarning  tegishli  ustunlarini  birlashtirish  uchun  UNION  yoki  UNION  ALL 

operatoridan  foydalanishdir. Agar  siz  ushbu  operatorlarning  ikkalasida  o'rnatilgan 

cheklovlarga  amal  qilsangiz,  siz  turli  xil  ma'lumotlar  bazalari  yoki  hatto  turli  xil 

serverlardan  kelgan  ma'lumot  to'plamlarini  birlashtirishingiz  mumkin. UNION 

operatorida  ikkita  natijadan  iborat  har  bir  aniq  qatorni  o'z  ichiga  olgan  natijani 

olasiz. Shu bilan birga, ikkala natijada mavjud bo'lgan umumiy ma'lumotlarni yoki 

bitta jadvalda mavjud bo'lgan boshqa jadvallarni emas, balki boshqa ma'lumotlarni 

qaytarish  uchun  UNION-dan  foydalanish  yanada  qiyinlashadi. Kerakli  natijalarni 

olish uchun, buni qanday qilish kerakligi mantiqiy doim ham aniq bo'lmasada, siz 

GROUP BY guruhida UNION HAMMA ishlatishingiz kerak. Siz xohlagan natijaga 

erishish uchun JOIN operatoridan foydalanish oson emas. . 

INTERSECT  va  EXCEPT  operatorlarini  kiriting. SQL  Server  2005-dan 

boshlab,  ushbu  operatorlardan  so'rovlarni  birlashtirish  va  kerakli  natijalarni  olish 

uchun foydalanishingiz mumkin. Masalan, quyidagi rasmda ko'rsatilgandek ikkala 

ma'lumotlar to'plamiga mos keladigan qiymatlarni qaytarish uchun siz INTERSECT 

operatoridan foydalanishingiz mumkin. 



 

Rasmda INTERSECT operatori ikkala natijalar to'plamiga xos bo'lgan 

ma'lumotlarni  qanday  qaytarishini  ko'rsatmoqda; umumiy  ma'lumotlar  ikki 


10 

 

 



doira  kesishgan  joy  bilan  ifodalanadi. Rasmda  shuningdek,  EXCEPT 

operatori 

qanday 

ishlashi 



ko'rsatilgan; faqat 

kesishgan 

maydon 

tashqarisidagi ma'lumotlar to'plamlaridan birida mavjud bo'lgan ma'lumotlar 



qaytariladi. Masalan,  EXCEPT  operatorining  chap  tomonida  A  to'plam 

ko'rsatilgan 

bo'lsa, 

faqat 


to'plamiga 

kirmagan 

qiymatlar 

qaytariladi. Yuqoridagi  rasmda,  bu  ikki  ma'lumotlar  to'plamlari  kesishgan 

qismdan  tashqari  chap  doiradagi  ma'lumotlar  bo'lishi  mumkin. Quyidagi 

o'qlar  har  xil  ma'lumotlarning  kombinatsiyasini  qaytarish  uchun  qaysi 

operatordan foydalanishni aniqlaydi: 

 

A to'plamidagi B bilan bir-biriga to'g'ri kelmaydigan ma'lumotlarni 



qaytarish uchun A EXCEPT B-dan foydalaning. 

 



Faqat ikkita to'plamda bir-biriga mos keladigan ma'lumotlarni 

qaytarish uchun A INTERSECT B-dan foydalaning. 

 

A to'plamiga mos kelmaydigan B to'plamidagi ma'lumotlarni qaytarish 



uchun B EXCEPT A dan foydalaning. 

 



Uchala sohadagi ma'lumotlarni takrorlashsiz qaytarish uchun A 

UNION B dan foydalaning. 

 

Ma'lumotlarning uchala sohada ham, nusxalarini ham qaytarish 



uchun A UNION ALL B-dan foydalaning. 

 



Ikkala to'plamning bir-biriga zid bo'lmagan sohalarida ma'lumotlarni 

qaytarish uchun (A INTIONECT B) yoki (A EXCEPT B) 

Birlashmasidan (B EXCEPT A) tashqari foydalaning



 



 

 

11 

 

 



2.1  Sql  exsect operatori. 

EXCEPT operatori bilan ishlash 

INTERSECT operatorini o'zlashtirganingizdan so'ng, siz ko'p jihatdan 

EXCEPT  operatorini  o'zlashtirdingiz. Oldin  aytib  o'tganimdek,  EXCEPT 

operatori 

faqat 

birlashtirilgan 



jadvalda 

mos 


bo'lmagan 

satrlarni 

qaytaradi. EXCEPT  operatoridan  foydalanganda  eslash  kerak  bo'lgan 

muhim  narsa  shundan  iboratki,  u  so'rovni  qaysi  tomonning  joylashgan 

tomoni o'rtasida farq qiladi. Faqat so'rovdan operatorning chap tomonidagi 

ma'lumotlar qaytariladi (operatordan oldin). Bu qanday ishlashini namoyish 

qilish uchun bir misolni ko'rib chiqaylik. 

Quyidagi  bayonotda  yana  ikkita  so'rovni  birlashtiraman,  ulardan  biri 

"Xodimlar"  jadvalidan  ma'lumotlarni  va  JobCandidate  jadvalidan  ma'lumotlarni 

oladigan: 

 

SELECT BusinessEntityID  FROM HumanResources.Employee 



EXCEPT 

SELECT BusinessEntityID 

FROM HumanResources.JobCandidate; 

Ushbu bayonnoma siz birinchi ikkita misolda ko'rgan INTERSECT qurilishi 

bilan deyarli bir xil, albatta, EXCEPT operatoridan foydalanish uchun tashqari. Shu 

bilan birga, operatorning chap tomonidagi so'rov ma'lumotlar "Ishchilar" jadvalidan 

olinayotganligi sababli, oxirgi natijalar to'plami JobCandidate jadvalini emas, balki 

faqat shu jadvaldagi ma'lumotlarni o'z ichiga oladi. 

Ma'lum  bo'lishicha,  Xodimlar  jadvali  290  qatorni  o'z  ichiga  oladi. Oldingi 

misollardan  eslaysiz,  212  va  274  qiymatlari  jadvaldagi  ikkita  satr  JobCandidate 

jadvalidagi  212  va  274  qiymatlari  bo'lgan  BusinessEntityID  qiymatlariga  ega 

bo'lgan  ikkita  satrga  mos  keladi.  yuqoridagi  so'rov  natijalari  to'plamidan  chiqarib 

tashlandi,  aynan  nima  sodir  bo'ladi. So'rov  1  dan  290  gacha  bo'lgan 


12 

 

 



BusinessEntityID  qiymatlariga  ega  288  qatorni  qaytaradi.  Ammo  212  va  274 

identifikatorlari ushbu natijalarga kiritilmagan. 

Keling,  so'rovlar  tartibini  o'zgartirganda  nima  bo'lishini  ko'rib  chiqamiz, 

chunki men quyidagi misolda qilganman. 

 

SELECT BusinessEntityID  FROM HumanResources.JobCandidate 



EXCEPT 

SELECT BusinessEntityID 

FROM HumanResources.Employee;

 

E'tibor bering, JobCandidate jadvalidan ma'lumotlarni olib qo'yadigan so'rov 



endi birinchi bo'lib, ya'ni EXCEPT operatorining chap tomoniga joylashadi. Ushbu 

bayonotning  natijalari,  siz  kutganingizdek,  oldingi  misoldan  ancha  farq 

qiladi. Qaytarilganlarning  barchasi  bitta  NULL  qiymatdir. Boshqacha  qilib 

aytganda,  natijalarga  ko'ra,  JobCandidate  jadvalida  ishchilar  jadvalida  bo'lmagan 

BusinessEntityID qiymati yo'q. Bu, albatta, aniq. 

Yuqorida INTERSECT operatoridan foydalanadigan CTE misolida bo'lgani 

kabi, siz ham EXCEPT operatorlari bilan CTE-larni ishlatishingiz mumkin. Ammo 

oxirgi  misol  ko'rsatib  turibdiki,  agar  sizning  CTE  ma'lumotlaringizni  qaytarmasa, 

sizning asosiy so'rovingiz ham hech qanday ma'lumotlarni qaytarib bermaydi (hech 

bo'lmaganda ichki qo'shilishdan foydalansangiz), ammo bu ikkala operatorda ham 

to'g'ri. Umuman  olganda,  siz  ulardan  qanday  foydalanishingiz  bo'yicha 

INTERSECT  va  EXCEPT  operatorlari  o'rtasida  unchalik  katta  farq  yo'q. Farq, 

albatta,  natijada. INTERSECT  har  ikkala  so'rov  uchun  ham  umumiy  bo'lgan 

satrlarni  qaytaradi  va  EXCEPT  faqat  chap  so'rovdagi  satrlarni  qaytaradi. Ikkala 

operator ham UNION va UNION HAMMA operatorlari ta'minlaydigan qo'shilish 

turlariga  foydali  qo'shimchalardir. SQL  Server  Books  Online-dagi  "EXCEPT  va 

INTERSECT  (Transact-SQL)"  mavzusiga  murojaat  qilib,  INTERSECT  va 

EXCEPT operatorlari to'g'risida ko'proq ma'lumot olishingiz mumkin. 



13 

 

 



Agar siz kechki ovqatga bo'lgan, ammo tushlik qilmagan narsalarni qaytarib 

berishni  xohlasangiz,  siz  yana  EXCEPT  operatoridan  foydalanishingiz  mumkin, 

ammo  quyidagi  misolda  ko'rsatilganidek,  so'rovlarning  tartibini  o'zgartirishingiz 

kerak. 


 

SELECT item FROM Dinner 

EXCEPT  

SELECT item FROM Lunch; 

E'tibor  bering,  men  avval  ma'lumotlarni  kechki  ovqat  ko'rinishidan 

olaman. Chapdagi  chap  ulanishdan  foydalanish  uchun  yana  jadvallarning  tartibini 

o'zgartirish kerak bo'ladi: 

 

SELECT dinner.item  



FROM dinner  

  LEFT OUTER JOIN Lunch 

  ON Dinner.item = Lunch.item  

WHERE Lunch.item IS NULL;

 

Kutilganidek SELECT ikkala bayonoti uchun ham natijalar bir xil: 



element 

olma 


Baqlajonlar 

Salat 


Biftek 

Vino 


Ko'rinib  turibdiki,  EXCEPT  operatori  bilan  bo'lgani  kabi,  men  ham  ikkita 

so'rovni  INTERSECT  operatori  bilan  bog'layman. Xuddi  shu  natijalarga  ichki 

qo'shilish yordamida erishishingiz mumkin: 

Endi  keling,  qanday  qilib  ovqatlanish  vaqtida  ovqatlangan  ro'yxatni 

qaytarishingizni ko'rib chiqaylik, lekin ikkala ovqat ham emas, boshqacha aytganda 

non,  zaytun  va  qahvadan  boshqa  ovqatlangan  ovqatlar. Quyidagi  bayonotda  men 

ikkita  SELECT  ko'rsatmalariga  qo'shilish  uchun  UNION  operatoridan 

foydalanaman: 



14 

 

 



 

SELECT item  

FROM  

  ( 


    SELECT item FROM Lunch 

    EXCEPT SELECT item FROM Dinner 

  ) Only_Lunch 

UNION  


SELECT item  

FROM  


  ( 

    SELECT item FROM Dinner 

    EXCEPT SELECT item FROM Lunch 

  ) Only_Dinner; --Items you only ate once in the day.

 

E'tibor bering, birinchi bayonda faqat tushlik paytida iste'mol qilgan ovqatni 



olish  mumkin,  ikkinchisida  esa  faqat  kechki  ovqat  uchun  eyilgan  ovqatni  olish 

mumkin. Men bunga oldingi misollardagi kabi - EXCEPT operatoridan foydalangan 

holda  erishaman. Keyin  men  ikkita  natijalar  to'plamiga  qo'shilish  uchun  UNION 

operatoridan foydalandim. To'liq tashqi qo'shilish yordamida siz bir xil natijalarga 

erishishingiz mumkin: 

 

SELECT COALESCE(Dinner.item, Lunch.item) AS item 



FROM Dinner   

  FULL OUTER JOIN Lunch  

  ON Dinner.item = Lunch.item  

WHERE Dinner.item IS NULL OR Lunch.item IS NULL;

 

Ikkala misolda ham bayonotlar quyidagi natijalarni beradi: 



element 

olma 


Baqlajonlar 

Pivo 


Kalamari 

Salat 


15 

 

 



Salami 

Biftek 


Vino 

Shu  vaqtdan  boshlab,  men  SQL  Server  2008  va  AdventureWorks2008 

ma'lumotlar  bazasida  mahalliy  misollarda  namunalarni  ishlab  chiqdim. Har  bir 

misol,  HumanResources  sxemasining  ikkala  qismi  bo'lgan  xodimlar  va 

JobCandidate jadvallari o'rtasida ma'lumotlarni taqqoslash uchun INTERSECT yoki 

EXCEPT operatoridan foydalanadi. Taqqoslash har bir jadvaldagi BusinessEntityID 

ustuniga  asoslanadi. Xodimlar  jadvalidagi  BusinessEntityID  ustuni  birlamchi 

kalitdir. JobCandidate  jadvalida  BusinessEntityID  ustuni  -  xodimlar  jadvalidagi 

BusinessEntityID  ustuniga  murojaat  qiladigan  tashqi  kalit. JobCandidate 

jadvalidagi ustun ham nol qiymatlarni berishga imkon beradi. 

 

 

 



 

 

 

 

 

 

16 

 

 



2.2  Sql intersect operatori. 

INTERSECT

 operatori bilan ishlash 

Yuqorida  aytib  o'tganimdek,  so'rovlarni  birlashtirish  uchun  INTERSECT 

operatoridan  foydalanganda,  faqat  ikkita  ma'lumotlar  to'plamiga  to'g'ri  keladigan 

ma'lumotlar qaytariladi. Bu degani, Xodimlar va JobCandidate jadvallariga kelsak, 

natijalar to'plami faqat Ishchilar jadvalidagi BusinessEntityID qiymati JobCandidate 

jadvalidagi BusinessEntityID qiymatiga to'g'ri keladigan satrlarni o'z ichiga oladi. 

Quyidagi misolda, Men va WorkCandidate jadvallaridan ma'lumotlarni 

oladigan  ikkita  so'rovni  yarataman  va  ushbu  so'rovlarni  birlashtirish  uchun 

INTERSECT operatoridan foydalanaman

 



SELECT BusinessEntityID 

FROM HumanResources.Employee 

INTERSECT 

SELECT BusinessEntityID 

FROM HumanResources.JobCandidate;

 

Birinchi  SELECT  iborasi,  ko'rib  turganingizdek,  BusinessEntityID  ustunini 



Ishchilar  jadvalidan,  ikkinchi  SELECT  bayonoti  esa  JobCandidate  jadvalidan 

BusinessEntityID 

ustunini 

oladi. INTERSECT 

operatori 

ikkita 


so'rovni 

birlashtiradi.Siz  so'rovlarni  birlashtirish  uchun  INTERSECT  operatoridan 

foydalanganda  (yoki  EXCEPT),  ustunlar  soni  ikkala  so'rovda  ham  bir  xil  bo'lishi 

kerak va ustunlar bir xil tartibda bo'lishi kerak. Bundan tashqari, so'rovlar orasidagi 

mos  keladigan  ustunlar  mos  keladigan  ma'lumotlar  turlari  bilan  sozlanishi 

kerak. Yuqoridagi misol ushbu shartlarga javob beradi, chunki har bir so'rovda bir 

xil ma'lumot turiga (INT) bitta ustun keladi. Ushbu ikki so'rovni birlashtirish uchun 

INTERSECT operatoridan foydalanilganda, bayonot quyidagi natijalarni beradi: 

Ma'lum  bo'lishicha,  Xodimlar  jadvali  va  JobCandidate  jadvalida  umumiy 

bo'lgan ikkita BusinessEntityID qiymati mavjud. Agar siz JobCandidate jadvalidagi 



17 

 

 



ma'lumotlarni  ko'rib  chiqsangiz,  bu  erda  so'rov  natijalari  ushbu  jadvaldagi 

ma'lumotlarga  mos  kelishini  topasiz. Jadval  faqat  13  qatorni  o'z  ichiga  oladi  va 

BusinessEntityID  ustuni  barchasi  uchun  NULL,  ammo  ikkita  qatordan 

iborat. Ushbu satrlarda BusinessEntityID qiymati 212 va 274 ni tashkil qiladi. Va 

siz  kutganingizdek,  Xodimlar  jadvalida  BusinessEntityID  qiymati  212  va  274 

qiymatli satrlar mavjud. 

Shubhasiz,  yuqoridagi  misolda  ko'rsatilgandek,  ikkita  so'rov  natijalarini 

birlashtirish uchun INTERSECT operatoridan foydalanish oddiy jarayondir. Kalit, 

men  aytganimdek,  ikkita  so'rovda  SELECT  ro'yxatlari  bir-biriga  mos  kelishiga 

ishonch hosil qilishdir. 

Ammo,  bu  shuningdek  so'rovlarni  birlashtirish  uchun  INTERSECT 

operatoridan  foydalanishning  cheklashlaridan  birini  ta'kidlaydi  -  ya'ni  ikkinchi 

so'rovga  qo'shilmagan  bitta  so'rovga  ustunlarni  qo'shib  bo'lmaydi. Agar  har  bir 

so'rovda bir nechta mos keladigan ustunlarni qo'shsangiz, satrning qaytarilishi uchun 

barcha  ustun  qiymatlari  mos  kelishi  kerak. Masalan,  siz  har  birida  xodimlarning 

identifikatorlari,  ismlari  va  familiyalari  uchun  ustunlar  mavjud  bo'lgan  ikkita 

jadvaldan  ma'lumotlarni olayapsizmi  deylik. Agar o'sha uchta ustunga asoslangan 

ikkita  jadvalga  mos  kelishni  istasangiz,  birinchi  jadvaldagi  uchta  qiymat  satr 

qaytarilishi uchun ikkinchi jadvalning uchta qiymati mos kelishi kerak. (Bu vaqtda 

siz  o'zingizdan  o'zingizning  ma'lumotlar  bazangizdagi  barcha  ortiqcha 

ma'lumotlarni nima bilan bandligingizni so'rashingiz mumkin.) 

Bunday 


yondashuvni 

o'rniga, 

ikkala 

jadvaldagi 



identifikatorlarni 

taqqoslashga  qaror  qilishingiz  mumkin,  ammo  jadvalning  faqat  bittasida  ism  va 

familiyani  oling. Yoki  siz  boshqa  jadvalda  saqlanmagan  bitta  jadvaldan  ma'lumot 

olishni  xohlashingiz  haqida  qaror  qabul  qilishingiz  mumkin. Biroq,  ularni 

birlashtirish uchun INTERSECT operatoridan foydalanganda ustunlar ikkita so'rov 

o'rtasida  bir-biriga  mos  kelishi  kerakligi  sababli,  ushbu  cheklov  atrofida  ishlash 

usulini topishingiz kerak. Buning eng oson usullaridan biri bu sizning INTERSECT 


18 

 

 



tuzilishingizni  jadvalning  umumiy  ifodasiga  (CTE)  qo'shish  va  qo'shimcha 

ma'lumotni olish uchun bu jadvalni jadvalga qo'shishdir. Masalan, quyidagi misol 

yuqoridagi misolda ko'rgan bir xil INTERSECT qurilishini o'z ichiga olgan CTE-ni 

o'z ichiga oladi: 

 

WITH  


  cteCandidates (BusinessEntityID) 

  AS 


  ( 

    SELECT BusinessEntityID 

    FROM HumanResources.Employee 

    INTERSECT 

    SELECT BusinessEntityID 

    FROM HumanResources.JobCandidate 

  ) 

SELECT  


  c.BusinessEntityID, 

  e.LoginID, 

  e.JobTitle 

FROM  


  HumanResources.Employee AS e 

  INNER JOIN cteCandidates AS c 

    ON e.BusinessEntityID = c.BusinessEntityID 

ORDER BY 

  c.BusinessEntityID;

 

E'tibor bering, men CTECandidates nomli CTE-ni yaratdim. Kutganingizdek, 



CTE  ish beruvchi va  JobCandidate  jadvallarida  mavjud bo'lgan  BusinessEntityID 

qiymatlarini  qaytaradi. SELECT  boshlang'ich  bayonotida  CID-dagi  LoginID  va 

JobTitle  qiymatlarini  Ishchilar  jadvalidan  olish  uchun  xodimlar  jadvaliga 

qo'shilaman. Men  INTERSECTni  CTE-ga  qo'shganim  sababli,  bayonot  endi 

quyidagi  natijalarni  berishi  mumkin:Ko'rinib  turibdiki,  men  INTERSECT 

operatorining  cheklovlarini  bilib  oldim  va  endi  jadvallardan  biridan  qo'shimcha 

ma'lumotlarni qaytarib bermoqdaman. Bundan tashqari, qo'shimcha ma'lumotlarni 

kiritish  uchun  CTE-ni  boshqa  jadvalga  qo'shgan  bo'lar  edim. Masalan,  men 

xodimlarimning ismlarini va familiyalarini olish uchun bu erda bo'lgan narsalarimni 

Shaxsiy  jadvalga  qo'shgan  bo'lishim  mumkin. Gap  shundaki,  CTE  sizga 



19 

 

 



INTERSECT  operatori  bilan  ishlashda  juda  moslashuvchan  bo'lishga  imkon 

beradi; qaysi  satrlarga  mos  kelishini  aniqlashingiz  mumkin,  ammo  manba 

jadvalidan qat'iy nazar barcha kerakli ma'lumotlarni qaytarishingiz mumki 

Misollar uchun manba ma'lumotlari 

Ushbu operatorlarni amalda sinab ko'rishimiz uchun bizga ba'zi ma'lumotlar kerak 

bo'ladi,  men  ikkita  jadval  yaratib,  ularni  test  ma'lumotlari  bilan  to'ldirishni  taklif 

qilaman. 

1-jadval

 

  



   [Dbo] jadvalini yarating. [Test_table] (  

        [id] [int] YO'Q emas,  

        [maslahat] [varchar] (50) NULL,  

        [summa] [varchar] (50) NULL  

   ) [PRIMARY]  

   GO 


 

Uning ma'lumotlari

 

 



2-jadval

 

  



   Jadvalni yaratish [dbo]. [Test_table_two] (  

        [id] [int] YO'Q emas,  

        [maslahat] [varchar] (50) NULL,  

        [summa] [varchar] (50) NULL  

   ) [PRIMARY]  

   TO'G'RISIDA 

 

Va uning ma'lumotlari

 


20 

 

 



 

INTERSECT iborasi 



INTERSECT ( kesishish )  -  bu  birinchi,  ikkinchi  va  keyingi  ma'lumotlar  to'plamidan  bir  xil 

satrlarni chiqaradigan Transact-SQL bayonoti. Boshqacha qilib aytganda, u faqat birinchi natijada, 

ham  ikkinchi  ( uchinchi  va  hokazo ) satrlarda  chiqadi ,  ya'ni. bu  chiziqlarning  kesishishi  sodir 

bo'ladi. 

Ushbu operator juda foydali, masalan, birinchi jadvalda va ikkinchisida ( masalan, takrorlanuvchi 

ma'lumotlar ) qaysi qatorlar borligini aniqlash kerak bo'lganda . 

UNION  operatori  singari,  INTERSECT  ham  qoidalarga  ega,  masalan,  barcha  natijalar 

to'plamidagi maydonlar soni va ularning ma'lumotlari turlari bir xil bo'lishi kerak. 

Misol 

Keling, test_table  va  test_table_two, ya'ni  ikkalamizda  qanday  ma'lumotlarga  ega 

ekanligimizni bilib olaylik. buning uchun biz oddiy 

SQL so'rovini

 yozamiz : 

  

   SELECT Maslahat, test_table FROM Summa  



        Intersect  

   SELECT uchi, test_table_two FROM Summa 

 

 

Ko'rinib  turibdiki,  ikkala  jadvalda  ham 100  tagacha "Printer" va  150 



tagacha "Skaner" mavjud.

 


21 

 

 



 

 

 



 

XULOSA 

Afsuski,  SQL  server hali  ham  muammo  bo'lib  qolmoqda.  Agar  aniq  zaifliklar  

bo'lmasa  ham,  SQL server  usullari  qo'shimcha  zaifliklarni  aniqlashi  mumkin.  

SQL  serversining  zaifliklari  tayyorlangan  bayonotlar  yordamida  yo'q  qilinishi  

mumkin. 

Hozirgacha  biz  faqat  SQL server opertatorlarini qanday  qo’llashni  ko'rib  

chiqdik  .  Quyida,  shuningdek,  ularni  qanday  oldini  olish  mumkinligini  

ko'rsatamiz. 



Tayyorlangan  iboralardan  foydalanish  SQL  so'zi  va  kirish  ma'lumotlarini  

ajratishga  imkon  beradi  .  Bu  foydalanuvchi  kiritgan  ma'lumot  SQL  deb  

talqin  qilinmasligini  ta'minlaydi  .  Muayyan  dasturlash  tillariga  misollarni 

ko’rib xatoliklarni  topish  mumkin  . 

Ammo  tayyorlangan  bayonotlar  SQL  so'rovining  barcha  sohalarida  

qo'llanilmaydi  .  Masalan,  agar  jadval  nomi  yoki  ORDER  BY  iborasi  dinamik  

ravishda  tuzilishi  kerak  bo'lsa  ,  kiritish  oq  ro'yxat  bilan  tekshirilishi  kerak  .  

Maxsus  belgilarni  yo'q  qilish  faqat  tayyorlangan  bayonotlar  yoki  oq  ro'yxatga  

kiritilgan  kirishni  tekshirish  imkoni  bo'lmaganda  ishlatilishi  kerak,  chunki  

to'g'ri  bajarish  juda  qiyin  va  SQL  server  qilishiga  imkon  beradigan  

bo'shliqlar  xavfi  mavjud  .  Biroq,  tayyorlangan  bayonotlarni  oq  ro'yxat  va  

yondoshuv  bilan  to'ldirish  ikkilamchi  himoyani  yaratish  uchun  mukammal  

ma'no  beradi. 

Shunday  bir  rivojlangan  axborot  texnalogiyalari  davrida   

yashar  


ekanmiz.Bizdan

  yetuk  bilim  va  ko’nikmalarni  talab  qiladi.Kundan-

kunga  yangi  dasturlar  ishlab  chiqarilmoqda 

va  buni  buzishga  harkat  qilayotgan  hackerlar  rivojlanib  bormoqda.Shuning  

uchun  axborot  xavfsizligi  va  kiber  xavfsizligi  yanada  kuchaytirishimiz  

kerak.Shundagina  bizda  ko’zlangan  maqsadga  erishiladi. 

 

 

 



 

22 

 

 



 

   


 

 

 



Adabiyotlar 

 



Dastur.uz 

 



Tami.uz 

 



w3shchools.com 

 



Sql  operator.com 

 



SQL  Server  Knowledge  Base  -  A  reference  guide  for  MySQL,  

MSSQL  and  Oracle  SQL  Server  attacks. 

 

GreenSQL  Open  Source  SQL  Server  Filter  -  An  Open  Source  



database  firewall  used  to  protect  databases  from  SQL  server  attacks. 

 



An  Introduction  to  SQL  Server  Attacks  for  Oracle  Developers 



This  also  includes  recommended  defenses. 



Download 472.62 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling