DELETE FROM Fukaro
WHERE ID_FUK=2
Fukaro jadvalidan FAOLIYAT atributi “Nafaka” yoki “Ishsiz” va MAXALLA atributi “Nur” yoki “N” xarfdan boshlanuvchi yozuvlarni o`chirish
DELETE FROM Fukaro
WHERE (MAXALLA LIKE “Nur” OR MAXALLA LIKE “N%”) AND
(FAOLIYAT IN(“Nafaka”, “Ishsiz”))
Yuqoridagi ikkita so`rov natijasi quyidagicha bo`ladi.
ID_FUK
|
FAMILIYA
|
ISMI
|
FAOLIYAT
|
MAXALLA
|
|
1
|
Allayarov
|
Jasurbek
|
Ishsiz
|
Nur
|
X MAXALLA LIKE “Nur” va FAOLIYAT=“ Ishsiz”
|
2
|
Axmedov
|
Shaxzod
|
Xodim
|
Jaslik
|
X ID_FUKARO=2
|
3
|
Berdanov
|
Jamshid
|
Talaba
|
Jaslik
|
|
4
|
Bozorboyev
|
Sarvarbek
|
Talaba
|
Nukus
|
|
5
|
Nomozov
|
Lazizjon
|
Nafaka
|
Nukus
|
X MAXALLA LIKE “N%” va FAOLIYAT=“Nafaka”
|
ID_FUK
|
FAMILIYA
|
ISMI
|
FAOLIYAT
|
MAXALLA
|
3
|
Berdanov
|
Jamshid
|
Talaba
|
Jaslik
|
4
|
Bozorboyev
|
Sarvarbek
|
Talaba
|
Nukus
|
Endi DELETE operatori orqali boshqa jadval ma`lumotlariga bog`lab o`chirish (murakkab) so`rovini tuzish qaraladi. Misol uchun Fukaro jadvalidagi Familiya va Ismi atributlari birgalikda Student jadvalidagi FIO atributiga mos bo`lgan holatda yoki Student jadvalidagi Spes atributi ‘’ (bo`sh, lekin NULL emas) qiymatga ega bo`lgan yozuvlarni Student jadvalidan o`chirish talab etilsin.
DELETE FROM STUDENT
WHERE FIO IN(
SELECT FAMILIYA || ISMI AS FIO
FROM FUQARO)
OR FIO IS NULL
Bu murakkab o`chirish so`rovining natijasi quyidagicha bo`ladi:
ID_ST
|
FIO
|
SPES
|
KURS
|
BAXO
|
YOSHI
|
STIPENDIA
|
1
|
Pardabaev Islam
|
DI
|
2
|
4
|
18
|
470000
|
2
|
Alimov N
|
KI
|
4
|
3
|
21
|
350000
|
5
|
Rajapov Sadulla`
|
|
2
|
3
|
19
|
350000
|
6
|
Sadikov M
|
AX
|
1
|
3
|
24
|
350000
|
DELETE operatsiyasini bajarishda unda qatnashgan qism so`rovda satrlar o`chiriladigan jadval ko`rsatilmasligi kerak. Ma`lumotlarni manipulyatsiyalash operatsiyalarining barchasi MBning butunligi tushunchasi bilan bog`langan. Manipulyatsiyalash amallari sintaktik jihatdan to`g`ri bo`lsada butunlik talablari tufayli bajarilmasligi mumkin.
SQL funksiyalari
Funksiya deganda shunday kiruvchi ma`lumotlarni qayta ishlovchi apparat nazarda tutiladi. Demak, funksiya bir yoki bir nechta argumentdan, ya`ni kiruvchi bir nechta parametrlardan iborat bo`lib, bu argumentlar qayta ishlanib bitta argumentli natija qaytariladi.
SQL tilida funksiyalar asosan 3 toifaga ajratiladi: standart funksiyalar, agregat funksiyalar va saqlanuvchi funksiyalar. Bu yerda standart va agregat funksiyalar SQL tili tarkibiga kirsa, saqlanuvchi funksiyalar foydalanuvchi tomonidan ishlab chiqilib, ayrim hollarda foydalanuvchi funksiyasi ham deyiladi. Shuningdek, standart funksiyalar agrument va parametrlari soni oldindan ma`lum bo`lsa, agregat funksiyalarda argumentlar noma`lum sonda bo`ladi. Endi ushbu funksiyalar bilan batafsil tanishib chiqamiz.
Standart funksiyalar ham bir nechta guruhlarga ajratiladi: sana/vaqt va satrli funksiyalar, o`zgartirish va matematik kabi funksiyalar. Bu funksiyalar juda ko`p bo`lib, ularning ayrimlari bilan tanishamiz.
1. Satrli funksiyalar
Yozuv ko`rinishidagi ustunlarni, biror qiymat bilan solishtirishda yozuvning katta yoki kichik harfda ekanligini bilish muhim, aks holda kerakli natijaga erishish qiyin. Sababi, katta-kichik yozuvlar qo`shtirnoq ichida farqlanadi. LOWER va UPPER funksiyalari orqali solishtirilayotgan yozuvning reeistrini kichik yoki katta harflarga o`tkazib, keyin solishtiradi.
LOWER (str) yoki LCASE(str) – berilgan satrni kichik xarflarga almashtiradi.
SELECT LCASE(‘QUADRATICALLY`); // Natija: ‘quadratically`
UPPER (str) yoki UCASE(str) –xarflarni katta xarflarga almashtiradi.
SELECT UCASE(‘Hej`); // Natija: ‘HEJ`
INITCAP (str) – satrdagi har bir so`zning 1-xarfini bosh xarf qiladi.
SELECT INITCAP (‘tatu nukus`); // Natija: ‘ Tatu Nukus ‘
CONCAT(str1,str2,...) – argumentda berilgan o`zgaruvchilarni ketma-ketligi bo`yicha biriktiradi. Kamida bitta argument bo`lishi lozim.
SELECT CONCAT(‘My`, ‘S`, ‘QL`); // Natija: ‘MySQL`
SELECT CONCAT(‘My`, NULL, ‘QL`); // Natija: NULL
SELECT CONCAT(14.3); // Natija: ‘14.3`
CONCAT_WS(separator, str1, str2,...) – argumentlar o`rtasiga separator da ko`rsatilgan simvolni qo`yib birlashtiradi.
SELECT CONCAT_WS(",","First","Second","Last");
// Natija: ‘First,Second,Last`
SELECT CONCAT_WS(",","First",NULL,"Last");// Natija: ‘First,Last`
LENGTH (str) – yozuvdagi barcha simollarning sonini aniqlab beradi, bo`sh joy (probel) ham bitta simvol shaklida hisoblanadi.
SELECT LENGTH(‘text`); // Natija: 4
REPLACE(str, from_str, to_str) – yozuvlarda ko`rsatilgan simvollarni boshqasiga almashtirib beradi. Office programmalaridagi “zamenit” buyrug`i vazifasini bajaradi. Uch parametrli funksiyada: str - ustun nomi, from_str - qaysi almashtiriladigan simvollar va to_str - o`rniga qo`yiladigan simvollarni bildiradi.
SELECT REPLACE(‘www.mysql.com`, ‘w`, ‘Ww`);
// Natija: ‘WwWwWw.mysql.com`
REPEAT(str, count) – str yozuvni count marta takrorlab ekranga chiqaradi.
SELECT REPEAT(‘SQL`, 3); // Natija: ‘SQLSQLSQL`
INSERT(str, pos, len, newstr) – str yozuvni pos o`rindan boshlab len uzunlikdagi qismini newstr yangi satrga almashtiradi.
SELECT INSERT(‘Quadratic`, 3, 4, ‘What`); // Natija: ‘QuWhattic`
ELT(N,str1,str2,str3,...) – argumentlardan N-indeksdagisini ko`rsatadi. Agar berilgan N soni 1 dan kichik yoki argumentlar sonidan katta bo`lsa, NULL qiymat qaytariladi.
SELECT ELT(1, ‘ej`, ‘Heja`, ‘hej`, ‘foo`); // Natija: ‘ej`
SELECT ELT(4, ‘ej`, ‘Heja`, ‘hej`, ‘foo`); // Natija: ‘foo`
FIND_IN_SET(str, strlist) – berilgan str yozuvni ro`yxat yoki massiv shakliga ega bo`lgan strlist to`plamdan qidiradi va uning indeksini aniqlaydi. Bunda strlist dagi elementlar vergel bilan ajratilishi lozim.
SELECT FIND_IN_SET(‘b`,`a,b,c,d`); // Natija: 2
REVERSE(str) – yozuvdagi simvollarning pozitsiyasini teskari tartibga aylantirib ekranga chiqaradi.
SELECT REVERSE(‘abc`); // Natija: ‘cba`
Eslatma. Satrli funksiyalar SELECT operatori bilan ishlatilsa faqat ekranga chiqarilayotganda ma`lumotlar o`zgartiriladi, lekin bazadagi ma`lumotlar o`z holida qoladi. Lekin UPDATE operatori bilan ishlatilsa, bazadagi ma`lumotlar o`zgartiriladi.
Keyingi keltiriladigan satrli funksiyalar tahrirlash funksiyalari deb ham yuritiladi.
INSTR(str, substr) – kerakli simvolni yozuvlar ichidan qidirishga mo`ljallangan. Bunda str yozuv tarkibidan substr qismyozuv qidiriladi va natijada topilgan simvolning nechanchi tartibda turgani son ko`rinishida ekranga chiqadi. Natija faqat dastlabki uchragan simvol pozitsiyasini aniqlaydi, keyingilarni qaramaydi.
SELECT INSTR(‘foobarbar`, ‘bar`); // Natija: 4
SELECT INSTR(‘xbar`, ‘foobar`); // Natija: 0
Hisobotlar tayorlashda uni o`qish qulay bo`lishi juda muhim. Shuning uchun har bir chiqariladigan simvol yoki sonlar bir hil tartibda chiqishi lozim. Ya`ni uzun so`zlar ham qisqa so`zlar ham bir hil uzunlikda chiqishi maqsadga muvofiqdir. SQL da bu vazifani “PAD” funksiyasi bajaradi, faqat bu funksiyani oldiga qisqa bo`lgan so`zlar to`ldirilishi uchun qaysi tomondan boshlab to`ldirilishini ko`rsatuvchi L(left) yoki R(right) harflar qo`shiladi. To`ldirish deganda berilgan yozuvni chap yoki o`ng tomoniga ko`rsatilgan simvol soniga yetmagan simollarni biriktirish tushuniladi. Ko`pchilik standart hollarda to`ldirish lozim bo`lgan simvolga probel yoki pastki chiziq qo`yiladi.
LPAD(str, len, padstr) va RPAD(str, len, padstr) - bu yerda str yozuvni len uzunlikda padstr simvollar bilan to`ldiradi
SELECT LPAD(‘hi`,4,`??`); // Natija: ‘??hi`
SELECT RPAD(‘hi`,5,`?`); // Natija: ‘hi???`
LEFT(str, len) va RIGHT(str, len) funksiyalar berilgan str yozuvni chap va o`ng tomonidan len uzunlikdagi simvollarni kesib oladi.
SELECT LEFT(‘foobarbar`, 5); // Natija: ‘fooba`
SELECT RIGHT(‘foobarbar`, 4); // Natija: ‘rbar
SUBSTRING(str, pos, len) yoki SUBSTR (str, pos, len)– berilgan str yozuvning pos o`rindagi simvoldan boshlab len uzunlikda kesib oladi.
SUBSTRING(str FROM pos FOR len) – yuqoridagiga ekvivalent funksiya.
SELECT SUBSTRING(‘Quadratically`,5,6); // Natija: ‘ratica`
SELECT SUBSTRING(‘Quadratically`,5); // Natija: ‘ratically`
SELECT SUBSTRING(‘foobarbar` FROM 4); // Natija: ‘barbar`
SUBSTRING_INDEX(str, delim, count) – str yozuvning delim ajratuvchi qism simvollari count marta kelishidan keyingi (oldingi) simvollarini o`chiradi. Agar count musbat son bo`lsa, keyin aks holda manfiy son bo`lsa oldin kelishini bildiradi.
SELECT SUBSTRING_INDEX(‘www.mysql.com`, ‘.`, 2);
// Natija: ‘www.mysql`
SELECT SUBSTRING_INDEX(‘www.mysql.com`, ‘.`, -2);
// Natija: ‘mysql.com`
LTRIM (str, [ ]) va RTRIM (str, [ ]) – berilgan str yozuvni chap va o`ng tomonidan substr qismsatrni o`chirib tashlaydi yoki tozalaydi. Agar substr qismsatr ko`rsatilmasa probellardan tozalaydi.
SELECT LTRIM(‘ barbar`); // Natija: ‘barbar`
SELECT RTRIM(‘barbar ‘); // Natija: ‘barbar`
TRIM (str, [ ]) – yuqoridagi funksiyalar kabi, lekin berilgan str yozuvning o`ng va chap tomonidan substr qismsatrni o`chirib tashlaydi. Bu funksiyaning to`liq yozilishi quyidagicha:
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
SELECT TRIM(‘ bar ‘); // Natija: ‘bar`
SELECT TRIM(LEADING ‘x` FROM ‘xxxbarxxx`); // Natija: ‘barxxx`
SELECT TRIM(BOTH ‘x` FROM ‘xxxbarxxx`); // Natija: ‘bar`
SELECT TRIM(TRAILING ‘xyz` FROM ‘barxxyz`); // Natija:
CONV(N, from_base, to_base) – berilgan N sonni from_base sanoq sistemasidan to_base sanoq sistemasiga o`tkazadi (konvertatsiya qiladi).
SELECT CONV("a",16,2); // Natija: ‘1010`
SELECT CONV("6E",18,8); // Natija: ‘172`
SELECT CONV(-17,10,-18); // Natija: ‘-H`
SELECT CONV(10+"10"+`10`+0xa,10,10); // Natija: ‘40`
BIN(N) yoki CONV(N, 10, 2) – o`nlikdan ikkilik sanoq sistemasiga o`tkazadi.
SELECT BIN(12); // Natija: ‘1100`
HEX(N_or_S) – agar N_or_S arument son shaklida berilgan bo`lsa, to`g`ridan-to`g`ri 16 lik sanoq sistemasiga o`tkazadi. Agar N_or_S satr shaklida berilsa, uning har bir simvolini oldin 2lik sanoq sistemaga o`tkazib, keyin uni 16likga aylantiradi.
SELECT HEX(255); // Natija: ‘FF`
SELECT HEX("abc"); // Natija: 616263
SELECT 0x616263; // Natija: "abc"
OCT(N) yoki CONV(N, 10, 2) – o`nlikdan sakkizlik sanoq sistemasiga o`tkazadi.
SELECT OCT(12); // Natija: ‘14`
Do'stlaringiz bilan baham: |