Baki döVLƏt universiteti TƏTBİQİ Rİyaziyyat və Kİbernetika fakultəSİ




Yüklə 196.96 Kb.
tarix21.04.2016
ölçüsü196.96 Kb.
BAKI DÖVLƏT UNİVERSİTETİ

TƏTBİQİ RİYAZİYYAT VƏ KİBERNETİKA FAKULTƏSİ
«Informasiya texnologiyaları və Proqramlaşdırma» kafedrası
III kurs Informatika-11 qrup tələbəsi

Cəbrayıllı Bəhruz Nurəddin oğlunun





Mövzusundan


KURS İŞİ

ELMİ RƏHBƏR – C.Kazımov

KAFEDRA MÜDİRİ – Prof. Ə.Ə.Əliyev


BAKI 2008

1


Verilənlər bazasında açarlar və axtarış üsulları 2
Giriş

Sadə bir web səhifəsindən tutmuş, nəhəng şirkətlərin ağır verilənlərinə qədər bu gün bir çox sahədə Verilənlər bazasının tətbiqinə böyük ehtiyac vardır. Verilənlər bazası proqramlaşdırması ilə bir çox proyektlər hazırlana bilər.Məsələn: bir azərbaycanca-ingliscə lüğət bu üsulla asanlıqla hazırlana bilər. Bundan əlavə, mühasibat proqramları, xəstəxana axtarış sistemləri, kitabxana axtarış sistemləri bir verilənlər bazası proyektidir.

Verilənlər bazasını cədvəllər təşkil edir. Bir cədvəl hər hansı bir sahəyə aid məlumatları saxlamaq üçün yaradılmışdır.

Verilənlər bazasının yaradılması SQL dilində belədir:

CREATE DATABASE VBKitabxana;



Verilənlər bazasının silinməsi isə SQL dilində belədir:

DROP DATABASE VBKitabxana;



Verilənlər bazasında hər hansı bir cədvəlin yaradılması belədir:

CREATE TABLE cədvəl_adı


(sahə1 tipi[NOT NULL]

[, sahə2 tipi[NOT NULL],.......])



Cədvəlin yaradılmasına aid bir misal olaraq aşağıdakını göstərmək olar:

CREATE TABLE Kitab(


kitabNo INTEGER IDENTITY(1,1) NOT NULL CONSTRAINT cnsKitabNo PRIMARY KEY,


kitabAdı VARCHAR(63) NOT NULL,


seriyaNo VARCHAR(15),


Tipi VARCHAR(20),


səhifəSayı INTEGER,


Haqqında VARCHAR(255)


);

Cədvəldə dəyişiklik etmək də olur. Məsələn, cədvələ sahənin əlavə olunması aşağdakı kimidir:

ALTER TABLE Kitab ADD kitabqiyməti INTEGER;

Burada integer tipində “kitabqiyməti” sütunu əlavə olunur. Bu sütunun silinməsi belədir:

ALTER TABLE Kitab DROP COLUMN kitabqiyməti;



SQL dili
Görüldüyü kimi, Verilənlər bazasında cədvəllər üzərində aparılan əməliyyatlar SQL vasitəsilə həyata keçirilir. Bəs SQL nədir ?

SQL(Srtuctural Query Language), insanların Verilənlər bazası ilə informasiya mübadiləsini təmin edən, geniş yayılmış bir dildir. Lakin SQL sadəcə dil olaraq başa düşülməməlidir. Çünki SQL proqramlaşdırma dillərinin içərisində gizli saxlanılan kodlar vasitəsilə işləyir.Əslində SQL dedikdə proqram deyil, proqramlaşdırma dillərində istifadə olunan sorğulama ara dili başa düşülməlidir.

Verilənlər bazasında açarlar və axtarış üsulları 3


SQL, ANSI-nin 1992-ci ildə yaratdığı standartdır. Normal halda SQL 3 alt ifadə qruplarından ibarət olur :

  1. Verilənlərin elan edilməsi dili: Bu qrupdakı operatorlar istifadə olunaraq, cədvəl(table), user, trigger, view kimi Verilənlər bazası obyektləri yaradıla bilir.

  2. Verilənlərin işarələnməsi dili: Bu alt dildə cədvələ məlumat əlavə etmək(INSERT), silmək(DELETE), və dəyişiklik(UPDATE) etməklə yanaşı, məlumatı seçmək və məruzə etmək üçün SELECT və SELECT ifadəsi ilə birgə işlədilən, İNTO, FROM, WHERE, LİKE, GROUP BY, ORDER BY, HAVİNG və s. kimi ifadələr vardır.

  3. Məlumatın idarəolunması dili: Əsasən 2 ifadədən ibarətdir: VBİS-də verilmiş ROLL-lar və USER(istifadəçi) üçün ifadə və obyektlərdən istifadə etmək hüququ verir. Əlaqə(GRANT) və əlaqəni ləğv etmək(REVOKE) ifadələri ilə bu hüquqlar müəyyən olunur. SQL Server 2000 kimi VBİS-lərində bunlara əlavə olaraq əlaqənin qarşısını alma(DENY) ifadəsi də vardır.


Verilənlər Bazası İdarəetmə Sistemləri(VBİS)

Verilənlər bazasını nümayiş etdirməyə və idarə etməyə yarayan proqramlara isə Verilənlər bazası İdarəetmə sistemləri (Database Management System ) deyilir.

Bir çox proqramlaşdırma dilləri kimi, SQL də standart şəklə salınmışdır. ANSİ tərəfindən standart hala salınmış ANSİ SQL, hər bir Verilənlər bazası İdarəetmə sistemləri tərəfindən dəstəklənən bir standartdır.

Hal-hazirda dünyada bir çox Verilənlər bazası İdarəetmə sistemləri vardır. Onlardan bəziləri aşağıda verilmişdir:

  • Microsoft SQL Server

  • Oracle

  • My-SQL

  • Microsoft Access

  • Informix

Bu VBİS-lərinin özünəməxsus interfeysi vardır. Misal olaraq, ORACLE VBİS-nin standart interfeysi olaraq “SQL*Plus”u göstərmək olar :



Şəkil 1. SQL*Plus mühiti.
SQL*Plus-un imkanları bir qədər məhduddur, belə ki, burada verilən sorğuda sintaktik səhv varsa bu səhvi düzəltmək üçün səhvin olduğu bütün sətr silinməlidir. Bu, bir növ MS-Dos Əməliyyat sisteminin iş prinsipinə oxşayır.

Bundan əlavə ORACLE VBİS-nin başqa bir interfeysi TOAD-dır. SQL*Plus-dan fərqli olaraq TOAD daha əlverişlidir, belə ki, TOAD-ın interfeysi Windows əməliyyat sistemində olduğundan burada sətrin istənilən yerində dəyişikliklər aparmaq mümündür. Bu mühit aşağıda göstərilib :

Verilənlər bazasında açarlar və axtarış üsulları 4




Şəkil 1. TOAD mühiti.
Verilənlər bazası (Database)

Verilənlər bazası, məlumatları, verilənləri tam şəkildə saxlamağa yarayan fayl və fayllar yığımıdır.

Burada cədvəllər, User-lər, View-lar və s. saxlanılır. Bu cədvəllər bir-biri ilə əlaqəli ola və ya olmaya bilir.
Cədvəllər (Tables)

Verilənlər bazasında məlumatların saxlandığı alt sahələrə cədvəl deyilir. Bir Verilənlər bazasında çox sayda məlumat saxlanıla bilər. Lakin bu məlumatlar müəyyən qanunauyğunluqla saxlanılmalıdır. Məsələn: Bir məktəbin şagirdlərinin və bütün qiymətlərin bir cədvəl içərisində saxlanılması qarışıqlığa gətirib çıxarar. Bu halda məlumatar cədvəllər arasında bölüşdürülməlidir və alınan cədvəllər bir-biri ilə əlaqələndirilməlidir.

Bir Verilənlər bazasında eyni adda sütun(sahə) ola bilməz (Təbii ki, fərqli cədvəllərdə eyni adda sütun ola bilər).

Verilənlər bazasına aid cədvəllərin xassələrini və yerləşmə şəkillərini saxlayan məlumat sahəsinə schema deyilir.
Sütunlar və məlumatların tipləri (Columns and Datatypes)

Cədvəllər sütunlardan təşkil olunur. Hər bir sütun özündə eyni tipdən məlumat saxlayır. Sütunların hər birinin saxladığı məlumatların xüsusiyytini göstərən tipi vardır. Bu tiplər vasitəsilə saxlanılan məlumat məhdudlaşdırılır. Məsələn, number tipindəki sahəyə hərf daxil olunmasının qarşısı alınır.
Sətirlər (Rows)

Cədvəldə məlumatlar sətirlərdə saxlanır. Bir sətir, bir yazı(record) deməkdir.
Məlumatı əldə etmək

Cədvəldən bir ya da bir neçə sütundakı məlumatları əldə etmək üçün SELECT ifadəsindən istifadə olunur.

SQL dili bir neçə ingiliscə sözlərdən ibarətdir. Əslində bu sözlərə açar kəlmələr deyilir. Cədvəldən məlumat əldə etmək üçün SELECT açar kəlməsindən istifadə olunur. Açar kəlmələr, digər proqramlaşdırma dillərində olduğu kimi SQL-də də “reserverd keywords”, yəni dəyişən adı olaraq istifadə olunması qadağan olunan sözlərdir. Məsələn, SELECT adında bir cədvəl və ya sütun adı yaratmaq olmaz. Bir cədvəldən məlumat almaq üçün 2 informasiyaya ehtiyac vardır : Məlumat hansı cədvəldən və hansı sütundan alınacaq. SELECT ifadəsinin işlənmə ardıcıllığı (Sintaksisi) belədir:

Select , sütun2, ..., sütunN> from

Əgər cədvəlin bir sütunundakı məlumatlar lazımdırsa, onda sütunun adı olan hissəyə yalnız o sütunun adı yazılır, əgər bütün sütunları ekrana çıxarmaq istəyiriksə, onda bu sütunların adını aralarında “,” işarəsi

Verilənlər bazasında açarlar və axtarış üsulları 5


olmaqla yazırıq. Bu sonuncu dediyimi digər bir üsulla da yazmaq olar, belə ki, sütunların yerinə “*” işarəsi yazılarsa, onda bütun sütunlar ekrana çıxar.

SQL-də sözlər arasında istənilən qədər boşluq qoymaq olar. Hərflərin böyük və ya kiçik olması isə Verilənlər bazası idarəetmə sistemlərinə görə fərqlidir.



AXTARIŞ ÜSULLARI
WHERE ifadəsi (məlumatın süzülməsi)

Cədvəldəki məlumatlar arasında müxtəlif kriteriyalara görə axtarış aparmaq üçün WHERE ifadəsindən istifadə olunur. Where ifadəsilə kombinasiya oluna biləcək bir çox operator vardır. Bu operatorlar aşağıda, Cədvəl 1-də verilib :

Operator

Mənası

=

Bərabərlik

<>

Fərqlidir

!=

Bərabər deyil

<

Kiçikdir

>

Böyüktür

<=

Kiçik bərabərdir

>=

Böyük bərabədir

!<

Kiçik deyil

!>

Böyük deyil

BETWEEN

İki qiymət arasında

IS NULL

NULL qiyməti

Cədvəl 1. Where ifadəsi ilə işlənən operatorlar.
Bu ifadə FROM ifadəsindən sonra yazılır.Yazılış qaydası belədir :

SELECT FROM

WHERE

Məsələn, qiymətlər cədvəlində qiyməti 100 manatdan çox olan malları ekrana çıxarmaq üçün yazılış belədir :

SELECT mal,qiymət,say FROM qiymətlər

WHERE qiymət > 100 ;

Bu operatorlardan bəziləri eyni mə’nanı ifadə edir. Məsələn, < > ilə !=, !< ilə >= və !> ilə <= eyni nəticəni verir. Lakin bu operatorların hamısı bütün verilənlər bazası idarəetmə sistemləri tərəfindən tanınmır. Buna misal olaraq, !=, ! > və !< operatorları MS Access tərəfindən tanınmır.

Müəyyən bir aralıqda məlumatın axtarılması

Müəyyən bir aralıqda məlumatın axtarılması üçün BETWEEN ifadəsindən istifadə olunur. Bu ifadə WHERE ifadəsi ilə birlikdə işlədilir. Nümunə olaraq :

SELECT mal,qiymət,say FROM qiymətlər

WHERE qiymət BETWEEN 100 and 1000 ;

BETWEEN ifadəsi ilə istənilən aralıqdakı qiyməti almaq olar. Bundan əlavə, bu ifadə ilə yalnız rəqəmləri deyil,verilmiş aralıqdakı sözləri də ekrana çıxarmaq olar:

SELECT mal,qiymət,say FROM qiymətlər

WHERE mal BETWEEN “Kitab” and “Notebook” ;

Bu cür axtarış zamanı sütun elementlərinin əlifba sırasına görə düzülü əsas götürülür.

Boş sütunu olan məlumatın axtarışı

Cədvəl tərtib edildikdə bəzi sütunlara məlumat daxil edilməyə bilər. Bu zaman o boş sütunun aldığı qiymət NULL adlanır. NULL nə 0 qiyməti, nədə ki, boş bir mətn demək deyil. Bu ifadəyə misal :

SELECT mal,qiymət,say FROM qiymətlər

WHERE say is NULL ;

Bu zaman ekrana malın sayı girilməmiş sətirlər çıxır.

Verilənlər bazasında açarlar və axtarış üsulları 6


Ətraflı məlumat axtarışı

WHERE ifadəsi AND operatoru ilə müxtəlif variantlarda işlədilir. Məsələn, qiymətlər cədvəlində bizə həm qiyməti 500 manatdan az və ya bərabər olan, həm də sayı 20-dən çox olan malların siyahısı lazımdır. Bu sorğu aşağıdakı kimi verilir :

SELECT mal,qiymət,say from qiymatlər

WHERE qiymət >= 500 AND say < 20 ;
Məlumatın sıralanması

Əvvəldə də qeyd etdiyim kimi, sorğuda “*” simvolundan istifadə etdikdə bütün sütunlar ekrana çıxardılır, amma bu zaman məlumatlar nizamlanmamış şəkildə verilir. Sütundakı məlumatları

sıralamaq üçün ORDER BY açar kəlməsi işlədilir. Bu zaman ORDER BY ifadəsindən sonra hansı sütuna görə sıralanma aparılacağı qeyd olunmalıdır. Bu ifadənin yazılışı qısa şəkildə belədir:

SELECT FROM

ORDER BY

Bəzi hallarda bir sütuna görə sıralama yetərli olmur, məsələn, soyadları eyni olan adamların cədvəldə soyada görə sıralanması getdikdən sonra ada görə də sıralanması lazımdır. Çoxlu sütunlara görə sıralama etmək üçün, bir neçə sütunun ekrana çıxarılması üçün sütunlar arasında vergül qoyulduğu kimi, bir neçə sütuna görə sıralamada da ORDER BY ifadəsindən sonra sıralanacaq sütunlar arasında vergül qoyulur.

SELECT Soyad, Ad FROM şagirdlər

ORDER BY Soyad, Ad

Bir neçə sütuna görə sıralamada əgər soyad sütununa görə sıralanmış şəxslər arasında eyni soyadda olan varsa, bu zaman ad sütununa görə sıralama aparılır. Sıralamada sütun adlarının yerinə onların sıra nömrəsini də vermək olar, məsələn:

SELECT Soyad, Ad, Yaş FROM şagirdlər ORDER BY Soyad,Ad

əvəzinə

SELECT Soyad,Ad,Yaş FROM şagirdlər ORDER BY 1,2 ;

ifadəsini də yazmaq olar.

Or operatoru

And operatorunun məntiqi “deyil”-i OR operatorudur. Or operatoru, birdən çox şərtlər içərisində ən az birinə uyğun gələn şərti ekrana çıxarmaq üçün işlədilir. Yazılışı AND operatoruna oxşardır :

SELECT mal,qiymət,say from qiymatlər

WHERE qiymət = 500 OR say <= 20 ;

Bu sorğuda verilmiş 2 şərtdən birinə uyğun gələn hal ekrana çıxardılır.

WHERE ifadəsi AND və OR operatorlarının ikisi ilə birlikdə eyni zamanda işlədilə bilər. Sorğuda AND və OR operatorlarını istənilən sayda işlətmək olar. Lakin belə sual yarana bilər ki, bu zaman operatorlar hansı ardıcıllıqla sıralanır ?

Bu sualı misal üzərində belə açıqlamaq olar :

SELECT mal,qiymət,say from qiymatlər

WHERE say=10 OR say=40 and qiymət<650 ;

Bu sorğu ilə sayı 10-a və ya 40-a bərabər olan, qiyməti 650-dən böyük olan mallar ekrana çıxarılmalıdır. Lakin bu zaman qiyməti 650-dən kiçik olanlar da ekrana çıxa bilər. Çünki operatorlar arasında üstünlük dərəcəsi vardır. SQL və digər proqramlaşdırma dillərində AND operatoru üstünlüyə malikdir. Yuxarıdakı misalda (say=10 OR say=40) şərti deyil,

(say=40 and qiymət<650) şərti birinci yerinə yetirilir. Bu istənilməyən nəticələri aradan qaldırmaq üçün mötərizələrdən istifadə olunmalıdır :

SELECT mal,qiymət,say from qiymatlər

WHERE (say=10 OR say=40) and qiymət<650 ;

İN operatoru

BETWEEN operatoruna oxşasa da, İN operatoru verilmiş aralıqdakı məlumatların hamısını ekrana verir :

SELECT mal,qiymət,say from qiymatlər

WHERE say in (10,40)

ORDER BY mal ;

Verilənlər bazasında açarlar və axtarış üsulları 7


İN operatorlarını istifadə edərək lazımsız OR operatorunun işlənməsinin qarşısı alınır. Bundan əlavə, İN operatoru ilə yazdığımız kodun sadəliyin artırmış oluruq.

NOT operatoru

NOT operatorunun bir funksiyası vardır ki, o da özündən sonra gələn sorğunun əksini verməkdir. NOT operatorunun fərqli cəhəti, sütun adlarından sonra gəlməsidir :

SELECT mal,qiymət,say from qiymatlər

WHERE NOT(say in (10,40)) ;

NOT operatorunun o qədər də böyük üstünlükləri yoxdur, sadəcə, İN operatorunun işlədildiyi qarışıq sorğularda verilən çoxluqdan kənardakı məlumatları əldə etmək üçün istifadə olunur.

LİKE operatoru

Əvvəlki sorğularda verilmiş, bizə məlum olan məlumatları axtarırdıq, məsələn, mal sütunundakı dəyərlərin adları məlumdur. İndi isə dəqiq bilinməyən dəyərlərin axtarışına baxaq. LİKE operatoru bu hal üçün böyük rol oynayır. LİKE operatoru yalnız mətn tipli dəyərlərin axtarışında istifadə olunur. LİKE operatoru “%” ifadəsi ilə 3 formada işlədilə bilir ; axtarılan söz “%” ifadəsindən solda, sağda və iki % ifadəsi arasında yazılaraq işlədilir.

Əgər axtarılan sözün birinci hərfi üzrə axtarış aparılırsa, onda yazılış belə olur :

SELECT mal,qiymət,say from qiymətlər

WHERE mal like ‘axtarılan sözün ilk hərfi%’;

Əgər axtarılan sözün sonuncu hərfi üzrə axtarış aparılırsa, onda yazılş belə olur :

SELECT mal,qiymət,say from qiymətlər

WHERE mal like ‘%axtarılan söz’;

Əgər axtarılan söz verilmiş məlumatın hər hansı bir yerindədirsə, onda yazılş belə olur :

SELECT mal,qiymət,say from qiymətlər

WHERE mal like ‘%axtarılan söz%’;

Oracle VBİS-nin bir interfeysi olan TOAD-da verimiş sorğu aşağıdakı (şəkil 3)-dədir :



Şəkil 3. TOAD-da sorğunun nəticəsi.

Əgər axtarılan sözün birinci və axarıncı hərfi məlumdursa, onda birinci və sonuncu hərflər arasında “%” işarəsi qoyulur. Sorğu belə verilir :

SELECT mal,qiymət,say from qiymatlər WHERE mal like ‘K%b’;

Yuxarıdakı misalda bir şeyə diqqət yetirilməlidir ki, birinci hərf böyük, sonuncusu isə kiçiklə yazılmışdır. Yəni axtarınan dəyəri sorğuda olduğu kimi vermək lazımdır.

Bəzi Verilənlər bazası idarəetmə sistemlərində hərfin böyük-kiçikliyi nəzərə alınır, ona görə də LİKE operatorundan istifadə zamanı bu nüansa fikir vermək lazımdır.

Bəzi hallar da olur ki, məlumatın axtarılan hissəsi bir neçə deyil bir simvoldan ibarət olur, bu halda “_” işarəsindən istifadə olunur. “_”- işarəsinin yazılışı “%” işarəsi ilə eynidir :

SELECT mal,qiymət,say from qiymatlər

WHERE mal like ‘Kita_’;

Bu işarə də müxtlif variantlarda; 2 hərf yaddan çıxdıqda, birinci və sonuncu hərflər yaddan çıxdıqda işlədilir :

1) SELECT mal,qiymət,say from qiymatlər

Verilənlər bazasında açarlar və axtarış üsulları 8


WHERE mal like ‘_ita_’;

2) SELECT mal,qiymət,say from qiymatlər

WHERE mal like ‘K__ab’;

Verilənlər bazası idarəetmə sistemlərindən olan MS Access-də “%” işarəsi yerinə “*” işarəsindən, “_” işarəsi yerinə isə “?” işarəsindən istifadə olunur.

Bəzi Verilənlər bazası idarəetmə sistemlərində LİKE operatoru ilə birlikdə “[ ]” işarəsi işlədlir. Bu VBİS-nə MS Acceess, SQL Server və SyBase Adaptive Server aiddir. Bu işarədən baş hərfi bilinən bir və ya bir neçə məlumatı tapmaq üçün istifadə olunur :

SELECT mal,qiymət,say from qiymatlər

WHERE mal like [KN]%’;

Burada məlumatın baş hərfləri arasında vergül qoymağa ehtiyac yoxdur. Bundan əlavə, əgər baş hərfi bilinən məlumatlardan başqa yerdə qalan məlumatları istəyiriksə, onda “^” işarəsindən istifadə olunur. Bu işarə NOT operatoru ilə eyni güclüdür.
Sütunların birləşdirilməsi

Ən sadə birləşmə, 2 sütunun birləşdirilməsidir. Bu zaman birləşmə, müxtəlif VBİS-ində müxtəlif cür yazılır. MS Access, SQL Server və SyBase VBİS-lərində birləşmə əməli “+” operatoru ilə yerinə yetirilir. DB2, ORACLE və PostgreSQL VBİS-lərində isə birləşməni “||” ifadəsi yerinə yetirir. MySql VBİS isə nə “+”, nə də “||” ifadələrini qəbul etmir. Burada birləşmə üçün CONCAT( ) ifadəsindən istifadə olunur.

SELECT Ad +’(’+ Soyad+’)’,Tevellüd from qiymatlər ;

Burada Ad və Soyad sütunları birləşdirilərək bir sütun olaraq ekrana çıxarılır.

Select CONCAT (Ad , ’(’, Soyad , ’) ’)



Sütun adlarına süni ad verilməsi(AS operatoru)

Sütunlara ad verilməsi ən çox bir neçə sahənin(sütunun) birləşdirilməsindən alınan sütunla bağlıdır. Yəni, ad və soyad sütunlarını birləşdirərək alınmış sütuna Name adını verə bilərik :

SELECT Ad +’(’+ Soyad+’)’ as Name,Tevellüd from Biz ;

Bu sorğunun nəticəsi aşağıdakı kimi olacaq(şəkil 4) :


Şəkil 4. Sütun adı dəyişməsinin nəticəsi.

Verilənlər bazasında açarlar və axtarış üsulları 9


Riyazi ifadələrin hesablanması

Əslində sütunlar üzərində aparılan əməliyyatların ən çoxu, riyazi əmliyyatlardır. Məsələn, bizə malın dəyəri və məbləği verilibsə və malın çəkisi lazımdırsa, onda malın məbləğini onun dəyərinə bölərək, malın çəkisini tapa bilərik :

SELECT ad,qiymət/məbləğ as çəki,say from mallar ;

Bundan əlavə, SQL-də də digər proqramlaşdırma dillərində olduğu kimi verilənlər(məlunmatlar) üzərində dəyişiklik etmək üçün standart funksiyalar da vardır. Lakin bu funksiyaların yazılışı müxtəlif VBİS-də müxtəlifdir. Bu müxtəliflik aşağıdakı cədvəldə açıq şəkildə göstərilmişdir. Bu cədvəldən də gönündüyü kimi, SQL sorğularından istifadə bir o qədər də əlverişli deyil. Çünki bir sistemdə yazılmış kod digərlərində tanınmaya bilər :


Funksiya

Yazılış forması

Bir mətnin bir hissəsindən yeni mətn yaratmaq

Ms Access MID(), DB2, Oracle və PostgreSQL SUBSTR(),Ms SQL Server, MySQL və Sybase isə SUBSTRING() funksiyalarını tanıyır.

Verilənin tipini çevirmək

DB2 və PostgreSQL CAST(), MySQL, Sql Server və Sybase CONVERT() funksiyalarını tanıyır.Access və Oracle hər tip çevirilişinə görə bir funksiya işlədir.

Tarixi öyrənmək

Access NOW(), DB2 və PostgreSQL CURRENT_DATE,MySQL CURDATE(),Oracle SYSDATE,Sql Server və Sybase GETDATE() funksiyası

Cədvəl 2. Müxtəlif VBİS-lərindəki funfsiyaların yazılışı.

Funksiyaları yerinə yetirdiyi işə görə qruplandırmaq olar. Belə ki, onları mətn üzərində iş görən funksiyalar, rəqəmsal işlər görən funksiyalar, saat və tarix funksiyaları və system funksiyaları olaraq qruplandırmaq olar.

Mətn üzərində iş görən funksiyalar adından da göründüyü kimi mətn üzərində əməliyyatlar, kiçik hərflərin bödülməsi, o cümlədən, böyük hərflərin kiçildilməsi,mətnin hər hansı bir yerindən sonuna qədərki hissənin verilməsi, mətnin sağ, sol və istnilən yerindəki boşluqları aradanan qaldırılması əməliyyatlarını yerinə yetirir. Bu deyilənləri cədvəl şəklində belə vermək olar :

Funksiya

Mənası

LEFT()


Mətinin sol tərəfindən başlayaraq bir hissə alır

RIGHT()

Mətinin sağ tərəfindən başlayaraq bir hissə alır

LENGHT(), Access’də LEN()

Mətinin uzunluğunu verir

LOWER(), Access’də LCASE()

Mətini bütünlüklə kiçik hərflərə çevirir

UPPER(), Access’də UCASE()

Mətini bütünlüklə böyük hərflərə çevirir

LTRIM()

Mətinin solundakı boşluqları silir

RTRIM()

Mətinin sağındaki boşluqları silir

TRIM()

Mətinin əvvəlindəki və axırınkı boşluqları silir

SOUNDEX()

Bir mətinin SOUNDEX qiymətini verir

Cədvəl 3. Funksiyaların tipləri və mənaları.

Cədvəldəki sonuncu funksiya bir qədər mürəkkəbdir. SQL-lə əlaqəsi olmasa da bu funksiyanı bir çox VBİS dəstəkliyir :

SELECT ad,qiymət,dəyər,say from mallar

Where SOUNDEX(ad)= SOUNDEX(“Notebok”) ;

Bu misalda adı Notebook olan malların siyahısı çıxarılmalıdır, amma malın adı düzgün yazılmadığı üçün ekrana heç nə gəlməməlidir.

Lakin SOUNDEX( ) funksiyası bu səhvi düzəldərək tamlığı bərpa edir.Ümumiyyətlə, bu funksiyanın xassəsi, sintaktik cəhətdən səhv daxil olunan məlumatı düzəltməkdir. Bu funksiyanı MS Access və PostgreSQL dəstəkləmir.

Saat və tarix funksiyaları hər bir VBİS-də vardır. Lakin əsasən, bizə bu funksiyanın necə saxlanması və ona necə müraciət olunacağı lazımdır. Tarix və saatın hissələrinin ekrana çıxması üçün müxtəlif funksiyalar var :

Verilənlər bazasında açarlar və axtarış üsulları 10



SELECT ad,qiymət,tarix from mallar

Where DatePart(‘yyyy’,tarix)= 2008 ;

Buradakı DatePart() funksiyası aylardan asılı olmayaraq bütün 2008-ci ildəki məlumatları ekrara çıxarır.

SELECT ad,qiymət,tarix from mallar

Where tarix BETWEEN ‘11.01.2008‘ and ‘11.11.2008‘;

Bu sorğu ilə “11.01.2008” ilə “11.11.2008” tarixləri arasındakı mallar haqqında məlumat ekrana çıxır.

Rəqəmsal işlər görən funksiyalar, əsasən, riyazi hesablamalar üçün işlədilir. Bu funksiyalar əvvəlki funksiyalar qədər çox işlədilməsə də riyazi hesablamalar bu funksiyalarsız mümkün deyil. Riyazi funksiyalar Cədvəl 4-də verilib :


Funksiya

Mənası

ABS()

Ədədin mütləq qiymətini verir

COS()

Verilmiş bucağın triqonometrik kosinus qiymətini verir

SIN()

Verilmiş bucağın triqonometrik sinus qiymətini verir

TAN()

Verilmiş bucağın triqonometrik tangens qiymətini verir

EXP()

Verilmiş ədədin qüvvət funksiyasının qiymətini verir

SQRT()

Verilmiş ədədin kvadrat kökünü verir

PI()

Pi ədədini verir

Cədvəl 4. Riyazi hesablamalar üçün olan funksiyalar.
Sətr və sütunlar üzərində iş

Sətir və sütunlar üzərində aşağıdakı əməliyyatlar aparılır :

  • Bir cədvəldəki sütun sayını əldə etmək ;

  • Müəyyən şərtlər daxilində sütunların sayını əldə etmək ;

  • Cədvəlin sütunlarındakı verilənlərin cəmini əldə etmək ;

  • Sütundakı ən böyük və ən kiçik qiyməti əldə etmək ;

Bu deyilənləri almaq üçün 5 ədəd funksiya verilir(Cədvəl 5) :


Funksiya

Mənası

AVG()

Sütunlara aid ortaq qiymət

COUNT()

Sütundakı sətirlərin sayı

MAX()

Sütundakı ən yüksək qiymət

MIN()

Sütundakı ən kiçik qiymət

SUM()

Sütundakı qiymətlərin cəmi

Cədvəl 5. Cəm funksiyaları(Aggregate functions)
AVG( ) funksiyası, cədvəlin müəyyən sütununa aid qiymətlər toplanıb bu sütundakı sətirlərin sayına bölünməsindən əldə olunan ortaq qiyməti geri qaytarır. Əgər sütundakı hər hansı bir sətirə qiymət

verilməyibsə, ortaq qiyməti tapanda bu sətir nəzərə alınmır. Burada diqqət yetirilməlidir ki, yalnız ortaq qiyməti tapılan sütun ekrana çıxarılmalıdır :

SELECT AVG(qiymət) as ortaq qiymət from mallar ;

AVG( ) funksiyasını şərtlərlə də işlətmək olar :

SELECT AVG(qiymət) as ortaq qiymət from mallar

Where dəyər=30000 ;

COUNT( ) funksiyası adından da görüldüyü kimi verilmiş sütundakı sətirlərin sayını verir. Bu funksiyanın 2 şəkli var :

1) COUNT(*) ilə cədvəldəki sətir sayı tapılır və NULL qiyməti nəzərə alınır.

2) COUNT(sütun adı) ilə NULL qiymətli sətirlər nəzərə alınmayaraq verilmiş sütundakı

sətirlərin sayı hesablanır.

SELECT count(*) as mal_sayı from mallar ;

SELECT count(qiymət) as qiymət_sayı from mallar ;

Verilənlər bazasında açarlar və axtarış üsulları 11


Sonuncuda qiyməti qeyd olunan, yəni boş buraxılmayan malların sayı əldə edilir.

MAX( ) funksiyası verilmiş sütundakı sətirlər arasından ən böyük dəyərə malik olanı verir :

SELECT MAX(dayar) as bahası from mallar ;

Bu funksiya rəqəm tipli sütunlarla yanaşı, digər, tarix, saat və mətin tipli sütunların sətirləri arasında da ən böyük dəyərə malik sətiri verir.

MİN( ) funksiyası, MAX( )-ın əksinə olaraq, verilmiş sütundakı sətirlər arasından ən kiçik dəyərə malik olanı verir :

SELECT MAX(dayar) as ucuzu from mallar ;

SUM( ) funksiyası verilmiş sütunun elementlərinin cəmini verir :

SELECT SUM(qiymət) as qiymət_cəmi from mallar ;

DİSTİNCT( ) funksiyası ilə verilmiş sütundakı 2 və ya daha çox eyni sətirdən biri götürülür :

SELECT Distinct(qiymət) from mallar ;

Cəm funksiyalarının bir yerdə işlədilməsi :

SELECT count(qiymət) as qiymət_sayı,

MAX(dayar) as bahası,MİX(dayar) as ucuzu,AVG(qiymət)

as ortaq_qiymət from mallar ;

Qiymətlərin qruplandırılması HAVİNG və GROUP BY ifadələrinin köməyilə yerinə yetirilir. Group By, verilmiş sorğunun nəticəsi arasında verilmiş sütuna(sütunlara) görə qruplandırma aparılır. :

SELECT adçsoyadçcount(*) as telebe_sayi from Biz

Group by ad,soyad ;

Bu sorğunun nəticəsi (şəkil 5)-dədir:



Şəkil 5. Sorğunun nəticəsi.
Bu sorğuda adı və soyadına görə sayı verilən tələbələr arasında əvvəlcə ada, sonra da soyada görə qruplandır-ma aparılır.

Əgər bizə müxtəlif yaşlı tələbələrin sayı lazımdırsa, sorğunu aşağıdakı kimi yazmaq lazımdır :

SELECT yas,count(*) as say from Biz Where group by yas ;
Verilənlər bazasında açarlar və axtarış üsulları 12
Bu sorğunun nəticəsi aşağıdakı kimi olacaq. Şəkildən də göründüyü kimi bu halda yaşı 20 və 21 olanlar qruplanaraq sayları ayrılıqda verilir :



Şəkil 6. Sorğunun nəticəsi.

QROUP BY ifadəsi aşağıdakı bir neçə xassələrə malikdir :

  • İstənilən sayda GROUP BY ifadəsi iç-içə yazıla bilər.

  • GROUP BY ifadəsindən istifadə etdikdə, cəm funksiyası SELECT ifadəsinin ən sonunda yazılmalıdır.

  • GROUP BY ifadəsindəki sütun adı, ya cədvəl sütununun adı, ya da cəm funksiyalarından kənar bir ifadə olmalıdır.

  • GROUP BY ifadəsi rəqəm tipli sütunlara tətbiq olunmalıdır.

  • GROUP BY ifadəsi WHERE açar kəlməsindən sonra, ORDER BY açar kəlməsindən isə əvvəl gəlməlidir.

  • Əgər cədvəldə bir və ya bir neçə NULL qiymətli sətirlər varsa, GROUP BY ifadəsi bu qiymətləri də nəzərə alır.

ALT SORĞULAR

İndiyə qədər göstərilən misallarda bir sorğu verilirdi və bu sorğunun nəticəsi ekrana çıxırdı. (Sorğu, bir SQL ifadəsinə deyilir) İndi baxılası olan alt sorğular verilmiş sorğunun içərisində işlədilir. Bu cür sorğunun işlədilməsinin məqsədini aşağıdakı misalla izah etmək olar :

SELECT sifariş_kodu from sifariş

Where malın_kodu=35 ;

Sonra isə

SELECT müştəri_kodu from sifariş

Where sifariş_kodu in (11,21,44,48,76) ;

sorğusu verilib. Bu 2 sorğunu bir yerdə yazmaq olar :

SELECT müştəri_kodu from sifariş

Where sifariş_kodu in (SELECT sifari_kodu from sifariş Where

malın kodu=35) ;
Verilənlər bazasında təhlükəsizlik

Verilənlər bazasında təhlükəsizliyi təmin etmək üçün istifadəçilər(USER) elan olunur. Hər istifadəçinin bir şifrəsi olur. İstifadəçilərə müəyyən hüquqlar verilir.

User yaratmaq İndex-in yaradılması prinsipi ilə eynidir :

CREATE User User_Adı

İdentified By Şifrə ;

User-in əsas vəzifələri, istifadəçilərə gərəkli hüquqların verilməsi, Verilənlər bazasının lahiyəsinin verilməsi və Verilənlər bazası üzərində dəyişiklikləri qeyd etməkdir.

Verilənlər bazasında açarlar və axtarış üsulları 13


VBİS-də verilənlərin tamlığının təmin edilməsi

VBİS, verilənlərin tamlığı qaydalarının hamısını təyin etməyə və tətbiq etməyə imkan verir. Bu qaydaların böyük bir hissəsi verilənlərin tamlığını məhdudlaşdırmaqla təyin olunur. Tamlıq məhdudiyyətləri aşağıda göstərilmişdir.

Tamlıq məhdudiyyətləri(integrity Constaints)

Bir tamlıq məhdudiyyəti, bir cədvəlin bir sahəsi üçün qayda təyin etmənin açıq formasıdır. Eyni zamanda bir tamlıq məhdudiyyəti, VBİS-lərinin təməl, əsas cədvəllərində təyin olunmamış məlumat daxil etməyin qarşısını almaqda istifadə olunan mexanizmdir. VBİS-lərindən ORACLE-da tamlıq məhdudiyyətləri aşağıdakılardır :

NOT NULL

Default olaraq, bir cədvəldəki sütunların hamısı ”null” qiyməti almağa imkan verir, yəni o cədvəldəki sütunlara məlumat girilməsə də olar. NOT NULL ifadəsi isə bir sütuna null dəyərinin daxil olunmasını deməkdir. Məsələn, bir A cədvəlindəki bütün məlumatlar üçün B sütununa mütləq bir qiymət daxil etməyi bildirən NOT NULL məhdudiyyəti verilə bilər.

AÇARLAR

Açarlar iki və yə daha artıq cədvəl arasında informasiya mübadiləsini təmin etmək üçün onlar arasında əlaqə yaradan xüsusi sütunlardır. Belə ki, 2 cədvəl arasında əlaqə yaratmaq üçün bizim açar sütunumuz olmalıdır, hansı ki, bu sütundan əlaqə yaradacağımız digər cədvəldə də olsun.

UNİQUE açar

Bir Unique açar məhdudiyyəti bir cədvəldə qeyd olunan sütun və ya sütunlar yığımı içərisində təkrarlanan məlumatların olmamasını təmin edir. Unique açar məhdudiyyətinə daxil edilən sütun ya da sütun yığımı Unique açar adlandırılır. Əgər Unique açar məhdudiyyəti birdən çox sütundan ibarətdirsə, bu açara mürəkkəb tərkibi Unique açar deyilir.

İlkin açarlar (Primary Key)

Hər bir cədvəldə, bu cədvəlin xassələrini saxlayan xüsusi bir, yaxud birdən çox sütun(sahə) ola bilər. Məsələn, Şagird cədvəlində şagirdin nömrəsi olan sütun bu cədvəldəki ilkin məlumatları saxlayır. Layihələşdirmə zamanı bu sütun ilkin açar olaraq göstərilməlidir. İlkin açarlardan istifadə olunaraq eyni sütundakı müxtəlif sətirlərə eyni məlumatın daxil olunmasının qarşısı alına bilər. (Burada NULL qiyməti verilə bilməz) İlkin açar olaraq seçilən sütun dəyişdirilə bilməz.

Əsas forması belədir :

CONSTRAİNT constraint_adı Pimary Key | Unique | REFERENCES foreign_cədvəl

[(foreign_sahə1[foreign_sahə2,… ])]

Hər hansı cədvəldə silinəcək sətirdə foreign key və ya primary key varsa, bu zaman silinmə xətası verilir. Çünki başqa cədvəllə əlaqəli olduğundan(join), digər cədvəlin işlətdiyi sətir vardır. Ona görə də bu sətirləri silmək üçün əlaqəli olduğu bütun sətirlər silinməlidir.

Enable- Unique və primary key indexlərini avtomatik yaradır.

Disable- Unique və primary key təsvirini aradan qaldırır.

Xarici açar(Foreign Key)

Əgər bir cədvəl digər bir cədvəllə əlaqələndiriləcəksə, onda xarici açardan istifadə olunur. Xarici

açar, bir cədvələ verilə bilən məlumatları başqa bir cədvəlin müəyyən sütununda yerləşə bilən məlumatlarla məhdudlaşdırmaq və ən əsası, əlaqələndirmək üçündür.

CREATE table Sirket

(SirketNo   NUMBER(11) NOT NULL,

Ad              VARCHAR2(15),

Soyad        VARCHAR2(15),

Dogumyer      NUMBER(2),

CONSTRAINT cst_OgrNum PRIMARY KEY(SirketNo )

CONSTRAINT cst_dogyer FOREING key(Dogumyer) REFERENCES il(il))
Bu nümunədə Sirket və il cədvəlləri arasında əlaqə, “SirketNo” ilkin açarı və “Dogumyer” xarici açarları vasitəsilə yaradılır.
Verilənlər bazasında açarlar və axtarış üsulları 14
Məsələn, Kitab və borc cədvəli vardır. Olmayan bir kitabın borc cədvəlinə əlavə oluna bilməməsi və ya borc cədvəlinə əlavə olunan bir kitabın kodu vasitəsilə kitab haqqında ətraflı məlumatın alınması. Burada, Kitab.kitabNo ilkin açar, Borc.kitabNo isə xarici açardır. Aşağıdakı şəkildən də göründüyü kimi müəyyən bir sahəyə aid məlumat bazası yaradılanda bu məlumatlar qruplaşdırılaraq, bir neçə cədvəl şəklinə salınır :




Şəkil 7. Cədvəllərin açarlarla əlaqələndirilməsi.

Bu cədvəldən də görüldüyü kimi Növ cədvəlindəki növNo sütunu, Abune cədvəlindəki abuneNo sütunu, kitab_növu cədvəlindəki kitabNo sütunu (Primary Key) ilkin açardır, bundan əlavə kitab_növu cədvəlindəki növNo sütunu, Abune cədvəlindəki abuneNo sütunu, Kitab cədvəlindəki kitabNo sütunu (Foreign Key) xarici açardır.

Cədvəllərin birləşdirilməsi

SQL-in ən gözəl və ən güclü tərəflərindən biri, sorğular verildikdə, birdən çox cədvələ aid verilənlərin bir cədvəl kimi verilə bilməsidir. Burada əsas məsələ, hansı cədvəlin ilkin açarı ilə (primary key) hansı cədvəlin foreing key verilənlərinin birləşdirilməsidir.

Tutaq ki, Sahibkarlar və məhsullar haqqında məlumatlar əsasında cədvəl yaratmaq lazımdır. Təbiidir ki, bu məlumatları bir cədvəldə qruplaşdırıb, çıxışa versək bir qədər mürəkkəb bir struktur alınacaq. Bundan əlavə bu zaman əgər 1000 növdə məhsul varsa bu məhsullara uyğun sahibkarların adlarını daxil etmək lazımdır. Bu isə həm vaxt sərfinə, həm də təkrarçılığa gətirib çıxarır. Bu zaman məsələni bu cədvəli 2 yerə Sahibkar və müştəri cədvəllərinə bölməklə həll edirik. Bu cədvəllərə əsasən hər bir sahibkara ilkin kod verilir və Məhsul cədvəlində isə hər bir məhsulun sahibkarı sütununa isə sahibkarın adı deyil, ona verilən ilkin kod yazılır.

Cədvəllər arasında verilənlərn birləşdirilməsi(JOİN)

JOİN ifadəsinin işlədilməsi sadədir, sadəcə, uyğun olaraq cədvəllərdəki sütunların adları və hansı sütunlarla birləşmə aparılacağı qeyd olunmalıdır.

Məhsullara aid istehsalçı firma adı,məhsulun adı və məhsulun qiymətini sorğu ilə verək :

SELECT firma_adı,məhsul_adı,məhsulun_qiymati from Sahibkar,Məhsul

Where sahibkar.kod=Məhsul.kod ;

Bu sorğu nəticəsində Sahibkar cədvəlindən firma_adı, Məhsul cədvəlindən məhsul_adı və məhsulun_qiyməti sütunlarının geri döndüyü görünür. Burada əsas məsələ, bu 2 cədvəlin kod sütunu ilə birləşdirilə bilməsidir. Sahibkar cədvəlindəki kod sütunu ilkin açar (primary key) və Məhsul cədvəlində key sütunu xarici açar

(foreing key) adlanır. Bu 2 cədvəl bir-biri ilə bu açarlar vasitəsilə əlaqələndirilir. Sonuncu sorğunu qarışıqlıq olmasın deyə belə də yazmaq olar :

SELECT Sahibkar.firma_adı,Məhsul.məhsul_adı,Məhsul.məhsulun_qiymati

from Sahibkar,Məhsul

Where sahibkar.kod=Məhsul.kod ;

Görəsən, bu sorğularda Where ifadəsinin vəzifəsi nədir ? Bu suala cavab olaraq belə bir sorğuya baxaq :

SELECT Sahibkar.firma_adı,Məhsul.məhsul_adı,Məhsul.məhsulun_qiymati

from Sahibkar,Məhsul ;
Verilənlər bazasında açarlar və axtarış üsulları 15

Bu sorğu nəticəsində əvvəlki nəticəylə müqayisədə bir qədər çox məlumat əldə edirik ki, bu da bir az qarışıqlıq yaradır. Bu qarışıqlığın qarşısını almaq üçün Where ifadəsindən sonra Sahibkar.kod=Məhsul.kod şərti bildirilir. Bu proses JOİN(birləşdir) adlanır. Birləşmənin növünə isə equijoin deyilir. Yəni burada 2 cədvəlin bərabərliyi yoxlanaraq birləşmə aparılır.

Birləşmənin bir növü də İNNER JOİN –dir. Bu birləşmə əvvəlki birləşmə ilə demək olar ki, eynidir. Sadəcə olaraq, İNNER JOİN üsulu bir qədər əlverişlidir :

SELECT Sahibkar.firma_adı,Məhsul.məhsul_adı,

Məhsul.məhsulun_qiymati

from Sahibkar İNNER JOİN Məhsul

ON sahibkar.kod=Məhsul.kod ;

Əvvəl də qeyd edildiyi kimi, bu birləşmənin üstünlüyü odur ki, bu zaman birləşmənin istiqaməti göstərilir. Bu üsul xüsusi olaraq 2 və daha artıq cədvəlin birləşməsində istifadə edilir.

SELECT ifadəsi içərisində istənilən sayda cədvəl əlaqələndirilə bilər. SQL bu məsələ üçün bir sərhəd təyin etməmişdir. Ediləsi iş, cədvəlləri tərtib edib, aralarındakı birləşməni qeyd etməkdir.

Tutaq ki, 10223 nömrəli sifarişə aid məlumat almaq istəyirik və bizdə 3 cədvəl var. Sorğu belə olacaq :

SELECT Sahibkar.firma_adı,Məhsul.məhsul_adı,

Məhsul.məhsulun_qiymati,Sifariş.dəyər,Sifariş.say

from Sifariş,Sahibkar,Məhsul

Where Məhsul.kod=Sahibkar.kod

and Sifariş.məhsulkod=Məhsul.məhsulkod

And Sifariş_kod=10223 ;

Bir sorğunu təhlil etmək istədikdə bu sorğunu axırdan əvvələ olmaqla oxumaq lazımdır.Bu sorğunu da təhlil etmək istədikdə sorğuya axırdan əvvələ doğru baxmaq lazımdır.

Mövzunun əvvəlində sütunları yenidən adlandırmağa baxmışdıq. Eyni qayda ilə cədvəlləri də yenidən adlandırmaq olar :

SELECT firma_adı, məhsul_adı,məhsulun_qiymati

from Sahibkar as S İNNER JOİN Məhsul as M

ON S.kod=M.kod ;

Bu yazılışı Oracle dəstəkləmir, Sahibkar as S əvəzinə, Sahibkar S yazılır.

UNİON ifadəsi birdən çox sorğu cümləsini birləşdirir :

(Sorğu1) UNİON (Sorğu2)

Sorğuların nəticələrinin birləşərək yeni cədvəl yaratması üçün 2 şərt ödənməlidir :

  1. Select sorğusu nəticəsində əldə olunan cədvəllərdə sütunların sayı eyni olmalıdır.

  2. Cədvəllərin qarşılıqlı olaraq sütunları eyni tipdə və eyni genişlənmədə olmalıdır.

ANY ifadəsi.

Belə misala baxaq :

SELECT * from Kollektiv Where maas<ANY

(select maas from Kollektiv Where ishNO=3)AND ishNo=1 ;

Bu sorğu ilə ekvivalent sorğu belədir :

SELECT * from Kollektiv Where maas<

(select MAX(maas) from Kollektiv Where ishNO=3)AND ishNo=1 ;

İNDEX yaratmaq

İndekslər bir cədvəlin istənilən sütunlarına müraciəti sürətləndirmək üçün istifadə olunur. Primary key (İlkin açar) olaraq verilən sütunlarda indeks avtomatik olaraq yaradılır. İndeks 16 sütundan çox ola bilməz, eyni ilə, sütunun tipi long və yə long raw ola bilməz.Yazılışı :

CREATE İNDEX İNDEKS_ADI

ON cədəvl_adı(sütunlar ) ;

Nümunə :

CREATE İNDEX tələbə_index

ON tələbə(ad,soyad ) ;

Bu nümunədə birinci ad sütunu olmaqla, soyad sütunu təbii olaraq əlifba sırasına görə sıralanır.

Verilənlər bazasında açarlar və axtarış üsulları 16


Yəni əgər ada görə sıralanmış cədvəldə 2 eyni adda şəxs varsa, bu dəfə soyada görə sıralanma gedir.

VBİS-də index yaratmaq üçün ;

  • İndex yaradılacaq cədvəl mövcud olmalıdır,

  • İndex yaratmaq hüququna malik olmalıdır,

  • Limitsiz Tablespace hüququna malik olamlıdır.

İndex-in yaradılmasına ehtiyac aşağıdakı hallarda yaranır :

  • Where ifadəsilə tez-tez işlədilən sütunlar istifadə olunursa,

  • Join ilə birləşdirmə prosesi baş verdikdə,

  • Sütun qiymətləri geniş aralıqdadırsa,

  • Yüksək rəqəmli sütunlarda NULL qiyməti varsa.

İndex yaradılmaması aşağıdakı hallarda mümkündür :

  • Cədvəl kiçikdirsə,

  • Cədvəldə tez-tez dəyişiklik edilmirsə,

  • Cədvəldəki bəzi sütunlara tez-tez ehtiyac olmayanda.

Yaradılan İndeksləri verilənlər bazasından silmək üçün Drop İndex ifadəsindən istifadə olunur.

Nəticə

Həyatda bir problemi asan həll etməyin yolu, bu məsələni sadə hissələrə ayırıb ayrı-ayrı hissələr şəklində həll etməkdir. Bu üsul istənilən sahədə tətbiq olunur.

Verilənlər bazasında da verilmiş məlumatlara əsasən baza yaradılarkən həm verilənlərin (məlumat) təkrarlan-maması, həm axtarışın daha sürətli aparılması üçün, həm də cədvəlin görünüşünün yorucu olmaması, sadə ol-ması baxımından məlumatlar qruplaşdırılaraq, bir neçə cədvəl şəklinə gətirilir.

Bu məqsədlə açarlardan istifadə olunur. Buna baxmayaraq, bu iki açar bir-birindən fərqlənir.

İlkin açarla xarici açarın fərqi odur ki, ilkin açar kimi təyin olunmuş sütun boş buraxıla bilməz və NULL qiy-mətini ala bilməz, xarici açar kimi təyin olunmuş sütun boş buraxıla bilər.

Axtarış üsulları SQL dilində çoxşaxəli yaradılmışdır.Əsas ifadəsi olan “Where”, axtarışın aparılmasında mü-hüm rol oynayır. Bu ifadə ilə birlikdə ORDER BY, GROUP BY, LİKE, eləcə də qarşılaşdırma, məntiqi, riyazi opratorlar işlədilir.

PLAN

  1. Giriş.

  2. SQL dili.

  3. Verilənlər Bazası İdarəetmə Sistemi (VBİS).

  4. Cədvəllər.

  5. Axtarış üsulları.

  6. Açarlar.

  7. Nəticə.



Ədəbiyyatların siyahısı


  1. Ребекка М. Райордан, 'Основы реляционных баз данных'

  2. Фролов А. В. Базы данных в Интернете практическое руководство по созданию Web-приложений с базами

  3. http://www.verivizyon.com

  4. http://www.database.com

  5. http://www.kitapyurdu.com

  6. http://www.e-dersane.com

  7. http://www.Oracle.com

  8. http://www.farukcubukcu.com


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.azrefs.org 2016
rəhbərliyinə müraciət

    Ana səhifə