Skl sorğuları. MySQL verilənlər bazasına SQL sorğularının nümunələri. SQL sorğusu: qeydlərin qruplaşdırılması

SQL - SELECT bəyanatı

Adı SQL (Strukturlaşdırılmış Sorğu Dili) strukturlaşdırılmış sorğular) sorğuların SQL-in ən çox istifadə olunan elementi olması faktını əks etdirir. Sorğu müəyyən məlumatları manipulyasiya etmək və ya göstərmək üçün Verilənlər Bazasının İdarəetmə Sisteminə (DBMS) əmr göndərən bir ifadədir. SQL-də verilənləri seçmək üçün bütün sorğular SELECT ifadəsindən istifadə etməklə qurulur. Bu, kifayət qədər mürəkkəb yoxlamalar və məlumatların işlənməsini həyata keçirməyə imkan verir.

Sorğu müəyyən bir sütundan və ya cədvəlin bütün sütunlarından məlumatları qaytara bilər. Sadə SEÇİM sorğusu yaratmaq üçün sütun adını və cədvəl adını göstərməlisiniz.

SELECT bəyanatının sintaksisi

Cədvəl_adından sütun_siyahısını SEÇİN

SEÇİN Verilənlər bazasına ifadənin sorğu olduğunu bildirən açar söz. Bütün sorğular bu sözlə başlayır, ardınca isə boşluq qoyulur.

Sütun_siyahısı Sorğu ilə seçilən cədvəl sütunlarının siyahısı. Bəyanatda göstərilməyən sütunlar nəticəyə daxil edilməyəcək. Bütün sütunlardan məlumatları göstərmək lazımdırsa, stenoqrafiya qeydindən istifadə edə bilərsiniz. Ulduz işarəsi (*) deməkdir tam siyahı sütunlar.

cədvəl_adından Hər sorğuda olması lazım olan açar söz. Ondan sonra boşluqla ayrılaraq məlumat mənbəyi olan cədvəlin adı göstərilir.

Mötərizədə olan kod SELECT ifadəsində isteğe bağlıdır. Daha çoxu üçün lazımdır dəqiq tərif xahiş.

SQL kodunun böyük hərflərə həssas olmadığını da söyləmək lazımdır. Bu o deməkdir ki, SELECT qeydi seçilmiş kimi yazıla bilər. DBMS bu iki qeyd arasında fərq qoymayacaq, lakin hamı məsləhət görür SQL ifadələri yaz böyük hərflərlə digər kodlardan asanlıqla fərqləndirmək üçün.

Nümunələr üçün Martin Qraberin klassik SQL dərsliyindən Satıcılar cədvəlinə baxaq.
Test cədvəlini yaratmaq üçün MySQL kodu budur:

CƏDVƏL YARADIN `satış işçiləri` (`snum` INTEGER(11) NULL DEYİL AUTO_INCREMENT, `sname` VARCHAR(20) COLLATE cp1251_general_ci DEFAULT NULL, `city` VARCHAR(20) COLLATE_general_cp15` 15,3) DEFAULT NULL, PRIMARY KEY (`snum`))MÜHƏRHƏTÇİ=InnoDB XARAKTER DƏSTƏSİ "cp1251" COLLATE "cp1251_general_ci" COMMENT="InnoDB pulsuz: 5120 kB"; INSERT INTO `salespeople` (`snum`, `sname`, `city`, `comm`) DƏYƏRLƏR (1001,"Peel","London",0,120), (1002,"Serres","San Jose",0,130 ), (1003,"Axelrod","Nyu-York",0,100), (1004,"Motika","London",0,110), (1007,"Rifkin","Barselona",0,150); ÖDƏNİŞ;

Cədvəl belə görünür:

SELECT ifadəsindən istifadə nümunəsi

1. Satıcıların siyahısını göstərmək və onların adlarını (adı) göstərmək lazımdır.

Satıcılardan ad SEÇİN

Nəticə:

Burada SELECT ifadəsindən sonra göstərilməli olan sütunlar sıralanır. Sütun adları vergüllə ayrılır.

3. Siz bütün cədvəli göstərməlisiniz

Bunun üçün sorğu yazmaq üçün müxtəlif sintaksisdən istifadə edə bilərsiniz. SELECT ifadəsindən sonra hər bir sütunu sadalayaq:

Satıcılardan snum , ad , şəhər , comm SEÇİN

Və ya stenoqrafiya qeydindən istifadə edərək eyni nəticəyə nail ola bilərsiniz:

Satıcı Nəticəsindən * SEÇİN:

snumadşəhərcomm
1001 SoymaqLondon0,12
1002 SerresSan Xose0,13
1003 AxelrodNyu York0,1
1004 MotikaLondon0,11
1007 RifkinBarselona0,15
Mən də bir az məsləhət vermək istərdim. Sorğuları aradan qaldırmağı asanlaşdırmaq üçün bəzi insanlar ayrıca sətirdə göstərilməli olan sütunların siyahısını yazır. Bu, kodu şərh etməyi asanlaşdırır. SQL-də kodu şərh etmək üçün aşağıdakı sintaksis istifadə olunur - /* şərh kodu */ Nümunə: SELECT snum , sname , city , comm FROM Salespeople.

Bu, 4 sütun göstərəcək, lakin bu girişlə asanlıqla şərh verə bilərsiniz lazımsız sütun. Məsələn, bu kimi:

SEÇİN /* snum , */ ad , şəhər , comm FROM Satıcılardan

İndi snum sütunu şərh edildiyi üçün çap edilməyəcək. Çox sürətli və rahatdır.

SQL kodunu necə yazmaq əlbəttə sizə bağlıdır, lakin belə şeyləri bilmək bəzən faydalı olur.

SELECT bəyanatında ifadələrdən istifadə Bir çox DBMS təmin edir xüsusi xüsusiyyətlər sorğu nəticələrinin işlənməsi üçün. Müxtəlif DBMS-lərdə belə alətlər dəsti fərqlidir, lakin bəziləri var standart xüsusiyyətlər ifadələr kimi. Məsələn, sadə icra etmək lazım ola bilər riyazi əməliyyatlar sorğunun nəticəsi.

SQL, SELECT bəndlərindəki sütunları tamamlaya və ya əvəz edə bilən seçilmiş sütunlar arasında skalyar ifadələr və sabitləri yerləşdirməyə imkan verir. Bir nümunəyə baxaq.

4. Satıcıların komissiyalarını (comm) onluq rəqəmlərlə deyil, faizlərlə göstərmək lazımdır

Nəticə:

snumadşəhərcomm
1001 SoymaqLondon12
1002 SerresSan Xose13
1003 AxelrodNyu York10
1004 MotikaLondon11
1007 RifkinBarselona15
SEÇİN Snum, ad, şəhər, comm * 100 Satıcılardan

Son sütunda bütün alınan məlumatlar 100-ə vurulur və faizlə göstərilir.

Bu sütunun adı yoxdur, çünki o, dəyişdirilmiş məlumatları ehtiva etmir və buna görə də DBMS-nin mülahizəsinə görə adlandırılır (məsələn, MySQL sütunu comm * 100 adlandırır, M. Grabberin nümunələrində sütun 4 adlandırılır, yəni onun nömrəsi). Belə hallarda istifadə etmək rahatdır sütunun adlandırılması . Məsələn, son sütunu faiz adlandıra bilərsiniz. Bunun üçün sütun adından sonra siz qeyd etməlisiniz açar söz

AS və sonra ortaya çıxan səhifədə sütun adı.

snumadşəhərSELECT snum, name, city, comm * 100 AS "faiz" Satıcılardan Nəticə:
1001 SoymaqLondon12
1002 SerresSan Xose13
1003 AxelrodNyu York10
1004 MotikaLondon11
1007 RifkinBarselona15

faiz

Sorğunun nəticəsi sonuncu sütunu "faiz" cərgəsi kimi adlandırır və bunu başa düşməyi asanlaşdırır. Rəqəm faizlə göstərildiyi üçün nəticədə bunu qeyd etmək yaxşı olardı. SQL qabiliyyəti xilasetmə işinə gəlir nəticəyə mətn əlavə edin

. Bu belə görünür:

snumadşəhərSELECT snum, name, city, comm * 100 AS "faiz" Satıcılardan Nəticə:%
1001 SoymaqLondon12 %
1002 SerresSan Xose13 %
1003 AxelrodNyu York10 %
1004 MotikaLondon11 %
1007 RifkinBarselona15 %

SELECT snum, ad, şəhər, comm * 100 AS faiz , Satıcılardan "%" Nəticə: Görünür ki, verilənlər bazasından bir sətir çıxardıqdan sonra, yeni sütun

, faiz işarəsi (%) ilə doldurulur. Verilənlərin və əlavə mətnin çıxışı sizi qane etmirsə müxtəlif sütunlar , sonra istifadə edə bilərsiniz xüsusi funksiyalar

Bir sütunda birləşdirmək üçün DBMS. MySQL bunun üçün funksiyadan istifadə edir CONCAT

. İstinad kitabından onun tərifini təqdim edirik:
CONCAT(str1,str2,...)

Arqumentlərin birləşməsinin nəticəsi olan sətri qaytarır. Arqumentlərdən ən azı biri NULL olarsa, NULL qaytarılır. 2-dən çox arqument götürə bilər. Rəqəmsal arqument onun ekvivalent sətir formasına çevrilir.

snumadşəhərNümunə: SELECT snum, sname, city , CONCAT(comm * 100, "%") AS "davamlı" olaraq satıcılardan Nəticə:
1001 SoymaqLondon12.000%
1002 SerresSan Xose13.000%
1003 AxelrodNyu York10.000%
1004 MotikaLondon11.000%
1007 RifkinBarselona15.000%

davamlı IN bu xahiş

, CONCAT funksiyası 2 arqument qəbul edir, bunlar comm * 100 və faiz işarəsidir ("%"). Bundan sonra sütunu AS istifadə edərək adlandırırıq. Funksiyalardan istifadənin performansı aşağı saldığını bilmək vacibdir. Bu yeganə çatışmazlıq deyil, lakin çox vacibdir. Buna görə də, əldə edə bilsəniz standart kod

SQL, funksiyalardan istifadə etməmək daha yaxşıdır. Onlar yalnız ekstremal hallarda xatırlanmalıdır.

Çox vaxt sorğu nəticələrindən dublikat dəyərləri istisna etmək lazımdır. Bunun üçün DISTINCT açar sözündən istifadə edin. Defolt olan ALL sözünün istifadəsi (yəni onu qeyd etmək lazım deyil) əks effekt verir.

5. Satıcıların olduğu şəhərləri göstərmək lazımdır

İstisnasız sorğu:

Satıcılardan şəhər SEÇİN Nəticə:

Dublikat London dəyərləri tələb olunduğu kimi nəticədən çıxarılır.

Nəticəni dəyərlərə görə sütunlara görə sıralayın

SELECT ifadəsi məlumatları istənilən ardıcıllıqla göstərir. Nəticəni müəyyən bir sütuna görə çeşidləmək üçün SQL ORDER BY operatorundan istifadə edir (yəni, sırala...). Bu operator məlumatların çıxış sırasını dəyişməyə imkan verir. SİPARİŞ BY sorğu nəticəsini seçilmiş bir və ya bir neçə sütunun dəyərlərinə uyğun sifariş edir SELECT bəndi. Bu halda, hər bir sütun üçün çeşidləməni artan qaydada (ASC) (bu parametr standart olaraq istifadə olunur) və ya azalan qaydada – azalan (DESC) təyin edə bilərsiniz.

Nəticəni sname sütununa görə sıralayaq. ORDER BY operatorundan sonra hansı sütuna görə çeşidləyəcəyimizi göstəririk, sonra çeşidləmə üsulunu göstərməlisiniz.

Misal - artan qaydada çeşidləmə:

Satıcılardan * SEÇİN ASC adı ilə SİFARİŞ EDİN

Nəticə:


Nümunə - birdən çox sütun üzrə çeşidləmə:

Satıcılardan snum, sname, şəhər SEÇİN SAD DESC, şəhər DESC Nəticə:

snumadşəhər
1002 SerresSan Xose
1007 RifkinBarselona
1001 SoymaqLondon
1004 MotikaLondon
1003 AxelrodNyu York

Bəziləri mühüm şərhlər:
- çeşidləmənin baş verdiyi sütun SEÇİM-də göstərilməlidir (* istifadə edə bilərsiniz)
- ORDER BY ifadəsi həmişə sorğunun sonunda yazılır

Siz proqramlaşdırmada yenisiniz və ya keçmişdə sadəcə SQL öyrənməkdən yayınmısınız? Sonra rastlaşdın doğru ünvana, çünki hər hansı bir tərtibatçı nəticədə bu sorğu dilini bilmək ehtiyacı ilə üzləşir. Siz əsas verilənlər bazası dizayneri olmaya bilərsiniz, lakin onlarla işləməkdən qaçmaq demək olar ki, mümkün deyil. Ümid edirəm bu qısa icmaləsas SQL sorğularının sintaksisi maraqlı tərtibatçıya və ehtiyacı olan hər kəsə kömək edəcəkdir.

Baza nədir SQL məlumatları?

Strukturlaşdırılmış dil sorğular (Structured Query Language) ANSI tərəfindən dəstəklənən verilənlər bazası rabitə standartıdır. Ən çox son versiya– SQL-99 yeni standart SQL-200n artıq inkişaf mərhələsindədir. Əksər verilənlər bazası ANSI-92 standartına möhkəm uyğun gəlir. Daha çoxunun təqdim edilməsi ilə bağlı çoxlu müzakirələr aparılıb müasir standartlar, lakin kommersiya verilənlər bazası təchizatçıları saxlanılan məlumatların saxlanması üçün yeni konsepsiyalarla bundan uzaqlaşırlar. Demək olar ki, hər bir verilənlər bazası bəzilərindən istifadə edir unikal dəst sintaksis, baxmayaraq ki, ANSI standartına çox oxşardır. Əksər hallarda, bu sintaksis əsas standartın uzantısıdır, baxmayaraq ki, bu sintaksis müxtəlif verilənlər bazaları üçün fərqli nəticələr verir. Xüsusilə gözlənilməz nəticələr əldə edirsinizsə, verilənlər bazası sənədlərini nəzərdən keçirmək həmişə yaxşı bir fikirdir.

Əgər SQL-də yenisinizsə, başa düşməli olduğunuz bəzi əsas anlayışlar var.

Ümumiyyətlə, "SQL verilənlər bazası" ümumi adüçün əlaqə sistemi verilənlər bazası idarəetməsi (RDBMS). Bəzi sistemlər üçün "verilənlər bazası" həm də mahiyyətcə olan cədvəllər, verilənlər, konfiqurasiya məlumatları qrupuna aiddir. ayrı hissə digər oxşar dizaynlardan. Bu vəziyyətdə hər bir quraşdırma SQL verilənlər bazası məlumatlar bir neçə verilənlər bazasından ibarət ola bilər. Digər sistemlərdə onlara cədvəllər deyilir.

Cədvəl verilənlər sətirlərini ehtiva edən sütunlardan ibarət verilənlər bazası strukturudur. Tipik olaraq cədvəllər ehtiva etmək üçün yaradılır əlaqəli məlumatlar. Eyni verilənlər bazasında bir neçə cədvəl yaradıla bilər.

Hər bir sütun işçilərin identifikasiya nömrələri, boy, avtomobil rəngi və s. kimi obyektlərin atributunu və ya atributları dəstini təmsil edir. Tez-tez sahə termini sütuna istinad etmək üçün istifadə olunur, ardınca "Ad sahəsində" kimi bir ad gəlir. Sətir sahəsidir minimal element masalar. Cədvəldəki hər bir sütunun xüsusi adı, məlumat növü və ölçüsü var. Sütun adları cədvəl daxilində unikal olmalıdır.

Hər bir sətir (və ya qeyd) müəyyən bir obyektin atributlarının toplusunu təmsil edir, məsələn, bir xətt ola bilər identifikasiya nömrəsi işçi, əmək haqqının məbləği, doğulduğu il və s. Cədvəl sətirlərinin adları yoxdur. Müəyyən bir sıraya daxil olmaq üçün istifadəçi onu unikal şəkildə müəyyən edən bəzi atribut (və ya atributlar dəsti) göstərməlidir.

biri kritik əməliyyatlar verilənlərlə işləyərkən yerinə yetirilən , verilənlər bazasında saxlanılan məlumatların seçilməsidir. Bunun üçün istifadəçi sorğu yerinə yetirməlidir.

İndi verilənlər bazası daxilində verilənlərin manipulyasiyasına diqqət yetirən verilənlər bazası sorğularının əsas növlərinə baxaq. Bizim məqsədlərimiz üçün bütün nümunələr istənilən mühitə uyğun standart SQL-də təqdim olunur.

Məlumat sorğularının növləri

SQL-də Data Manipulation Language (DML) adlanan dörd əsas məlumat sorğusu növü vardır:
SELECT – cədvəllərdən sətirləri seçin;
INSERT – cədvələ sətirlər əlavə etmək;
YENİLƏNİB – cədvəldə sətirlərin dəyişdirilməsi;
DELETE – cədvəldəki sətirləri silin;

Bu sorğuların hər biri var müxtəlif operatorlar və verilənlərlə bəzi hərəkətləri yerinə yetirmək üçün istifadə edilən funksiyalar. SELECT sorğusunda ən çox sorğu var çox sayda seçimlər. Həmçinin var əlavə növlər JOIN və UNION kimi SELECT ilə birlikdə istifadə edilən sorğular. Ancaq hələlik biz yalnız əsas sorğulara diqqət yetirəcəyik.

İstədiyiniz məlumatları seçmək üçün SELECT sorğusundan istifadə edin

Verilənlər bazasında saxlanılan məlumatları əldə etmək üçün istifadə olunur SELECT sorğusu. Əsas Fəaliyyət Bu sorğu bir cədvəllə məhdudlaşır, baxmayaraq ki, eyni vaxtda bir neçə cədvəldən nümunə götürməyə imkan verən dizaynlar var. Xüsusi sütunlar üçün bütün məlumat sətirlərini əldə etmək üçün belə bir sorğu istifadə olunur:
SEÇİN sütun1, sütun2 cədvəl_adından;

Həmçinin, istifadə edərək cədvəldən bütün sütunları əldə edə bilərsiniz joker simvol «*»:
SEÇİN * cədvəl_adından;

Müəyyən bir məlumat seçəcəksinizsə, bu faydalı ola bilər HARA vəziyyət. Aşağıdakı sorğu "sütun1"in "3" dəyərini ehtiva etdiyi bütün sətirlərdən bütün sütunları qaytaracaq:
SEÇİN * cədvəl_adından HARADA sütun1=3;

“=” (bərabər) ilə yanaşı, aşağıdakı şərti operatorlar da mövcuddur:

Şərti ifadələr:
= Bərabər
<>Bərabər deyil
> Daha çox
< Меньше
>= böyük və ya bərabərdir
<= Меньше или равно

Bundan əlavə, siz BITWEEN və LIKE şərtlərindən, həmçinin AND və OR operatorlarının kombinasiyaları ilə WHERE şərti ilə müqayisə etmək üçün istifadə edə bilərsiniz.
* Cədvəl_adından SEÇİN ((Yaş >= 18) VƏ (Soyad 'İvanov' VƏ 'Sidorov' ARASINDA)) VEYA '%Motorola%' KİMİ Şirkət;

Rus tərcüməsində nə deməkdir: cədvəl_adı cədvəlindən bütün sütunları seçin, burada yaş sütununun dəyəri 18-dən böyük və ya bərabərdir və Soyad sütununun dəyəri İvanovdan Sidorova qədər əlifba sırasındadır və ya dəyər Şirkətin sütunu Motoroladır.

Yeni məlumat daxil etmək üçün INSERT sorğusundan istifadə edin

INSERT sorğusu yaratmaq üçün istifadə olunur yeni xətt data. Mövcud məlumatları və ya boş cərgə sahələrini yeniləmək üçün YENİLƏNMƏ sorğusundan istifadə etməlisiniz.

Nümunə INSERT sorğu sintaksisi:
cədvəl_adı INSERT INTO (sütun1, sütun2, sütun3) VALUES ('data1', 'data2', 'data3');

Cədvəl sütunlarının göründüyü ardıcıllıqla bütün dəyərləri daxil etmək niyyətindəsinizsə, sütun adlarını buraxmaq istəyə bilərsiniz, baxmayaraq ki, bu oxunaqlılıq səbəblərinə görə üstünlük təşkil edir. Həmçinin, əgər siz sütunları siyahıya salırsınızsa, daxil etdiyiniz dəyərlər həmin sıraya uyğun gəldiyi müddətcə onları verilənlər bazasında göründükləri sıra ilə sadalamaq məcburiyyətində deyilsiniz. Məlumatı olmayan sütunları siyahıya salmamalısınız.

Artıq dəyişir mövcud məlumatlar verilənlər bazasında çox oxşar şəkildə.

YENİLƏNİB Sorğu və HARADA Vəziyyəti

UPDATE mövcud dəyərləri dəyişdirmək və ya bir sıra sahəni boşaltmaq üçün istifadə olunur, buna görə də yeni dəyərlər uyğun olmalıdır mövcud növü məlumatları və məqbul dəyərləri təmin edir. Bütün sətirlərdəki dəyərləri dəyişmək istəmirsinizsə, onda WHERE bəndindən istifadə etməlisiniz.
YENİLƏNİB cədvəl_adı SET sütun1 = 'məlumat1', sütun2 = 'məlumat2' HARADA sütun3 = 'data3';

Dəyişmək istədiyiniz sütun da daxil olmaqla istənilən sütunda WHERE istifadə edə bilərsiniz. Bu, bir xüsusi dəyəri digəri ilə əvəz etmək lazım olduqda istifadə olunur.
UPDATE table_name SET FirstName = 'Vasily' WHERE FirstName = 'Vasily' AND LastName = 'Balqabaq';

Ehtiyatlı olun! DELETE sorğusu bütün sətirləri silir

SİL sorğusu verilənlər bazasından bir sıranı tamamilə silir. Tək bir sahəni silmək istəyirsinizsə, YENİLƏNMƏ sorğusundan istifadə etməli və bu sahəni proqramınızda NULL-ə analoji olacaq dəyərə təyin etməlisiniz. Ehtiyatlı olun ki, DELETE sorğunuzu WHERE bəndi ilə məhdudlaşdırın, əks halda cədvəlin bütün məzmununu itirə bilərsiniz.
Cədvəl_adından SİLİN HARADA sütun1 = 'data1';

Sətir verilənlər bazanızdan silindikdən sonra onu bərpa etmək mümkün deyil, ona görə də “IsActive” adlı bir sütunun və ya buna bənzər bir sütunun olması məsləhətdir, onu null olaraq dəyişdirə bilərsiniz ki, bu da məlumatların görünüşünün o sıra kilidlidir.

İndi bilirsiniz SQL əsasları sorğular

SQL verilənlər bazası dilidir və biz ən mühüm və əsas əmrlər, məlumat sorğularında istifadə olunur. Burada əhatə olunmayan bir çox əsas anlayışlar var (məsələn, SUM və COUNT), lakin yuxarıda sadalaya bildiyimiz bir neçə əmr sizi aktiv olmağa və SQL adlı gözəl sorğu dilini daha dərindən öyrənməyə təşviq etməlidir.

Operator SQL dili SELECT verilənlər bazasından məlumat seçmək üçün sorğular üçün nəzərdə tutulub. O, ya şərtsiz (bütün sütunlardakı bütün sətirləri və ya müəyyən sütunlardakı bütün sətirləri seçməklə) və ya bir neçə şərtlə (seçməklə) istifadə edilə bilər. müəyyən xətlər), WHERE bəndində göstərilmişdir. Gəlin tanış olaq SQL istifadə edərək, məlumatların seçilməsi üçün bu şərtləri təyin etmək üçün istifadə edilə bilər və biz həmçinin alt sorğularda SELECT operatorundan necə istifadə edəcəyimizi öyrənəcəyik.

Cədvəl sütunlarını seçmək üçün SEÇ

Cədvəlin bütün sütunlarını seçmək üçün SELECT ifadəsi olan sorğu aşağıdakı sintaksisə malikdir:

TABLE_NAMEDƏN * SEÇİN

Yəni cədvəlin bütün sütunlarını seçmək üçün SELECT sözündən sonra ulduz işarəsi qoymaq lazımdır.

Misal 1.Şirkət məlumat bazası var - Şirkət. Bu cədvəldə Org (Şirkət Strukturu) və İşçilər (İşçilər) var. Cədvəllərdən bütün sütunları seçməlisiniz. Təşkilat cədvəlindən bütün sütunları seçmək üçün müvafiq sorğu aşağıdakı kimidir:

ORG-DAN * SEÇİN

Bu sorğu aşağıdakıları qaytaracaq (şəkili böyütmək üçün üzərinə sol klikləyin):

İşçilər cədvəlindən bütün sütunları seçmək üçün sorğu belə görünür:

KİŞİDƏN * SEÇİN

Bu sorğu aşağıdakıları qaytaracaq:


Xüsusi cədvəl sütunlarını seçmək üçün ulduz əvəzinə, seçilməli olan bütün sütunların adlarını vergüllə ayırmalıyıq:

TABLE_NAMEDƏN SEÇİLƏBİLƏN_SÜTUNLAR SEÇİN

Misal 2. Tutaq ki, təşkilat cədvəlindən şirkətin şöbələrinin nömrələri və onların adları haqqında məlumatları ehtiva edən Depnumb və Deptname sütunlarını seçməlisiniz. Belə bir nümunə əldə etmək üçün sorğu aşağıdakı kimi olacaq:

ORG-DAN DEPNUMB, DEPTNAME SEÇİN

Və Kadrlar cədvəlindən müvafiq olaraq işçinin işlədiyi şöbənin nömrəsi, adı və vəzifəsi haqqında məlumatları ehtiva edən DEPT, NAME, JOB sütunlarını seçməlisiniz:

SELECT və ORDER BY - sıraların çeşidlənməsi (sifarişi).

Hələ sökülüb SQL sorğuları SELECT istənilən sırada ola biləcək sətirləri qaytardı. Bununla belə, siz tez-tez sıraları ədədi sıraya, əlifbaya və digər meyarlara görə çeşidləməlisiniz. Bu, ORDER BY açar sözündən istifadə etməklə edilir. Belə sorğular aşağıdakı sintaksisə malikdir:

Misal 15. Tələb 84 nömrəli şöbədə işləyən işçiləri Ştat cədvəlindən seçmək və qeydləri iş illərinin sayına görə artan qaydada çeşidləmək (sifariş etmək) olsun:

ASC sözü çeşidləmə sırasının artan olduğunu göstərir. Bu söz isteğe bağlıdır, çünki artan sıralama standartdır. Müraciətin nəticəsi:


Misal 16. Tələb əvvəlki nümunədə olduğu kimi eyni məlumatları seçmək olsun, lakin qeydləri işlənmiş illərin sayına görə azalan qaydada çeşidləyin (tənzimləyin).

Sorğular qaçış dırnaqları olmadan yazılır, çünki MySQL, MS SQLPostGree onlar fərqlidirlər.

SQL sorğusu: cədvəldən müəyyən edilmiş (lazım olan) sahələrin alınması

Cədvəl_adından identifikator, ölkə_başlığı, adamların sayı SEÇİN

Biz qeydlərin siyahısını əldə edirik: BÜTÜN ölkələr və onların əhalisi. Tələb olunan sahələrin adları vergüllə ayrılaraq göstərilir.

Cədvəl_adından * SEÇİN

* bütün sahələri göstərir. Yəni şoular olacaq TAMAMİLƏ HƏR ŞEY məlumat sahələri.

SQL sorğusu: dublikatlar istisna olmaqla, cədvəldən qeydlərin çıxarılması

Cədvəl_adından fərqli ölkə_başlığı SEÇİN

Biz qeydlərin siyahısını alırıq: istifadəçilərimizin yerləşdiyi ölkələr. Bir ölkədən bir çox istifadəçi ola bilər. Bu halda sizin istəyinizdir.

SQL sorğusu: verilmiş şərt əsasında cədvəldən qeydlərin göstərilməsi

Cədvəl_adından identifikator, ölkə_başlığı, şəhər_başlığı SEÇİN HARADA_insanların sayı>100000000

Rekordların siyahısını alırıq: insanların sayı 100 000 000-dan çox olan ölkələr.

SQL sorğusu: cədvəldən qeydlərin sifarişlə göstərilməsi

Cədvəl_adından identifikator, şəhər_başlığı SİFARİŞ EDİN şəhər_başlığı

Rekordların siyahısını alırıq: şəhərlər əlifba sırası. Əvvəl A, sonunda Z.

Cədvəl_adından identifikator, şəhər_başlığı SEÇİN Şəhər_başlığı DESC

Qeydlərin siyahısını alırıq: tərs şəhərlər ( DESC) tamam. Əvvəldə I, sonunda A.

SQL sorğusu: qeydlərin sayının hesablanması

Cədvəl_adından COUNT(*) SEÇİN

Cədvəldəki qeydlərin sayını (sayısını) alırıq. IN bu halda Girişlərin siyahısı YOXDUR.

SQL sorğusu: istənilən qeydlər aralığının çıxarılması

Cədvəl_adından * SEÇİN LIMIT 2, 3

Cədvəldən 2 (ikinci) və 3 (üçüncü) qeyd alırıq. Sorğu WEB səhifələrində naviqasiya yaratarkən faydalıdır.

Şərtlərlə SQL sorğuları

Məntiqi operatorlardan istifadə edərək verilmiş şərt əsasında cədvəldən qeydlərin göstərilməsi.

SQL sorğusu: VƏ tikinti

Cədvəl_adından identifikator, şəhər_başlığı SEÇİN HARADA ölkə="Rusiya" VƏ neft=1

Rekordların siyahısını alırıq: Rusiyadan şəhərlər neft əldə etmək imkanı var. Operatordan nə vaxt istifadə etmək lazımdır , onda hər iki şərt uyğun olmalıdır.

SQL sorğusu: OR qurun

Cədvəl_adından identifikator, şəhər_başlığı SEÇİN HARADA ölkə = "Rusiya" VEYA ölkə = "ABŞ"

Biz qeydlərin siyahısını alırıq: Rusiyadan bütün şəhərlər YA ABŞ. Operatordan nə vaxt istifadə etmək lazımdır YA, onda ƏN AZAL bir şərt uyğun olmalıdır.

SQL sorğusu: VƏ tikinti DEYİL

İD, istifadəçi_girişini cədvəl_adından SEÇİN HARADA ölkə = "Rusiya" və şərhləri saymır<7

Biz qeydlərin siyahısını alırıq: Rusiyadan olan bütün istifadəçilər kim etdi AZ DEĞİL 7 şərh.

SQL sorğusu: IN tikinti (B)

İD SEÇİN, istifadəçi_girişini cədvəl_adından HARADA ölkə ("Rusiya", "Bolqarıstan", "Çin")

Biz qeydlərin siyahısını alırıq: yaşayan bütün istifadəçilər ( IN) (Rusiya, Bolqarıstan və ya Çin)

SQL sorğusu: tikintidə DEYİL

İD SEÇİN, istifadəçi_girişini cədvəl_adından DAXİL OLMAYAN ölkə ("Rusiya","Çin")

Biz qeydlərin siyahısını alırıq: yaşamayan bütün istifadəçilər ( DEYİL) (Rusiya və ya Çin).

SQL sorğusu: IS NULL konstruksiyası (boş və ya boş dəyərlər DEYİL)

SELECT id, user_login FROM table_name status NULL OLDUĞUNDA

Biz qeydlərin siyahısını alırıq: statusunun müəyyən edilmədiyi bütün istifadəçilər. NULL ayrı bir məsələdir və buna görə də ayrıca yoxlanılır.

SELECT id, user_login FROM table_name VHERE vəziyyət NULL OLMADI

Biz qeydlərin siyahısını alırıq: statusun müəyyən edildiyi bütün istifadəçilər (NULL DEYİL).

SQL sorğusu: tikinti kimi

İD, istifadəçi_girişini cədvəl_adından SEÇİN soyad "Ivan%" kimi

Biz qeydlərin siyahısını alırıq: soyadı "İvan" birləşməsi ilə başlayan istifadəçilər. % işarəsi HƏR SAYI HƏR simvol deməkdir. % işarəsini tapmaq üçün “İvan\%” qaçış düyməsini istifadə etməlisiniz.

SQL sorğusu: tikinti ARASINDA

25000 VƏ 50000 ARASINDA əmək haqqı masa_adından id, istifadəçi_girişini SEÇİN

Biz qeydlərin siyahısını alırıq: 25.000-dən 50.000-a qədər maaş alan istifadəçilər.

Çoxlu məntiqi operatorlar var, ona görə də SQL server sənədlərini ətraflı öyrənin.

Kompleks SQL sorğuları

SQL sorğusu: çoxsaylı sorğuların birləşdirilməsi

(SEÇ identifikatoru, masa_adı1-DƏN istifadəçi_girişi) BİRLİK (SEÇ id, masa_adı2-DƏN istifadəçi_girişi)

Biz girişlərin siyahısını alırıq: sistemdə qeydiyyatdan keçmiş istifadəçilər, həmçinin forumda ayrıca qeydiyyatdan keçmiş istifadəçilər. UNION operatoru çoxsaylı sorğuları birləşdirə bilər. UNION SELECT DISTINCT kimi fəaliyyət göstərir, yəni dublikat dəyərləri rədd edir. Tamamilə bütün qeydləri əldə etmək üçün UNION ALL operatorundan istifadə etməlisiniz.

SQL sorğusu: sahə dəyəri MAX, MIN, SUM, AVG, COUNT sayır

Cədvəldə bir, maksimum sayğac dəyəri göstərilir:

Cədvəl_adından MAX(sayğac) SEÇİN

Cədvəldə bir, minimum sayğac dəyərinin çıxışı:

cədvəl_adından MIN(sayğac) SEÇİN

Cədvəldəki bütün sayğac dəyərlərinin cəminin göstərilməsi:

Cədvəl_adından SUM(sayğac) SEÇİN

Cədvəldə orta sayğac dəyərinin göstərilməsi:

masa_adından AVG(sayğac) SEÇİN

Cədvəldə sayğacların sayı göstərilir:

Cədvəl_adından COUNT(sayğac) SEÇİN

Cədvəldə 1 nömrəli sexdə sayğacların sayının göstərilməsi:

Cədvəl_adından COUNT(sayğac) SEÇİN HARA ofis="Seminar №1"

Bunlar ən populyar komandalardır. Mümkünsə, hesablamalar üçün bu cür SQL sorğularından istifadə etmək tövsiyə olunur, çünki heç bir proqramlaşdırma mühiti öz məlumatlarını emal edərkən SQL serverinin özündən verilənlərin emal sürəti ilə müqayisə edilə bilməz.

SQL sorğusu: qeydlərin qruplaşdırılması

Qitəni SEÇİN, CƏMİ(ölkə_sahəsi) QRUP ÖLKƏLƏRDƏN qitələrə görə

Rekordların siyahısını alırıq: qitənin adı və bütün ölkələrinin ərazilərinin cəmi ilə. Yəni, əgər hər bir ölkənin ərazisinin qeydə alındığı ölkələrin kataloqu varsa, o zaman GROUP BY konstruksiyasından istifadə etməklə siz hər bir qitənin ölçüsünü (qitələr üzrə qruplaşdırma əsasında) öyrənə bilərsiniz.

SQL sorğusu: ləqəb vasitəsilə çoxlu cədvəllərdən istifadə

o.order_no, o.amount_paid, c.company FROM AS o, müştəri AS WHERE o.custno=c.custno AND c.city="Tyumen" ilə SEÇİN

Biz qeydlərin siyahısını alırıq: yalnız Tümendə yaşayan müştərilərdən sifarişlər.

Əslində, bu tip düzgün tərtib edilmiş verilənlər bazası ilə sorğu ən çox yayılmışdır, buna görə MySQL-ə yuxarıdakı yazılı koddan dəfələrlə daha sürətli işləyən xüsusi operator təqdim edilmişdir.

Sifarişlərdən o.sifariş_no, o.məbləği, z.şirkəti SEÇİN o SAL MÜŞTƏRİNƏ QOŞULUN z ON (z.custno=o.custno)

İç-içə alt sorğular

Cədvəl_adından * SEÇİN əmək haqqı=(işçidən MAX(maaş) SEÇİN)

Biz bir rekord alırıq: maksimum əmək haqqı olan istifadəçi haqqında məlumat.

Diqqət!İç-içə alt sorğular SQL serverlərindəki ən böyük darboğazlardan biridir. Çeviklikləri və gücü ilə birlikdə serverdəki yükü də əhəmiyyətli dərəcədə artırırlar. Bu, digər istifadəçilər üçün fəlakətli yavaşlamaya səbəb olur. Daxili sorğularda rekursiv çağırış halları çox yaygındır. Ona görə də mən iç-içə sorğulardan istifadə etməyi DEYİL, onları daha kiçiklərə bölməyi şiddətlə tövsiyə edirəm. Və ya yuxarıda təsvir edilən LEFT JOIN birləşməsindən istifadə edin. Bundan əlavə, bu tip sorğu təhlükəsizlik pozuntularının artması mənbəyidir. Əgər siz daxili alt sorğulardan istifadə etmək qərarına gəlsəniz, onda siz onları çox diqqətlə tərtib etməli və verilənlər bazalarının (test verilənlər bazaları) nüsxələrində ilkin əməliyyatlar etməlisiniz.

Məlumatı dəyişən SQL sorğuları

SQL sorğusu: INSERT

Təlimatlar INSERT cədvələ qeydlər daxil etməyə imkan verir. Sadə sözlə, cədvəldə verilənlərlə bir sıra yaradın.

Seçim №1. Tez-tez istifadə olunan təlimat:

INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")

masaya" masa_adı» Bir dəfəyə 2 (iki) istifadəçi daxil ediləcək.

Seçim №2. Stildən istifadə etmək daha rahatdır:

INSERT table_name SET id=1, user_login="ivanov"; INSERT table_name SET id=2, user_login="petrov";

Bunun öz üstünlükləri və mənfi cəhətləri var.

Əsas çatışmazlıqlar:

  • Bir çox kiçik SQL sorğuları bir böyük SQL sorğusundan bir qədər yavaş işləyəcək, lakin digər sorğular xidmət üçün növbəyə düşəcək. Yəni, böyük bir SQL sorğusunun tamamlanması 30 dəqiqə çəkirsə, bütün bu müddət ərzində qalan sorğular bambuk çəkəcək və öz növbəsini gözləyəcək.
  • Sorğunun əvvəlki versiyadan daha kütləvi olduğu ortaya çıxdı.

Əsas üstünlüklər:

  • Kiçik SQL sorğuları zamanı digər SQL sorğuları bloklanmır.
  • Oxumaq asanlığı.
  • Çeviklik. Bu seçimdə strukturu izləmək lazım deyil, yalnız lazımi məlumatları əlavə edin.
  • Arxivləri bu şəkildə yaradarkən siz asanlıqla bir sətri köçürə və onu komanda xətti (konsol) vasitəsilə işlədə bilərsiniz, bununla da bütün ARXİV bərpa olunmur.
  • Yazı üslubu UPDATE bəyanatına bənzəyir və yadda saxlamağı asanlaşdırır.

SQL sorğusu: YENİLƏNİB

Cədvəl_adı YENİLƏNİN user_login="ivanov", user_soyadı="İvanov" HARA id=1 SET

Cədvəldə " masa_adı"id=1 nömrəli qeyddə user_login və user_soyad sahələrinin dəyərləri göstərilən dəyərlərə dəyişdiriləcək.

SQL sorğusu: SİL

id=3 olan cədvəl_adından SİLİN

table_name cədvəlində id nömrəsi 3 olan qeyd silinəcək.

  1. Bütün sahə adlarını kiçik hərflərlə yazmaq və lazım gələrsə, Delphi, Perl, Python və Ruby kimi müxtəlif proqramlaşdırma dilləri ilə uyğunluq üçün onları məcburi boşluq “_” ilə ayırmaq tövsiyə olunur.
  2. Oxunma üçün SQL əmrlərini BÖYÜK hərflərlə yazın. Həmişə yadda saxlayın ki, kodu sizdən sonra başqa insanlar oxuya bilər və çox güman ki, siz də N vaxtdan sonra siz özünüz oxuya bilərsiniz.
  3. Sahələri əvvəlcə isimlə, sonra isə hərəkətlə adlandırın. Məsələn: şəhər_status, user_login, user_name.
  4. SQL, PHP və ya Perl-də (ad, say, link) kimi problemlər yarada biləcək müxtəlif dillərdə ehtiyat sözlərdən qaçmağa çalışın. Məsələn: link MS SQL-də istifadə oluna bilər, lakin MySQL-də qorunur.

Bu material gündəlik iş üçün qısa istinaddır və müəyyən verilənlər bazası üçün SQL sorğularının orijinal mənbəyi olan super meqa nüfuzlu mənbə kimi görünmür.

Beləliklə, forum bazamızda üç cədvəl var: istifadəçilər (istifadəçilər), mövzular (mövzular) və yazılar (mesajlar). Və onların hansı məlumatları ehtiva etdiyini görmək istəyirik. SQL-də bunun üçün bir operator var SEÇİN. Onun istifadəsi üçün sintaksis aşağıdakı kimidir:

SEÇ what_select FROM where_select;


"nə_seç" əvəzinə ya dəyərlərini görmək istədiyimiz sütunun adını, ya da vergüllə ayrılmış bir neçə sütunun adını, ya da cədvəlin bütün sütunlarının seçimini bildirən ulduz (*) simvolunu göstərməliyik. . "From_select" əvəzinə cədvəlin adını göstərməlisiniz.

Əvvəlcə istifadəçilər cədvəlindəki bütün sütunlara baxaq:

İstifadəçilərdən * SEÇİN;

Bu cədvələ daxil etdiyimiz bütün məlumatlarımız budur. Ancaq fərz edək ki, biz yalnız id_user sütununa baxmaq istəyirik (məsələn, son dərsdə mövzular cədvəlini doldurmaq üçün istifadəçilər cədvəlində hansı id_userlərin olduğunu bilməliyik). Bunu etmək üçün sorğuda bu sütunun adını göstərəcəyik:

İstifadəçilərdən id_user SEÇİN;

Yaxşı, məsələn, istifadəçilərimizin adlarını və e-poçtlarını görmək istəyiriksə, onda vergüllə ayrılmış maraq sütunlarını sadalayacağıq:

İstifadəçilərdən ad, e-poçt SEÇİN;

Eynilə, digər cədvəllərimizdə hansı məlumatları ehtiva etdiyini görə bilərsiniz. Görək hansı mövzularımız var:

Mövzulardan * SEÇİN;

İndi cəmi 4 mövzumuz var, bəs onlardan 100-ü olarsa necə? İstərdim ki, onlar, məsələn, əlifba sırası ilə göstərilsin. SQL-də bunun üçün açar söz var SİFARİŞ VERİN ardınca çeşidləmənin baş verəcəyi sütunun adı. Sintaksis aşağıdakı kimidir:

Cədvəl_adından sütun_adı SEÇİN ORDER BY sort_column_name;



Varsayılan olaraq çeşidləmə artan qaydadadır, lakin bu açar söz əlavə etməklə dəyişdirilə bilər DESC

İndi məlumatlarımız azalan qaydada sıralanır.

Çeşidləmə eyni anda bir neçə sütun üzrə edilə bilər. Məsələn, aşağıdakı sorğu məlumatları mövzu_adı sütununa görə çeşidləyəcək və bu sütunda birdən çox eyni sətir varsa, id_author sütunu azalan qaydada çeşidlənəcək:

Nəticəni əvvəlki sorğunun nəticəsi ilə müqayisə edin.

Çox vaxt cədvəldəki bütün məlumatlara ehtiyacımız yoxdur. Məsələn, sveta (id=4) istifadəçisi tərəfindən hansı mövzuların yaradıldığını öyrənmək istəyirik. SQL-də bunun üçün açar söz var HARADA, belə bir sorğu üçün sintaksis aşağıdakı kimidir:

Bizim nümunəmiz üçün şərt istifadəçi identifikatorudur, yəni. Bizə yalnız id_author sütununda 4 (istifadəçi ID sveta) olan sətirlərə ehtiyacımız var:

Və ya "velosipedlər" mövzusunu kimin yaratdığını bilmək istəyirik:

Əlbəttə ki, müəllifin identifikatoru əvəzinə onun adı göstərilsəydi, lakin adlar başqa cədvəldə saxlanılsa, daha rahat olardı. Sonrakı dərslərdə biz çoxlu cədvəllərdən məlumatların seçilməsini öyrənəcəyik. Bu arada, WHERE açar sözündən istifadə etməklə hansı şərtləri təyin etmək olar, öyrənək.

Operator Təsvir
= (bərabər) Göstərilən dəyərə bərabər olan dəyərlər seçilir

Misal:

Mövzulardan * SEÇİN id_author=4;

Nəticə:

> (daha çox) Göstəriləndən böyük dəyərlər seçilir

Misal:

Mövzulardan * SEÇİN id_author>2;

Nəticə:

< (меньше) Göstəriləndən az olan dəyərlər seçilir

Misal:

id_author olan Mövzulardan * SEÇİN
Nəticə:

>= (böyük və ya bərabər) Göstərilən dəyərdən böyük və ona bərabər olan dəyərlər seçilir

Misal:

Mövzulardan * SEÇİN id_author>=2;

Nəticə:

<= (меньше или равно) Göstərilən dəyərdən kiçik və ona bərabər olan dəyərlər seçilir

Misal:

id_author olan Mövzulardan * SEÇİN
Nəticə:

!= (bərabər deyil) Göstərilən dəyərə bərabər olmayan dəyərlər seçilir

Misal:

Mövzulardan * SEÇİN id_author!=1;

Nəticə:

NULL DEYİL Göstərilən sahədə dəyərləri olan sətirləri seçir

Misal:

id_author NULL OLMAYAN Mövzulardan * SEÇİN;

Nəticə:

NULL IS Göstərilən sahədə heç bir dəyəri olmayan sətirləri seçir

Misal:

id_author NULL OLAN Mövzulardan * SEÇİN;

Nəticə:

Boş dəst - belə xətlər yoxdur.

ARASINDA (arada) Göstərilən dəyərlər arasında dəyərlər seçilir

Misal:

1 və 3 ARASINDA id_author olan mövzulardan * SEÇİN;

Nəticə:

IN (dəyər ehtiva edir) Göstərilən dəyərlərə uyğun olan dəyərlər seçilir

Misal:

* id_author IN OLDUĞU Mövzulardan SEÇİN (1, 4);

Nəticə:

DEYİL (dəyər daxil deyil) Göstərilənlərdən başqa dəyərlər seçilir

Misal:

id_author OLMADIĞI Mövzulardan * SEÇİN (1, 4);

Nəticə:

BƏYƏNMƏK (uyğunluq) Nümunəyə uyğun olan dəyərlər seçilir

Misal:

Mövzu_adının "led%" KİMİ OLAN Mövzulardan * SEÇİN;

Nəticə:

LIKE operatoru üçün mümkün meta simvollar aşağıda müzakirə olunacaq.

BƏYƏNMƏYİR (uyğun deyil) Naxışa uyğun gəlməyən dəyərlər seçilir

Misal:

Mövzu_adının "led%" kimi OLMAYAN Mövzulardan * SEÇİN;

Nəticə:

LIKE operator metasimvolları

Meta simvollardan istifadə edərək axtarışlar yalnız mətn sahələrində həyata keçirilə bilər.

Ən çox yayılmış metaxarakterdir % . İstənilən simvol deməkdir. Məsələn, “vel” hərfləri ilə başlayan sözləri tapmaq istəsək, o zaman LIKE “vel%”, tərkibində “club” simvolları olan sözləri tapmaq istəsək, LIKE “%” yazacağıq. klub%". Məsələn:

Digər tez-tez istifadə olunan metaxarakterdir _ . Az və ya heç simvolu bildirməyən %-dən fərqli olaraq, alt xətt tam olaraq bir simvolu bildirir. Məsələn:

Metaxarakter və "balıq" arasındakı boşluğa diqqət yetirin, əgər onu atlasanız, sorğu işləməyəcək; metaxarakter _ tam bir simvolu ifadə edir və boşluq da bir xarakterdir.

Bu gün üçün kifayətdir. Növbəti dərsdə biz iki və ya daha çox cədvələ qarşı sorğu yazmağı öyrənəcəyik. Bu arada, yazılar cədvəlinə qarşı öz sorğularınızı etməyə çalışın.