OOP Java 22: Stack

Stack “Data structure” (Verilənlər strukturu) olub aşağıdakı formada extent/implement münasibətində olur:

(Şəklin mənbəsi)

Stack deyərkən last-in-ferst-out (sonuncu daxil olan ilk çıxar) başa düşülməlidir. Bunu da biz aşağıdakı şəkildə rahatlıqla görə bilərik:

(Şəklin mənbəsi)

Stack-in list yaradarkən aşağıdakı formada kodlardan istifadə edə bilərsiniz:

Stack<Integer> stackInteger = new Stack<>();
Stack<String> stackString = new Stack<>();

Stack-in əsas 5 metodu vardır:

  • boolean isEmpty(); – Stack listimizin boş olub olmadığını yoxlayır.
  • void push(Object item); – Stack-imizə yeni elemet əlavə edir.
  • Object peek(); – Stack listimizin sonuncu elemetini qaytarır.
  • Object pop(); – Stack listimizin sonuncu elemetini qaytarır və onu silir.
  • int search(Object item); – hansısa bir elementin stackdə varsa index-sini (yerini) qaytarır.

Gəlin bir ədəd nümunəylə məsələni yekunlaşdıraq:

import java.util.Stack;

public class Main {
	public static void main(String[] args) {
		Stack<Integer> stack = new Stack<>();
		System.out.println("Empty: " + stack);
		System.out.println("Empty: " + stack.isEmpty());
		
		stack.push(1001);
		
		System.out.println("Empty: " + stack);
		System.out.println("Empty: " + stack.isEmpty());

		stack.push(1002); 
		stack.push(1003);
		stack.push(1001);
		
		System.out.println("Non-Empty stack : "  + stack);
        System.out.println("Non-Empty stack: Pop Operation : "  + stack.pop());
        System.out.println("Non-Empty stack : After Pop Operation : "  + stack);
        System.out.println("Non-Empty stack : search() Operation : "  + stack.search(1002));
        System.out.println("Non-Empty stack : "  + stack.isEmpty());
	}
}

Advertisements

SQL 11: Java SQL əlaqə (Oracle 11g)

Bu yazımızda artıq Oracle 11g ilə Java kodlarımız üzərindən əlaqə quracağıq. Təkrar qeyd edim ki, biz Oracle 11g-dən istifadə edirik, əgər siz MySQL-dən istifadə edirsinizsə bu youtube video listinə göz atın.

Javada yazılmış fayllar .jar formatlı kitabxana formasında saxlanılır. Biz öz layihəmizə başqa kitabxanaları internetdən yükləyib əlavə edə bilərik.

Bu yazımızda Java üzərindən Oracle ilə əlaqə quracağıq. Bunun iki yolu var:

  1. Driver Menecer
  2. ConnectionPool

(Adlarını səhv yazmış ola bilərəm.) Biz ilk yoldan istifadə edəcəyik. Bunun üçün biz o JDBC jar-ını yükləməliyik. Bu linkə keçid edib yükləyin.

Layihəmizin üstünə sağ kikləyib New => Folder seçirik

Folderimizin adını “lib” qoyaq:

Yüklədiyimiz faylı (o JDBC6) kopyalayıb lib qovluğuna yapışdıraq:

Layihəmizin bu kitabxanadan istifadə edə bilməsi üçün əvvəlcə bunu tanıtmaq lazımdır. Bunun üçün də layihənin üzərinə sağ kilikləyirik: Properties => Java Build Path => Add Library => User Library => Next

User Libraray = > New seçək, Kitabxalarımız üçün olan qovuğumuza ad qoyaq, (mən “Kiatbxana” qoyacam)

Sonra Add JARs.. seçib ordan öz lazimi kitabxanalarımızı seçirik.

Applay And close, Finish, Applay and Close. Hazırdır:

Bundan sonra artıq biz Oracle ilə əlaqə qura bilərik. Bunun üçün DriverManager sinfinin getConnection static metodunu çağıracağıq. Həmi metod 3 arqument alır. Url, User və Password. Onları müvafiq olaraq dolduracam və try/catch edəcəm.

Bu əlaqə bizə “Connection” qaytaracağı üçün “c” adlı bir Connection dəyişəni təyin edib həmin kodu ona mənimsədirik. Ardınca oracle-ın driver-ini tapmaq lazımdı. Bunun üçün Class.forName metoduna OracleDriver adresini ötürürük.

Qeyd: “thin@” arasında qoşa nöqtə olmalı idi, “thin:@”

Bu yazıdan da bu qədər. Növbəti dəfə qurduğumuz əlaqə vasitəsiylə məlumatları konsola çapa verəcəyik. Ondan sonra isə yəqin ki, yenə bir müddət fasilə verərik. Zaman göstərəcək. Hələlik!

 

SQL 10: Constraints

Constraints bizim dildə Məhdudiyyətlər deməkdir. SQL üçün müəyyən məhdudiyyətlər vermək üçün istifadə edilən açar sözlər aşağıdakılardır:

  • Primary Key – Cədvəldəki həmin sütünun hər sətrində eyni olmayan dəyərlər aldığını bildirir
  • Unique – Bir sütundakı bütün dəyərlərin fərqli olmağını göstərir.
  • Not null – Sütundakı heç bir sətrin boş olmamasını üçün istifadə edilir
  • Foreign Key – Başqa bir cədvəldəki sütuna uyğun olaraq əlaqələndirilmək üçün işlədilir
  • Default – Sütundakı bütün sətirlərdə heç bir dəyər verilməyibsə əvvəldən təyin edilən dəyəri mənimsədər
  • Check – Bir sütundakı bütün dəyərlərin müəyyən bir şərtə uyğun olduğunu yoxlayır
  • Index – Məlumatlar bazasında sürətli şəkildə məlumat yaratmaq və almaq üçün istifadə edilir

Daha ətraflı aşağıdakı linklərə baxın:

[1] https://medium.com/gokhanyavas/constraints-kullan%C4%B1m%C4%B1-26bb89dbcd2b
[2] https://www.w3schools.com/sql/sql_constraints.asp

SQL 9: Join-lər

Bu yazıda biz əsas JOIN-lərə (Daxili birləşdirmə) baxacağıq, Joinlər aşağıdakı kimidir:

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN

Hər biri üçün müvafiq nümunəyə baxmaq üçün şagirdlər və müəllimlər cədvəlindən istifadə edək:

Uzun uzun yazmayacam. Ümumi bir bilgi və qısa məlumatlar qeyd etməyə çalışacam.

JOIN-lər əsasən bir-biri ilə əlaqəli iki cədvəldən istifadə edərkən lazım olur.

Belə deyək: İki cədvəl əlaqələnərkən:

  • İnner Join – ortaqları
  • Left Join – birincinin ikinciyə aid olmayan hissəsini
  • Right Join – ikinicinin birinciyə aid olmayan hissəsini

götürür.

Ümid edirəm ziahedici oldu. Əlavə istəsəz bu yazıya da göz ata bilərsiniz.

SQL 8: Əlaqələr

SQL üçün aşağıdakı 4 əsas cədvəllər arası əlaqə növü var:

  • Birin-birə
  • Birin-çoxa
  • Çoxun-birə
  • Çoxun-çoxa

Gəlin hər biri üçün nümunəyə baxaq və bu əlaqəni necə təmin edəcəyimizi  qeyd edək.

  1. Birin-birə
    Hər bir ölkənin 1 bayrağı var, hər bayraq da sadəcə 1 ölkəyəməxsusdur.
    Əlaqə üçün əlavə ediməli sütun hər hansı birinə qoyulmalı “Unique” olmalıdır.
  2. Birin-çoxa
    Hər insanın bir neçə telefonu var, amma bir telefon sadəcə 1 insana məxsus ola bilər.
    (Parent insan, Child telefon) – Əlaqə üçün əlavə edilməli sətr telefonlar cədvəlinə (child) qoyulmalı
  3. Çoxun-birə
    Hər məhsulun 1 kateqoriyası var, lakin hər kateqoriyaya bir çox məhsul aid ola bilər.
    (Parent məhsul, Child kateqoriya) – Əlaqə üçün əlavə edilməli sətr Məhsul cədvəlinə (parent) qoyulmalı
  4. Çoxun-çoxa
    Hər bir yazıçının bir neçə kitabı ola bilər, hər bir kitabın bir neçə müəllifi ola bilər.
    Əlaqə üçün ayrı bir cədvəl yaradılır və yazıçı-kitab əlaqəsi qurulur.

Əlavə üçün İnformatika 10cu sinif kitabının 104cü səhifəsinə baxa bilərsiniz. (Link)

 

SQL 7: Açar sözlər

Bu yazıdan etibarən Sırf SQL üçün deyil, Oracle SQL (PL SQL) üçün olan əmirlərə, açar sözlərə baxacağıq. Bundan sonra olan yazılar da sırf Oracle 11g-yə uyğun Java üzərindən olacaq. Nə tam bir SQL yazı silsiləsi, nə də tam bir Oracle dərsliyi. Ortaya qarışıq.

Yox əgər sizə MySQL (T-SQL) lazımdırsa bu linkə göz atın deyirəm.

  • SELECT DISTINCT ADRESS FROM STUDENT – Burada “DISTINCT”-dən istifadə etdik, belə ki: Student cədvəlindəki Adress sətirini bazadan gətirərkən oxşarları ixtisar etməyə kömək edir.
  • SELECT * FROM STUDENT WHERE ROWNUM <=2; – Burada “ROWNUM” – Student cədvəlimizdəki ilk iki sətri çıxardı.
  • SELECT ROWNUM No, NAME, SURNAME FROM STUDENT; – Burada isə “ROWNUM” – gətirilən nəticənin əvvəlinə “No” başlığı ilə sətirlərin sırasını yazdı.
  • OR, AND –  bildiyimiz və – vəya (|| və &&) şərtləri üçün istifadə edilir.
  • SELECT * FROM STUDENT WHERE ID IN (1,3); – Burada “IN”-dən sonra mötərizəylə yazılan hissələr “IN”-dən öncə verilmiş sütun üzrəaxtarış edib sadəcə mötərizə daxilindəkilərə bərabər olan sətirləri gətirir. Qısaca ID-si 1 və ya 3 olanların siyahısını gətirir.
  • SELECT * FROM STUDENT WHERE NAME BETWEEN ‘O’ AND ‘N’; Burada BETWEEN verilən iki dəyişən arasında (əlifba sırası ilə) olan hərflərə uyğun sətirləri göstərəcək (Adı O ilə başlayanalrdan N ilə başlayanlara qədər)
  • SELECT * FROM STUDENT WHERE NAME LIKE ‘%a%’; – LIKE ilə boşluqları (əvvəli ya axırı) (%) nəzərə alınaraq daxilində “a” olan NAME-lərə məxsus sətirləri gətirdik. Qeyd: _ isə oradakı simvolun nə olmasının fərq etmədiyini bildirir, yəni B_k_ – yazsaz: Bakı, Baki, Baku – olan bütün nəticələr gələcək.
  • SELECT NAME || ‘ ‘ || SURNAME AS FULL NAME FROM STUDENT S;- birləşdirmək üçün istifadə edilir || ‘ ‘ || (iki sütündakı yazıları birləşdirmək üçün). AS (Alias deyilir) – həmin sütunun adını dəyişir (NAME və SURNAME sütularındakı yazını ortaya boşluq qoyaraq birləşdirib sütun adı kimi “FULL NAME” yazdırdıq) STUDENT-dən sonrakı isə (S) onun qısa yazılışını yaratmaq üçündür. Bir neçəcə cədvəldən istifadə edərkən yazılış daha rahat olsun deyə istifadə edilir

Bu yazıdan bu qədər, vaxt olsa burada da göz atın. Aşağıda bonus olaraq Müəllim cədvəlinin yaradılmasını və ilk müəllimin əlavə edilməsi, şagirdlər cədvəlinə müəlimlərin ıd-sini saxlayan sütun əlavə edilməsi və bütün şagirlərə müəllim id-si kimi 1 əlavə edilməsi kodlarını görürsünüz. Şəkil üçün Fuad Paşabəyliyə təşəkkürlər.

 

SQL 6: Əmirlər 4 – DCL

DCL (Data Control Language) – Verilənlərin yoxlanılması dilidir. DCL əmirlərinə gəlib bir-bir baxaq:

  • GRANT
    GRANT istifadəçilərə icazələr vermək üçün istifadə edilir

    • GRANT (all | icazələr) ON (icazəVerilənHissələr) TO (icazəVerilənİstifadəçilər)
  • REVOKE
    REVOKE isə GRANT ilə verilən ciazəni geri qaytarmaq üçün istifadə edilir:

    • REVOKE (all | icazələr) TO/FROM (icazəVerilənİstifadəçilər)

Ərtaflı türkc aşağıdakı linlərdən oxuya bilərsiniz:

[1] https://medium.com/gokhanyavas/t-sql-veri-kontrol-dili-dcl-9817a294bf7b

[2] http://www.ibrahimbayraktar.net/2014/08/sqlde-yetkilendirme-grant-deny-revoke.html