Sql’de tablo oluşturmak, veri girmek ve veri çekmek

SQL ile “Araba Kiralama” ( Rent a car ) için bir database oluşturalim. Database yapısında 5 tane tablo(relation) olacak.

Customer tablosu, araba kiralayan kullanıcıların bilgilerini tutacak.

Branchs tablosu, birden fazla şubeden kiralama yapıldığı için bu şubelerin adlarını tutacak.

Car tablosu, kiralanan araba bilgilerini(model, marka…vs) tutacak.

Salesman tablosu, bu şubelerde çalışan müşteri temsilcilerinin bilgilerini tutacak.

Rent_info tablosu, kiralama işleminlerinin kaydını tutacak. Kimin hangi arabayi nezaman ve kimden aldığının bilgileri yer alacak.

Öncelikle bu tabloları oluşturacak SQL cümleciklerini yazalim.

Customer tablosu için:

CREATE TABLE customer(cus_id number(5) primary key,fname varchar2(20) NOT NULL,lname varchar2(20) NOT NULL,birth_date date);

Branchs tablosu için:

CREATE TABLE branchs(branch_id number(3) primary key,branch_name varchar2(20) NOT NULL);

Car tablosu için:

CREATE TABLE car(car_id number(5) primary key,car_model number(4) NOT NULL,car_name varchar2(20) NOT NULL,branch_id number(3) references branch(branch_id));  

Salesman tablosu için:

CREATE TABLE salesman(sales_id number(5) primary key, s_fname varchar2(20) NOT NULL, s_lname varchar2(20) NOT NULL, branch_id number(3) references branch(branch_id)); 

Rent_info tablosu için:

CREATE TABLE rent_info(rent_id number(5) primary key, cus_id number(5) references customer(cus_id),  car_id number(5) references car(car_id), rent_date date, sales_id number(5) references salesman(sales_id ));

image

Tabloları oluşturduk. Şimdi bu tablolar için veri girişleri yapacak SQL cümlelerini yazalım. Örnek olarak her tablo için birer tane sql cümlesi yazacağım.

INSERT INTO customer VALUES (1 , 'Hakan','Kesen', TO_DATE ('12.05.1980', 'dd.mm.yyyy'));
INSERT INTO branchs VALUES(1,'Beşiktaş');
INSERT INTO car VALUES(1,2006,'BMW',1);
INSERT INTO salesman VALUES(11,'Ali','Arcak',1);
INSERT INTO rent_info VALUES(100, 1, 1,TO_DATE(' 11.12.2008', 'dd.mm.yyyy'), 11);

Veri girişlerinde dikkat edilmesi gerek şey  tablolardaki bağlantıların mantıklı bir şekilde girilmesi. Örneğin, x arabası, y şubesinden satıldıysa o satışı yapan satış sorumlusu da o şubeden olması gerekir.

Şimdi de birden fazla tablodan veri çekmek için gerekli sql cümleciklerini yazalım.

  1. 2004 ve daha yeni model araba kiralayanların ad ve soyadlarını görünteliyiniz.

    image

    SELECT fname,  lname,  car_model FROM customer, car, rent_info WHERE customer.cus_id=rent_info.cus_id AND rent_info.car_id=car.car_id AND car_model>=2004;
  2. Şişli şubesinden araba kiralayanlarin ad-soyadlari ile kiraladıkları araba bilgilerini gösteriniz.

    image

    SELECT fname, lname, car_model, car_name, branch_name FROM customer, car, rent_info, branchs WHERE customer.cus_id=rent_info.cus_id AND rent_info.car_id=car.car_id AND car.branch_id=branchs.branch_id AND branch_name='Şişli'; 
  3. Derya Seven adlı müşteri temsilcisinden araba kiralayanlarin ad-soyadlarini gösteriniz.

    image

    SELECT fname, lname FROM customer, rent_info, salesman WHERE customer.cus_id=rent_info.cus_id AND salesman.sales_id=rent_info.sales_id AND s_fname='Derya' AND s_lname='Seven'; 
  4. 28.08.2008 tarihinden önce kiralanan araba ve şube isimlerinin görüntüleyiniz.(Tarihleriyle beraber sıralı bir biçimde)

    image

     SELECT branch_name, rent_date, car_name FROM car, rent_info, branchs WHERE rent_info.car_id=car.car_id AND car.branch_id=branchs.branch_id AND rent_date<=To_date ('28.08.2008', 'dd.mm.yyyy') order by rent_date;
  5. 31 yaşından büyük müşterilerin(araba kiralayan) ad-soyadini gösteriniz.(Doğum tarihleriyle birlikte)

    image

    SELECT fname, lname, birth_date FROM customer WHERE birth_date <=To_date('1978', 'yyyy ');

Leave a Reply

Your email address will not be published. Required fields are marked *