Deməli, artıq SELECT ilə tanış olmağa başlamışıq, SQL-də cədvəldən və ya bir neçə cədvəldən məlumat çıxarmaq üçün istifadə olunan komanda. Bunu belə təsəvvür et: sanki database üçün brauzerdəki F5 düyməsidir: "nə var, göstər". Sadə sorğu strukturu belə görünür:
SELECT kolonka1, kolonka2, … kolonkaN
FROM cedvel
Burada:
SELECT— sorğunun başladığı açar sözdür.kolonka1, kolonka2, ...— hansı sütunlardan məlumat almaq istədiyini göstərən siyahıdır.FROM cedvel— məlumatın çıxarıldığı cədvəli göstərir.
Gəlin bunu dərhal nümunələrlə hissələrə bölək!
SELECT komandasının əsas strukturu
Bütün sütunlardan seçim. Əgər sən bütün məlumatları cədvəldən görmək istəyirsənsə, ulduz * istifadə edə bilərsən. Məsələn, bizdə students cədvəli var:
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Bu cədvəldən bütün məlumatları çıxarmaq üçün belə sorğu yazırsan:
SELECT * FROM students
Və nəticədə belə bir sütun və sətir dəsti alırsan:
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Yəni — bütün cədvəl, necə istəmisənsə elə də gəlir.
Konkret sütunların seçilməsi
Əlbəttə, çox vaxt sənə yalnız lazım olan sütunları seçmək lazımdır ki, artıq məlumatlar gəlməsin. Məsələn, sən adları və yaşı bilmək istəyirsən. Onda belə sorğu yazırsan:
SELECT name, age FROM students
Sorğunun nəticəsi belə olacaq:
| name | age |
|---|---|
| Alex | 17 |
| Maria | 19 |
| Otto | 21 |
Fərqi hiss etdin? Yalnız lazım olan sütunları seçəndə sorğu həm daha sürətli, həm də daha səliqəli olur.
Sorğunun icra ardıcıllığı
SQL-sorğular bir az hiyləgərdir: biz SELECT yazırıq əvvəl, amma əslində ilk FROM hissəsi işlənir, sonra nəticə qaytarılır. Bu, arxa planda belə olur:
FROMhissəsindəki cədvəl işlənir: server göstərilən cədvəli tapır.- Sətirlərə şərtlər tətbiq olunur (əgər varsa): yalnız şərtlərə uyğun sətirlər seçilir.
- Göstərilən sütunlar seçilir: qalan sətirlərdən lazım olan məlumatlar çıxarılır.
Yəni belə komandada:
SELECT name FROM students
Əvvəlcə server students cədvəlini tapacaq, sonra name sütununu oxuyacaq və yalnız bundan sonra nəticəni qaytaracaq.
Praktik nümunələr
Nümunə №1: Tələbələrin siyahısı.
Təsəvvür elə ki, sən universitetin adminisən və bütün tələbələrin adlarını bilmək istəyirsən. Sorğu belədir:
SELECT name
FROM students;
Nəticə:
| name |
|---|
| Alex |
| Maria |
| Otto |
Nümunə №2: Yaş və id əlavə edirik.
İndi sənə id, ad və yaş lazımdır. Sadəcə bir neçə sütun əlavə et:
SELECT name, age, id
FROM students;
Nəticə:
| name | age | id |
|---|---|---|
| Alex | 17 | 1 |
| Maria | 19 | 2 |
| Otto | 21 | 3 |
Nümunə №3: İfadələr əlavə edirik.
Tutaq ki, tələbələrin yetkinliyə çatmasına neçə il qaldığını bilmək istəyirsən.
Onda age əvəzinə 21-age yazırsan. Burada gözəllik üçün fərz etdik ki, yetkinlik 21 yaşda olur:
SELECT name, 21-age
FROM students;
Və nəticə belə olacaq:
| name | 21-age |
|---|---|
| Alex | 4 |
| Maria | 2 |
| Otto | 0 |
İfadələr barədə daha ətraflı növbəti dərslərdə öyrənəcəksən. İndi isə gəlin bəzi tipik səhvlərə baxaq, bəziləriniz artıq rast gəlmisiniz.
SELECT istifadə edərkən tipik səhvlər
Cədvəl və sütun adlarında yazı səhvləri.
Ən çox rast gəlinən səhvlərdən biri — cədvəl və ya sütun adını səhv yazmaqdır.
Əgər database-də studentsz cədvəli yoxdursa, belə bir səhv alacaqsan:
SELECT name
FROM studentsz; -- Sehv: cedvel yoxdur!
Və ya sütunun adı name olduğu halda sən student_name yazsan, yenə səhv çıxacaq:
SELECT student_name -- Sehv: sutun yoxdur!
FROM students;
Çarə sadədir: həmişə cədvəl və sütun adlarını yoxla.
Sorğuda sintaksis səhvləri.
Başqa bir tipik səhv — sütunları yazanda vergül qoymağı unutmaqdır:
SELECT name age id -- Sehv: vergul yoxdur!
FROM students;
Amma narahat olma. SELECT sorğusu sadəcə məlumat seçir. Belə sorğulardakı səhvlər database-dəki məlumatlara zərər verə bilməz. Amma məlumatı dəyişən sorğulara çatanda — bax onda səhvlər baha başa gələ bilər.
* əvəzinə konkret sütunlardan istifadə etməmək.
* istifadə edəndə BÜTÜN məlumatları çıxarırsan, hətta lazım olmayanları da. Bu, performansı azaldır və böyük cədvəllərdə problem yarada bilər. Həmişə yalnız həqiqətən lazım olan sütunları seç.
GO TO FULL VERSION