Yapısal Sorgulama Dili SQL: VTYS Giriş Hafta 5 Ders Notu

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 47

Yapısal Sorgulama Dili

SQL

VTYS Giriş Hafta 5


Ders Notu
SQL

Structured Query Language - Yapısal Sorgulama Dili

Tarihi Gelişim:
• Veri tabanı kavramının olgunlaşması ile bir veri sorgulama diline ihtiyaç
duyulmaya başlanmıştır.
• İlk başta matematiksel bir sözdizimine sahip olan SQUARE adlı bir dil
geliştirilmiştir.
• Kolay kullanım hedeflenerek İngilizceye benzer bir sözdizimi
kullanılması planlanmıştır.
• SEQUEL – Structured English Query Language olarak adlandırılan bu
yeni dil SQUARE’in yerini almıştır.
• Günümüzde SEQUEL’in kısaltması olarak SQL kullanılmaya
başlanmıştır.
SQL – Yapısal Sorgulama Dili

• SQL bir sorgulama dilidir.


• SQL’in kendine özgü deyimleri ve kuralları vardır.
• Hemen hemen tüm ilişkisel veri tabanı yönetim sistemlerinin ortak
dili olarak kabul edilmiştir.
• Ortak bir dil olarak standart bir yapıya sahip olsa da veritabanına
göre değişebilen bir takım farklı ifade biçimleri vardır.
• SQL veriler üzerinde üç ana kontrol alanı sağlamaktadır:
• Veri Tanımlama-DDL ( Create, Alter, Drop, ... )
• Veri İşleme-DML ( Select, Update, Insert, Delete, )
•Veri Control- DCL (Grant, Deny, Revoke)
Veritabanı Oluşturma

CREATE DATABESE <veritabanı_adi>


ON
PRIMARY (NAME=dosya_ismi,
FILENAME=fiziki_dosya,
SIZE=dosyaboyu,
MAXSIZE=mak_dos_boy,
FILEGROWTH=dos_art_boy)
LOG ON
(NAME=dosya_ismi,
FILENAME=fiziki_dosya,
SIZE=dosyaboyu,
MAXSIZE=mak_dos_boy,
FILEGROWTH=dos_art_boy)
Veritabanı Oluşturma

CREATE DATABESE okul


ON
(NAME=okul_dat,
FILENAME=c:\okuldat.mdf,
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
LOG ON
(NAME=okul_log,
FILENAME=c:\okullog.ldf,
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5 MB)
Tablo Oluşturma

CREATE TABLE <tablo adı>


(<Tablonun alanın adı> <alanın tipi> <alanın kısıtlaması>,
<Tablonun alanın adı> <alanın tipi> <alanın kısıtlaması>,
<Tablonun alanın adı> <alanın tipi> <alanın kısıtlaması>)
Tablo Oluşturma

CREATE TABLE ogrenciler


(ogr_no int NOT NULL PRIMARY KEY,
ogr_adi varchar(25) ,
bolum varchar(25))

CREATE TABLE personel


(personel_id int NOT NULL,
soyad nvarchar(255) NOT NULL,
isim nvarchar(255) ,
adres nvarchar(255) ,
sehir nvarchar(255) ,
UNIQUE (personel_id))
CONSTRAINT (kısıtlayıcılar)

❖NULL / NOT NULL


❖DEFAULT
❖PRIMARY KEY
❖CHECK
❖UNIQE
❖FOREIGN KEY
CONSTRAINT - NULL / NOT NULL

CREATE TABLE ogrenciler


(ogr_no int NOT NULL,
ogr_adi varchar(25) ,
bolum varchar(25))

Öğrenci numarasının otomatik artmasını isterseniz

CREATE TABLE ogrenciler


(ogr_no int IDENTITY (1, 1) NOT NULL,
ogr_adi varchar(25) ,
bolum varchar(25))
CONSTRAINT - DEFAULT

CREATE TABLE ogrenciler


(ogr_no int NOT NULL,
ogr_adi varchar(25) ,
bolum varchar(25) DEFAULT ‘Endüstri Müh‘)
CONSTRAINT – PRIMARY KEY

CREATE TABLE ogrenciler


(ogr_no int PRIMARY KEY,
ogr_adi varchar(25) ,
bolum varchar(25) DEFAULT ‘Endüstri Müh‘)
veya

CREATE TABLE notlar


(ogr_no int NOT NULL,
ders_kodu varchar(25) not null ,
vize int,
final int,
CONSTRAINT pkkey PRIMARY KEY (ogr_no,
CONSTRAINT – CHECK
CREATE TABLE notlar
(ogr_no int NOT NULL,
ders_kodu varchar(25) not null ,
vize int CHECK (vize>=0),
final int CHECK (final>=0),
CONSTRAINT pkkey PRIMARY KEY (ogr_no, ders_kodu))

CREATE TABLE notlar


(ogr_no int NOT NULL,
ders_kodu varchar(25) not null ,
vize int,
final int,
CONSTRAINT pkvize CHECK (vize>=0 and vize<=100))
CONSTRAINT pkfinal CHECK (final>=0 and final<=100))
CONSTRAINT – UNIQE
CREATE TABLE personel
(personel_id int NOT NULL,
soyad nvarchar(255) NOT NULL,
isim nvarchar(255) ,
adres nvarchar(255) ,
sehir nvarchar(255) ,
UNIQUE (personel_id))
CONSTRAINT – FOREIGN KEY
OGRENCİ(ogr_no, ad, soyad, bolum) ve DERS(ders_kodu,
ders_ad) tabloları ile ilişkili olacak NOTLAR tablosunu ve ilişkiyi
oluşturan sql ifadeleri verilmiştir.
CREATE TABLE notlar
(ogr_no int FOREIGN KEY REFERENCES
ogrenci(ogr_no), ders_kodu varchar(25) FOREIGN KEY
PREFERENCES ders (ders_kodu), vize int, final int)
CREATE TABLE notlar
( ogr_no int, ders_kodu varchar (25), vize int, final int,
CONSTAINT fk_ogr_no FOREIGN KEY (ogr_no)
REFERENCES ogrenci (ogr_no)
CONSTAINT fk_dkod FOREIGN KEY (ders_kodu)
REFERENCES ders(ders_kodu)
ALTER

∗ ALTER TABLE tablo_adı ADD yeni_sut_ad özellikler


∗ ALTER TABLE tablo_adı DROP COLUMN sut_ad
∗ ALTER TABLE tablo_adı ALTER COLUMN sut_ad sut_özellik

ALTER TABLE ogrenci ADD UNIQE(ogr_no)

ALTER TABLE ogrenci ADD CONSTRAINT uc_de UNIQE (ogr_no, ad)

ALTER TABLE ogrenci ADD PRIMARY KEY(ogr_no)

ALTER TABLE ogrenci ALTER COLUMN d_tarihi varchar(15) NULL

ALTER TABLE ogrenci DROP COLUMN d_tarihi


DROP

∗ DROP TABLE tablo adı


∗ DROP DATABASE veritabanı_adı

∗ TRUNCATE TABLE tablo_adı

∗ DROP TABLE ogrenci

∗ TRUNCATE TABLE ogrenci

∗ DROP DATABASE ogrenci


DML – VERİ İŞLEME DİLİ

∗SELECT
∗INSERT
∗UPDATE
∗DELETE
Sorgulama İşlemleri: Select Deyimi
SELECT yazım kuralları:

1.Kural: SQL deyimleri büyük – küçük harf ayırımından etkilenmez.


SQL deyiminin bir kısmı büyük; diğer bir kısmı küçük harflerle ifade
edilebilir.

1.Kural: Bir SQL deyimi bir veya daha fazla satırda yer alabilir.

1.Kural: SQL komutları kısaltılamaz veya yarıda kesilerek alt


satırdan devam edemez.
2.Kural: Bazı VTYS ler satır sonuna ; eklenmesi gerekir

SQL deyimleri düzenlenirken bu kuralları ve önerileri göz önünde


tutmak gerekmektedir. Aksi takdirde sorgu hata verebilir.
Select Deyimiyle

• Sorgulanacak olan tablonun her sütunu yazılabilir


• Bir veya birden fazla tabloda sorgulama yapılabilir
• Kayıtlar belirli koşul veya koşullara göre sorgulanabilir
• Sorgu esnasında birden fazla sütun birleştirilebilir veya
ek bilgiler eklenebilir
• Sayısal veriler üzerinde matematiksel işlemler
uygulanabilir
• Bir veya birden fazla sütuna göre sıralama yapılabilir.
• Farklı tablolardan ortak sütunlarla ilişkilendirip ortak
özellikli kayıtlar seçilebilir
• İç içe select cümleleri kullanılabilir.
SELECT

∗ SELECT * FROM tablo_adı

∗ SELECT sütun1, sütun2, …. FROM tablo_adı

∗ SELECT sütun1, sütun2, …. FROM tablo_adı WHERE koşul


∗ Koşul ifadelerinde kullanılabilecek ek özellikler
∗ (<, >, <=, >=, NOT)
∗ AND
∗ OR
∗IN
∗LIKE
SELECT
∗ SELECT * FROM personel
∗ SELECT no, ad FROM personel
∗ SELECT * FROM personel WHERE ad=‘Ahmet’
∗ SELECT * FROM personel WHERE per_id=2
∗ SELECT * FROM personel WHERE gorev=‘Mühendis’ AND
sehir=‘İzmir’
∗ SELECT * FROM personel WHERE gorev=‘Mühendis’ OR
sehir=‘İzmir’
∗ SELECT * FROM personel WHERE sehir IN (‘İzmir’, ‘Ankara’)
∗ SELECT * FROM personel WHERE ad LIKE(‘%A%’)
∗ SELECT * FROM personel WHERE ad LIKE ‘_A_’ OR sehir IN
(‘İzmir’, ‘Ankara’)
INSERT
∗ INSERT INTO tablo_adı VALUES (değer1, deger2, …)

∗ Tüm alanlara veri girilecekse sütunların belirtilmesi gerekmez


fakat sadece belirli sütunlara veri girilecekse veri girilecek
alanların belirtilmesi gerekmektedir.

∗ INSERT INTO tablo_adı (sütun1, sütun2,…) VALUES(değer1,


değer2, …)
UPDATE
∗UPDATE tablo_adı
SET sütun1=değer, sütun2=değer,….
WHERE koşul

∗UPDATE personel
SET mail=‘iletisim@...’,
telefon=‘12345612’ WHERE
ad=‘Ali’ and soyad=‘Kayhan’
DELETE
∗DELETE FROM tablo_adı WHERE koşul

∗DELETE FROM personel WHERE ad LIKE


‘%hm%’

∗TURUNCATE TABLE tablo_adı


∗ DELETE FROM tablo_adı
aynı işlemi yapar
VERİ CONTROL DİLİ (DCL)

∗ Veri erişimini düzenlemek için kullanılan komutlardır.


GRANT, DENY ve REVOKE
∗ GRANT: kullanıcıların kayıtlar üzerinde işlem
yapmasına ve SQl çalıştırmasına izin veriri
∗ DENY: kullanıcıların kayıtları kullanmasını kısıtlar
∗ REVOKE: daha önce yapılan tüm kısıtlama ve izinleri
iptal eder.
GRANT

GRANT{ALL veya izinler}


ON {izin alanı}
TO{kullanıcılar}

GRANT SELECT ON ogrenci TO deneme


GRANT CREATE TABLE ON ogrenci TO deneme
GRANT SELECT ON ogrenci TO deneme, deneme2
DENY

DENY {ALL veya izinler}


ON {izin alanı}
TO{kullanıcılar}

DENY CREATE TABLE TO deneme


DENY SELECT ON ogrenci TO deneme

*Oracle kullanmamaktadır.
REVOKE

REVOKE {ALL veya izinler}


FROM {kullanıcılar}

REVOKE ALL FROM public


REVOKE SELECT ON personel FROM public
REVOKE UPDATE ON ogrenci FROM deneme
Örnek Veritabanı Uygulama
Örnek Veritabanı Uygulama
Ogrenci Bolum
Ders_kayit ogr_no bolum_id
ders_kayit_id ad_soyad bolum_ad
n
ogr_no adres
ders_id d_tarih
n bolum_ıd n
Donem
kayit_tarihi
mezun_tarihi
Ogrt_El
Ogrt_id
Ogr_basari ad_soyad
unvan
basari_id n n
bolum_id
ders_id Ders
ogr_no
n ders_id
vize
ders_adi
final n
ogrt_id
butunleme
bolum_id
n
Aşağıdaki Tabloları Oluşturunuz
Ders Ogrt_El
ders_id nvarchar(10) Ogrt_id nvarchar(10)
ders_adi nvarchar(50) ad_soyad nvarchar(50
ogrt_id nvarchar(10) unvan nvarchar(15)
bolum_id nvarchar(10) bolum_id nvarchar(10)

Ogrenci Ders_kayit
ogr_no int ders_kayit_id int
ad_soyad nvarchar(50) ogr_no int
adres nvarchar(150) ders_id nvarchar(10)
d_tarih date Donem int
bolum_ıd nvarchar(10)
kayit_tarihi date Ogr_basari
mezun_tarihi date
basari_id int
ders_id nvarchar(10)
Bolum ogr_no int
bolum_id nvarchar(10) vize int
bolum_ad nvarchar(50) final int
butunleme int
DERS TABLOSU SQL
∗create table ders
(ders_id nvarchar(10) primary key,
ders_adi nvarchar(50),
ogrt_id nvarchar(10),
bolum_id nvarchar(10))
OGRENCİ TABLOSU SQL
∗create table ogrenci
(ogr_no int primary key,
ad_soyad nvarchar(50),
adres nvarchar(150),
d_tarihi date,
bolum_id nvarchar(10),
kayit_tarihi date,
mezun_tarihi date,)
BOLUM TABLOSU SQL
∗create table bolum
(bolum_id nvarchar(10) primary key,
bolum_adi nvarchar(50))
OGRT_EL TABLOSU SQL
∗create table ogrt_el
(ogrt_id nvarchar(10) primary key,
ad_soyad nvarchar(50),
unvan nvarchar(15),
bolum_id nvarchar(10))
DERS KAYIT TABLOSU SQL
∗create table ders_kayit
(ders_kayit_id int primary key,
ogr_no int,
ders_id nvarchar(10),
donem int)
OGRENCİ BAŞARI TABLOSU SQL
∗create table ogrenci_basari
(basari_id int primary key,
ogr_no nvarchar(10),
ders_id nvarchar(10),
vize int,
final int,
butunleme int)
Ders Tablosuna Verileri Ekleyiniz

ders_id ders_adi ogrt_id bolum_id


ENM220 İmalat Sistemleri ve Stratejileri A003 02
ELK206 İstatistik II A065 04
MAK218 Malzeme ve İmalat Teknolojileri A012 06
ENM216 Veritabanı Yönetimi A144 02
ENM214 Yöneylem Araştırması-I A003 02
Ders Tablosuna Verileri Ekleme
∗INSERT INTO ders VALUES ('ENM220',
'İmalat Sistemleri ve Stratejileri', 'A003', '02')

∗INSERT INTO ders VALUES ('ELK206',


İstatistik II', 'A065', '04')

∗…
Öğrenci Tablosuna Verileri Ekleyiniz

ogr_no ad_soyad adres d_tarihi


1212 Yakup ATEŞ Ankara 15.12.1994
1214 Esra ÜNAL İstanbul 10.02.1992
1216 Hilal ÖZTÜRK İstanbul 23.04.1993
1234 Fatma AKSOY Bursa 18.03.1993
1245 Gözde BOZKURT Yozgat 29.05.1994
1255 Hakan TUNCER Ankara 30.08.1992
1266 Buğra AYDIN İstanbul 29.09.1993
Öğrenci Tablosuna Verileri Ekleme
∗INSERT INTO ogrenci (ogr_no, ad_soyad,
adres, d_tarihi) VALUES (1212, 'Yakup ATEŞ',
'ANKARA', '1994-12-15')

∗INSERT INTO ogrenci (ogr_no, ad_soyad,


adres, d_tarihi) VALUES (1214, Esra ÜNAL',
‘İSTANBUL', '1992-02-10')
∗…
Öğrenci Tablosuna Verileri Ekleyiniz

ogr_no bolum_id kayit_tarihi mez_tarihi


1212 02 04.09.2010
1214 02 05.09.2010
1216 04 04.09.2010
1234 02 04.09.2010
1245 06 06.09.2010
1255 02 04.09.2010
1266 04 05.09.2010
Öğrenci Tablosuna Verileri Ekleme
∗UPDATE ogrenci
SET bolum_id='02', kayit_tarihi='2010-09-04'
WHERE ogr_no=1212

∗UPDATE ogrenci
SET bolum_id='02', kayit_tarihi='2010-09-05'
WHERE ogr_no=1214

∗…
Bölüm Tablosuna Verileri Ekleyiniz

bolum_id bolum_adi
02 Endüstri Mühendisliği
04 Elektrik-Elektronik Mühendisliği 
06 Makine Mühendisliği
Bölüm Tablosuna Verileri Ekleme
∗INSERT INTO bolum VALUES (‘02', ‘Endüstri
Mühendisliği')

∗INSERT INTO bolum VALUES (‘04', ‘Elektrik-


Elektronik Mühendisliği ')

∗INSERT INTO bolum VALUES (‘06', ‘Makine


Mühendisliği')
Öğrt El. Tablosuna Verileri Ekleyiniz

ogrt_id ad_soyad unvan bolum_id


A003 Cemil TAŞ Prof. Dr 02
A012 Ahmet ATAK Doç. Dr. 06
A065 Ayşe YILMAZ Yrd. Doç. Dr. 04
A144 Hasan ALAN Yrd. Doç. Dr. 02
Öğr_El Tablosuna Verileri Ekleme
∗INSERT INTO ogrt_el VALUES ('A003', 'Prof.
Dr.', 'Cemil TAŞ', '02')
∗INSERT INTO ogrt_el VALUES ('A012', ‘Doç.
Dr.', ‘ahmet ATAK', '06')
∗INSERT INTO ogrt_el VALUES ('A065', ‘Yrd.
Doç. Dr.', ‘Ayşe YILMAZ', '04')
∗INSERT INTO ogrt_el VALUES ('A144', ‘Yrd.
Doç. Dr.', ‘Hasan ALAN', '02')

You might also like