MySQL-də sorğuların icra olunması

Ötən dərsdə cədvəllərin strukturu ilə tanış olduq. İndi isə gəlin cədvəllərə əlavə edilmiş verilənlərlə (məlumatlarla) işləməyi öyrənək.

Verilənlərin cədvələ əlavə edilməsi

Verilənlərin cədvələ əlavə edilməsi üçün INSERT əmrindən istifadə edilir. Yazılış sintaksisi aşağıdakı kimidir:

INSERT INTO cədvəlin_adı ([sütunlar]) VALUES ([qiymətlər]);

Ötən dərsdə yaratdığımız users cədvəlinə bir neçə istifadəçi əlavə edirik:

INSERT INTO users (email, name, age) VALUES('x1@codecourse.info', 'Emil', 35);
INSERT INTO users (email, name, age) VALUES('x2@codecourse.info', 'Zaur', 37);
INSERT INTO users (email, name, age) VALUES('x3@codecourse.info', 'Famil', 50);
INSERT INTO users (email, name, age) VALUES('x4@codecourse.info', 'Ellada', 25);
INSERT INTO users (email, name, age) VALUES('x5@codecourse.info', 'Zaur', 37);
INSERT INTO users (email, name, age) VALUES('x6@codecourse.info', 'Rasim', 18);
INSERT INTO users (email, name, age) VALUES('x7@codecourse.info', 'Emil', 35);
INSERT INTO users (email, name, age) VALUES('x8@codecourse.info', 'Ellada', 25);
INSERT INTO users (email, name, age) VALUES('x9@codecourse.info', 'Emil', 35);

users cədvəlinə məlumatın əlavə edilməsi

Verilənlərin cədvəldən əldə edilməsi

Verilənləri seçilmiş cədvəldən əldə etmək üçün SELECT əmrindən istifadə edilir. Aşağıdakı sorğu ilə users cədvəlindən bütün sütun və sətirləri əldə edirik:

SELECT * FROM users;

* işarəsi VBİS-ə seçilmiş cədvəldən bütün sütunların əldə edilməsini əmr edir.

users cədvəlindən verilənlərin əldə edilməsi

Cədvəldən məlumatları bütün sütunlar üzrə deyil, yalnız konkret sütunlar üzrə əldə etmək üçün SELECT açar sözündən sonra həmin sütunların adını yazırıq:

SELECT email, name, age FROM users;

verilənlərin users cədvəlindən konkret sütunlar üzrə əldə edilməsi

Aydındır ki müəyyən vaxtdan sonra cədvəldə məlumatların həcmi artır. Bu halda cədvəldən məlumatların konkret sütunlar üzrə əldə edilməsi tövsiyə edilir, çünki bu, daha sürətlidir.

DISTINCT

users cədvəlindən yalnız istifadəçilərin adlarını əldə edən sorğunu icra edirik:

SELECT name FROM users;

users cədvəlindən name sütunu üzrə verilənlərin əldə edilməsi

Göründüyü kimi sorğunun nəticəsində bir neçə təkrarlanan ad mövcuddur: Emil, Zaur və Ellada.

Sorğunun nəticəsində təkrarlanan qiymətlərin aradan qaldırılması üçün DISTINCT açar sözündən istifadə edilir:

SELECT DISTINCT name FROM users;

təkrarlanan qiymətlərin aradan qaldırılması üçün DISTINCT açar sözündən istifadə

Verilənlərin cədvəldən şərtlərə görə əldə edilməsi

Verilənləri cədvəldən hər hansı şərtə görə əldə etmək üçün WHERE açar sözündən istifadə edilir. Məsələn, users cədvəlindən adı (name) Emil olan sətirləri əldə etmək üçün aşağıdakı sorğunu icra edirik:

SELECT * FROM users WHERE name = 'Emil';

users cədvəlindən adı Emil olan sətirlərin əldə edilməsi

AND və OR məntiqi operatorları

ANDOR məntiqi operatorlarından istifadə etməklə bir neçə şərt təyin etmək mümkündür. Məsələn, users cədvəlindən adı Emil və email-i x1@codecourse.info olan sətri əldə etmək üçün aşağıdakı sorğunu icra edək:

SELECT * FROM users WHERE name = 'Emil' AND email = 'x1@codecourse.info';

Yuxarıdakı sorğu AND açar sözü vasitəsilə hər iki şərti özündə birləşdirir və cədvəldən hər iki şərti təmin edən sətir(lər)i əldə edir:

users cədvəlindən adı Emil və e-poçtu x1@codecourse.info olan sətrin əldə edilməsi

Əgər bütün şərtlər doğru olmalıdırsa, onda AND məntiqi operatorundan istifadə edin. Əgər şərtlərdən heç olmasa biri doğru olmalıdırsa, onda OR məntiqi operatorundan istifadə edirik:

SELECT * FROM users WHERE name = 'Emil' OR email = 'admin@codecourse.info';

users cədvəlindən adı Emil olan sətirlərin əldə edilməsi

IN operatoru

IN operatoru vasitəsi ilə bir neçə OR məntiqi operatorunu əvəz etmək mümkündür. Məsələn, users cədvəlindən id-si 2, 4, 6, 8 olan istifadəçiləri əldə etmək üçün aşağıdakı sorğunu icra edək:

SELECT * FROM users WHERE id IN (2, 4, 6, 8);

Eyni nəticəni aşağıdakı sorğu ilə də əldə etmək olardı:

SELECT * FROM users WHERE id = 2 OR id = 4 OR id = 6 OR id = 8;

Göründüyü kimi IN operatoru ilə işləmək daha rahatdır.

BETWEEN operatoru

BETWEEN operatoru müəyyən diapazonu və ya aralığı təyin edir. Məsələn, users cədvəlindən yaşı 30-37 aralığında olan istifadəçiləri əldə edən sorğu aşağıdakı kimi olacaq:

SELECT * FROM users WHERE age BETWEEN 30 AND 37;

Şablon üzrə axtarış

Verilənlər bazasında məlumatların şablon üzrə axtarışı üçün LIKE operatorundan istifadə edilir. Sözügedən operator %_ xüsusi simvolları ilə birgə işlənir. % simvolu istənilən sayda simvol üçün şablon hesab edilir. _ simvolu isə istənilən bir simvol üçün şablon hesab edilir. Hər iki simvolu şablonun istənilən hissəsində yerləşdirmək mümkündür. users cədvəlindən adında r simvolu olan bütün məlumatları əldə edən sorğu aşağıdakı kimi olacaq:

 SELECT * FROM users WHERE name LIKE "%r%";

Adının son hərfi a ilə bitən istifadəçiləri əldə edən sorğu aşağıdakı kimi olacaq:

 SELECT * FROM users WHERE name LIKE "%a";

users cədvəlinin adının dördüncü hərfi i olan istifadəçiləri əldə edək:

SELECT * FROM users WHERE name LIKE "___i%";

LIMIT və OFFSET

LIMIT açar sözündən istifadə edərək böyükhəcmli verilənlər blokundan yalnız müəyyən sətirləri əldə edə bilərik. Təsəvvür edək ki, cədvəldə 1000 sətir mövcuddur, lakin bizə yalnız 10 sətir lazımdır. Bu vaxt LIMIT operatoru köməyimizə gəlir. Bu, böyükhəcmli məlumatların axtarışı vaxtı məhsuldarlığa böyük təsir göstərir. Cədvəlimizdən yalnız ilk iki istifadəçini geri qaytaran sorğu belə olacaq:

SELECT * FROM users LIMIT 2;

LIMIT açar sözü

Cədvəldən göstərilmiş sayda sətirləri buraxmaq üçün OFFSETaçar sözündən istifadə edirik:

SELECT * FROM users LIMIT 4 OFFSET 3;

offset operatoru

Göründüyü kimi OFFSET açar sözünün köməyilə ilk 3 sətri buraxdıq və LIMIT ilə cədvəldən geri qaytarılan 4 sətri əldə etdik.

LIMITOFFSET vasitəsilə məlumatların səhifələrə bölünməsi (pagination) reallaşdırılır.

ORDER BY sıralama operatoru

ORDER BY operatoru cədvəldən əldə edilən qiymətləri sütunlar üzrə sıralayır. Sözügedən operator məlumatları başlanğıc parametr kimi artan sıra (ASC) üzrə sıralayır. Məsələn, aşağıdakı sorğu users cədvəlindən əldə edilən məlumatları age sütunu üzrə sıralayır:

SELECT * FROM users ORDER BY age;

artan sıra üzrə sıralama

Məlumatları azalan sıra ilə sıralamaq üçün DESC açar sözündən istifadə edirik:

SELECT * FROM users ORDER BY age DESC;

azalan sıra üzrə sıralama

0

Şərh yazmaq üçün hesabınıza daxil olun.