FROM Customers a, Customers b
WHERE a.Rating = b.Rating;
Bu xolda SQL a va b jadvallarni jamlagandek ish tutadi. YUqorida keltirilgan misolda ortiqcha satrlar mavjud, xar bir kombinatsiya uchun ikkita qiymat. Birinchi psevdonimdagi A qiymat ikkinchi psevdonimdagi B qiymat bilan kombinatsiyasi olinadi, so‘ngra ikkinchi psevdonimdagi A qiymat birinchi psevdonimdagi B qiymat bilan kombinatsiyasi olinadi.
Xar gal satr o‘zi bilan solishtiriladi. Buni oldini olish soda usuli ikki qiymatga cheklanish kiritish, toki birinchi qiymat ikkinchisidan kichik bo‘lsin yoki alfavit bo‘yicha oldin kelsin. Bu predikatni aasimmetrik qiladi, natijada xudi shu qiymatlar teskari tartibda olinmaydi.
Misol:
SELECT a.CName, b.CName, a.Rating
FROM Customers a, Customers b
WHERE a.Rating = b.Rating
AND a.CName < b.CName;
Ma’lumotlar bazasi xavfsizligi
SQL muhitida xar bir foydalanuvchi maxsus identifikatsiton nom, murojjat identifikatoriga (ID) ega. Ma’lumotlar bazasiga yuborilgan komanda ma’lum foydalanuvchi bilan yoki boshqacha aytganda maxsus murojaat identifikatori bilan bog‘lanadi.
Imtiyozlar
Har bir foydalanuvchi SQL ma’lumotlar bazasida nima qilish mumkinlgini ko‘rsatuvchi imtiyozlarga egadir. Bu imtiyozlar vaqt o‘tishi Bilan o‘zgarishi ya’ni eskilari o‘chirilib yangilari qo‘shilishi mumkin. SQL imtiyozlar bu ob’ekt imtiyozlaridir. Bu shuni bildiradiki foydalanuvchi berilgan komandani ma’lumotlar bazasining biror ob’ekti ustida bajarishi mumkin. Ob’ekt imtiyozlari bir vaqtning o‘zida foydalanuvchilar va jadvallar bilan bog‘liq. Ya’ni imtiyoz ma’lum foydalanuvchiga ko‘rsatilgan jadvalda, asos jadvalda yoki tasavvurda beriladi. Ixtiyoriy turdagi jadvalni yaratgan foydalanuvchi shu jadval egasidir. Bu shuni bildiradiki foydalanuvchi bu jadvalda hamma imtiyozlarga ega va imtiyozlarini shu jadvalning boshqa foydalanuvchildariga uzatishi mumkin.
Foydalanuvchiga tayinlash mumkin bo‘lgan imtiyozlar:
jadvallarda so‘rovlar bajarishi mumkin
SELECT
jadvalda INSERT komandasini bajarishi mumkin
INSERT
jadvalda UPDATE komandasini bajarishi mumkin
UPDATE
jadvalda DELETE komandasini bajarishi mumkin
DELETE
jadvalning ustunidan (yoki ustunlaridan) ajdod kalit sifatida foydalanuvchi tashqi kalit aniqlashi mumkin. Bu imtiyozni ayrim ustunlar uchun berishingiz mumkin
REFERENCES
Nostandart imtiyozlar
jadvalda indeks yaratish huquqini beradi
INDEX
obyekt uchun sinonim yaratish huquqini beruvchi
SYNONYM
jadvalda ALTER TABLE komandasini bajarish xquqini beruvchi
ALTER
GRANT
GRANT privilege ON [creator] tablename
TO userid, ...
[WITH GRANT OPTION]
Bu erda,
-privilege – tayinlanayotgan imtiyozlar ro‘yxati,
-tablename - jadval nomi,
-userid – imtyozlar olgan foydalanuvchilar ro‘yxati.
Masalan:
GRANT SELECT, INSERT ON Orders
TO Adrian, Diane;
Orders jadvalida Adrian va Diane foydalanuvchilari uchun SELECT va INSERT imtiyozlarini berish
Ma’lum ustunlarga imtiyozlarni cheklanish
Bu cheklanish UPDATE va REFERENCES imtiyozlarida ishlatilishi mumkin. Bu xolda imtiyoz ko‘rsatilgandan so‘ng qavs ichida shu imtiyoz qo‘llaniluvchi ustunlar ko‘rsatiladi (agar ustunlar ko‘rsatilmagan bo‘lsa, imtiyoz butun jadvalga ta’sir o‘tkazadi).
Masalan:
GRANT UPDATE (City, Comm) ON Salespeople TO Diane;
bunda Diane ga Salepeople jadvalining City va Comm ustunlari qiymatlarini o‘zgartirish huquqini beradi
REFERENCES
Masalan:
GRANT REFERENCES (CName, CNum)
ON Customers TO Stephen
bunda Stephen ga CNum va CName ustunlarini o‘zining jadvallaridagi ixtiyoriy tashqi kalitlarga nisbatan ajdod kalit sifatida ishlatish huquqini beradi
ALL
Masalan:
GRANT ALL ON Customers TO Stephen;
ALL kalit so’zi Customers jadvalida Stephen foydalanuvchisiga barcha imtiyozlarni berish uchun ishlatiladi
PUBLIC
Masalan:
GRANT SELECT ON Orders TO PUBLIC;
Ixtiyoriy foydalanuvchiga Orders jadvalini ko‘rish imkonini berish uchun
WITH GRANT OPTIONS
Masalan:
GRANT SELECT ON Customers TO Adrian WITH GRANT OPTION;
Agar Diane buyurtmachilar jadvalida Adrian boshqa foydalanuvchilarga SELECT imtiyozini berish huquqiga ega bo‘lishini istasa, unga WITH GRANT OPTION ifodasidan foydalanib SELECT imtiyozini beradi
WITH GRANT OPTIONS (davomi)
Masalan:
GRANT SELECT ON Diane.Customers TO Stephen;
Agar Adrian uchinchi shaxslarga SELECT imtiyozini berish huquqiga ega bo‘lgandan so‘ng quyidagi komandani berishi mumkin
GRANT SELECT ON Diane.Customers TO Stephen WITH GRANT OPTION;
Imtiyozlarni rad etish
imtiyozlarni REVOKE komandasi yordamida rad etish mumkin, uning sintaksisi GRANT ga o‘xshash, lekin teskari ta’sirga ega.
Imtiyozlarni rad etishda quyidagi qoidalarga rioya qilinadi: imtiyozlar ularni bergan foydalanuvchi tomonidan rad etiladi va rad etish kasakadlanadi, ya’ni undan shu imtiyozlarni olgan barcha foydalanuvchilarga tarqaladi.
REVOKE
Masalan:
REVOKE INSERT, DELETE ON Customers FROM Adrian, Stephen;
Bunda Adrian va Stephen uchun Customers jadvalida INSERT va DELETE imtiyozlarini rad etish uchun ishlatiladi.
REVOKE
REVOKE ALL PRIVILEGES ON kinds FROM manuel;
Bunda manuel nomli foydalanuvchisi uchun kinds jadvalidagi barcha huquqlar cheklanadi
Dostları ilə paylaş: |