60
5.8-rasm. PostgreSQL-da DELETE operatori ishlatilishi
Yoki HTC tomonidan ishlab chiqarilgan va narxi 35 000 dan past
boʻlgan barcha mahsulotlarni olib tashlang:
1.
2.
DELETE
FROM
Products
WHERE
Manufacturer='HTC'
AND
Price < 15000;
Agar shartdan qat'i nazar, barcha qatorlarni oʻchirish kerak boʻlsa,
shartni oʻtkazib yuborish mumkin:
1.
DELETE
FROM
Products;
Nazorat savollari:
1. CREATE TRIGGER iborasining sintaksisiga izoh bering.
61
2. INSERTED va DELETED jadvallarining maqsadi nima?
3. Qaysi tizim protsedurasi trigger kodini olishga imkon beradi?
4. Maʻlumotlar bazasi obyekti ishga tushirilishini qayerdan bilaman?
5. Muayyan jadval uchun triggerlar roʻyxatini qanday olish mumkin?
6-
laboratoriya ishi
Triggerlarning yozilishi boʻyicha misollar yechish
Ishdan maqsad:
ma‘lumotlar bazasida dasturlarda triggerlarni ishlab
chiqish va ulardan foydalanish boʻyicha amaliy koʻnikmalarga ega boʻlish.
Masalaning qoʻyilishi:
ma‘lumotlar bazasini boshqarish vositalari
yordamida serverdagi ma‘lumotlarni qayta ishlash.
Uslubiy koʻrsatmalar:
SQL tilida
SELECT
operatori bilan ishlashni
davom etamiz. Ushbu darsimizda
SELECT
operatori bilan yanada
chuqurroq tanishamiz. Darsda
DISTINCT
,
LIMIT, OFFSET, ORDER
BY, LIKE
operatorlarini
SELECT
soʻrovida ishlatishni oʻrganamiz.
Soʻrovlar
DICTINCT. Noyob qiymatlarni olish
DISTINCT operatori ma‘lum ustunlar uchun noyob ma‘lumotlarni
tanlash imkonini beradi.
Misol uchun, mahsulot jadvalida turli xil mahsulotlar bir xil ishlab
chiqaruvchilarga ega boʻlishi mumkin. Masalan, bizda quyidagi jadval
mavjud:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE
TABLE
Products
(
Id SERIAL PRIMARY
KEY,
ProductName VARCHAR(30) NOT
NULL,
Manufacturer VARCHAR(20) NOT
NULL,
ProductCount INTEGER
DEFAULT
0,
Price NUMERIC
);
INSERT
INTO
Products (ProductName, Manufacturer,
ProductCount, Price)
VALUES
('iPhone X', 'Apple', 2, 71000),
('iPhone 8', 'Apple', 3, 56000),
('Galaxy S9', 'Samsungʻ, 6, 56000),
('Galaxy S8 Plus', 'Samsungʻ, 2, 46000),
('Desire 12', 'HTC', 3, 26000);
62
Keling, barcha ishlab chiqaruvchilarni tanlaymiz:
1.
SELECT
DISTINCT
Manufacturer FROM
Products;
6.1-rasm. DISTINCT qoʻllanilishi
ORDER BY. Tartiblash
ORDER BY bandi ma‘lum bir ustun boʻyicha qiymatlarni saralashga
imkon beradi. Masalan, Mahsulotlar jadvalidan Mahsulotlar soni ustuni
boʻyicha tanlovga buyurtma beraylik:
1.
2.
SELECT
* FROM
Products
ORDER
BY
ProductCount;
6.2-rasm. ORDER BY qoʻllanilishi
63
Shuningdek, siz ma‘lumotlarni AS operatori yordamida aniqlanadigan
ustun taxalluslari boʻyicha buyurtma qilishingiz mumkin:
1.
2.
3.
SELECT
ProductName, ProductCount * Price AS
TotalSum
FROM
Products
ORDER
BY
TotalSum;
6.3-rasm. ORDER BY qoʻllanilishi.
Saralash mezoni sifatida murakkab ustunga asoslangan ifoda ham
ishlatilishi mumkin:
1.
2.
3.
SELECT
ProductName, Price, ProductCount
FROM
Products
ORDER
BY
ProductCount * Price;
64
6.4-rasm. ORDER BY qoʻllanilish sohalari.
Kamayish boʻyicha tartiblash.
Odatiy boʻlib, ma‘lumotlar oʻsish tartibida tartiblanadi, lekin siz
kamayish tartibida tartiblash uchun DESC operatoridan foydalanishingiz
mumkin.
1.
2.
3.
SELECT
ProductName, Manufacturer
FROM
Products
ORDER
BY
Manufacturer DESC;
6.5-rasm. ORDER BY qoʻllanilishi
65
Odatiy boʻlib, oʻsish tartibida tartiblanadigan DESC oʻrniga ASC
operatori ishlatiladi:
1.
2.
3.
SELECT
ProductName, Manufacturer
FROM
Products
ORDER
BY
Manufacturer ASC;
Bir nechta ustunlar boʻyicha tartiblash.
Agar bir vaqtning oʻzida bir nechta ustunlar boʻyicha saralash kerak
boʻlsa, ularning barchasi ORDER BY operatoridan keyin vergul bilan
ajratiladi:
1.
2.
3.
SELECT
ProductName, Price, Manufacturer
FROM
Products
ORDER
BY
Manufacturer, ProductName;
Bunday holda, satrlar birinchi navbatda Ishlab chiqaruvchi ustuni
boʻyicha oʻsish tartibida tartiblanadi. Keyin, agar ishlab chiqaruvchi ustuni
bir xil qiymatga ega boʻlgan ikkita qator boʻlsa, ular Mahsulot nomi ustuni
boʻyicha ham oʻsish tartibida tartiblanadi. Ammo yana, ASC va DESC-
dan foydalanib, siz turli ustunlar uchun oʻsish va kamayish tartibida
tartiblashni alohida aniqlashingiz mumkin:
1.
2.
3.
SELECT
ProductName, Price, Manufacturer
FROM
Products
ORDER
BY
Manufacturer ASC, ProductName DESC;
6.6-rasm. ORDER BY hamda ASC va DESC qoʻllanilish sohalari
66
LIMIT va OFFSET.
LIMIT operatori ma‘lum bir qatorlarni olish imkonini beradi:
1.
2.
3.
SELECT
* FROM
Products
ORDER
BY
ProductName
LIMIT 4;
6.7-rasm. LIMIT operatoridan foydalanish.
OFFSET operatori tanlashni qaysi qatordan boshlashni belgilash
imkonini beradi. Masalan, 2-dan boshlab 3 ta qatorni tanlaymiz:
1.
2.
3.
SELECT
* FROM
Products
ORDER
BY
ProductName
LIMIT 3 OFFSET 2;
6.8-rasm. LIMIT va OFFSET operatorlari.
67
Agar ma‘lum biridan boshlab barcha qatorlarni tanlash kerak boʻlsa,
LIMIT operatorini oʻtkazib yuborish mumkin:
1.
2.
3.
SELECT
* FROM
Products
ORDER
BY
ProductName
OFFSET 2;
Yoki LIMITdan keyin ALL kalit soʻzini belgilang:
1.
2.
3.
SELECT
* FROM
Products
ORDER
BY
ProductName
LIMIT ALL
OFFSET 2;
Filtrlash operatorlari:
IN operatori
IN operatori ustunlar boʻlishi kerak boʻlgan qiymatlar toʻplamini
aniqlashga imkon beradi:
1.
WHERE
выражение [NOT] IN
(выражение)
IN dan keyingi qavs ichidagi ifoda qiymatlar toʻplamini belgilaydi.
Ushbu toʻplam, masalan, boshqa soʻrov asosida dinamik ravishda
hisoblanishi mumkin yoki u doimiy qiymatlar boʻlishi mumkin.
Masalan, ishlab chiqaruvchisi Samsung, Xiaomi yoki Huawei boʻlgan
mahsulotlarni tanlaymiz:
1.
2.
SELECT
* FROM
Products
WHERE
Manufacturer IN
('Samsungʻ, 'HTC', 'Huawei');
6.9-rasm. IN operatori
68
Shu bilan bir qatorda, ushbu qiymatlarning barchasini OR operatori
orqali tekshirish mumkin:
1.
2.
SELECT
* FROM
Products
WHERE
Manufacturer = 'Samsungʻ
OR
Manufacturer =
'HTC'
OR
Manufacturer = 'Huawei';
Biroq, IN operatoridan foydalanish, ayniqsa, bunday qiymatlar juda
koʻp boʻlsa, ancha qulayroqdir.
NOT operatoridan foydalanib, siz, aksincha, qiymatlar toʻplamiga mos
kelmaydigan barcha satrlarni topishingiz mumkin:
1.
2.
SELECT
* FROM
Products
WHERE
Manufacturer
NOT
IN
('Samsungʻ,
'HTC',
'Huawei');
BETWEEN operatori
BETWEEN operatori ifoda mos kelishi kerak boʻlgan boshlangʻich va
yakuniy qiymatdan foydalangan holda bir qator qiymatlarni belgilaydi:
1.
WHERE
выражение [NOT] BETWEEN
начальное_значение AND
конечное_значение
Misol uchun, narxlari 20 000 dan 50 000 gacha boʻlgan barcha
mahsulotlarni olaylik (boshlangʻich va yakuniy qiymatlar ham qatorga
kiritilgan):
1.
2.
SELECT
* FROM
Products
WHERE
Price BETWEEN
20000 AND
50000;
6.10-rasm. BETWEEN operatorining ishlatilishi
69
Agar, aksincha, ushbu diapazonga kirmaydigan qatorlarni tanlash kerak
boʻlsa, NOT operatori ishlatiladi:
1.
2.
SELECT
* FROM
Products
WHERE
Price NOT
BETWEEN
20000 AND
50000;
Bundan tashqari, murakkabroq ifodalardan foydalanishingiz mumkin.
Masalan, biz zaxiralari ma‘lum miqdorda boʻlgan tovarlarni olamiz (narx *
miqdor):
1.
2.
SELECT
* FROM
Products
WHERE
Price * ProductCount BETWEEN
90000 AND
150000;
LIKE operatori
LIKE operatori ifoda mos kelishi kerak boʻlgan satr nusxasini oladi.
1.
WHERE
выражение [NOT] LIKE
шаблон_строки
Shablonni aniqlash uchun bir qancha maxsus belgilardan foydalanish
mumkin:
•%: har qanday belgilar soniga ega boʻlishi mumkin boʻlgan har qanday
pastki qatorga mos keladi va pastki qatorda hech qanday belgilar
boʻlmasligi mumkin
Masalan, "Galaxy%" kabi mahsulot nomi "Galaxy Ace 2" yoki "Galaxy
S7" kabi qiymatlarga mos keladi.
• _: har qanday bitta belgiga mos keladi
Masalan, "Galaxy S_" kabi mahsulot nomi "Galaxy S7" yoki "Galaxy
S8" kabi qiymatlarga mos keladi.
LIKE operatorini qoʻllaymiz:
1.
2.
SELECT
* FROM
Products
WHERE
ProductName LIKE
'iPhone%';
70
6.11-rasm. LIKE operatorining ishlatilishi
|