SlideShare a Scribd company logo
1 of 27
Veri Tabanı
Hafta 2
SQL'e giriş
Sibel Kuzgun Akın
SQL nedir?

SQL: Standard Query Language

Bir veri tabanından diğerine değişen
unsurları olsa da, ANSI standardıdır.

İlişkisel veri tabanlarıyla işlem yapmak için
kullanılır.
− Sorgu; kayıt ekleme, silme ve
güncelleme
− Veri yapılarını değiştirme
− Yetki verme ve geri alma

4GL: 4. kuşak programlama dili
Veri Tanımlama Komutları

DDL: Data Definition Language

Veri tabanı şemasını tanımlamak için kullanılan
komutlardır.

Veri yapılarını oluşturmak, değiştirmek veya silmek
için kullanılırlar.

Veri sözlüğü (data dictionary): Bir veri tabanını ve
onu oluşturan öğelerin (örnek: tablolar) yapısını,
biçimini, içeriğini tanımlayan bilgi kümesidir. Hem
veri tabanına erişmek, hem de onu değiştirmek için
kullanılır.
CREATE

Veri tabanının kendisini veya içinde bir öğe
yaratmak için kullanılır.

CREATE komutu ile yarabilirsiniz:
− Tablo (table)
− Dizin (index)
− Görünüm (view)
− Saklı yordam (stored procedure)
− İşlev (function)
− Tetikleyici (trigger)
CREATE DATABASE crm;
CREATE TABLE
CREATE TABLE musteri (
musteri_no INT NOT NULL,
firma_adi VARCHAR(100) NOT NULL,
sehir VARCHAR(20) NULL,
ulke VARCHAR(20) NULL,
vergi_dairesi VARCHAR(20) NULL,
vergi_no VARCHAR(11) NULL
);
Veri tipleri

Sayısal: INT, DECIMAL, DOUBLE

Alfanumerik: CHAR, VARCHAR

Tarih / saat: DATE, TIME, DATETIME,
TIMESTAMP

Mantıksal: BOOLEAN

Metin: TEXT

İkilik (binary): BLOB
Sayısal veri tipleri

INT, TINYINT, SMALLINT, BIGINT...
− Unutma: En küçük ve en büyük değerler!
− https://dev.mysql.com/doc/refman/8.0/en/integer-types.html

DECIMAL
− Nokta (ondalık ayracı) sabit. Kesin değer.

FLOAT, DOUBLE
− Nokta kayıyor!!! Yaklaşık değer.

BIT: 1 veya 0 saklayalım :)
− Örnek: b'101'
Alfanümerik veri tipleri
CHAR ve VARCHAR arasındaki fark nedir?

CHAR(5): 5 karakterlik yer bellekte veya
diskte ayrılır.

VARCHAR(5): Değer atanıncaya kadar yer
ayrılmaz. Değer atanınca, kaç karakterse o
kadar yer ayrılır.
Tüm değerler '' veya “” içine yazılmalıdır:

Örnek: 'Ahmet Yılmaz'
Tarih veri tipleri (MySQL)

DATE: 'YYYY-AA-GG'

TIME: 'SS:DD:SS'

DATETIME: 'YYYY-AA-GG SS:DD:ss'
− '2018-10-05 21:30:04'

TIMESTAMP:
− '1970-01-01 00:00:01' UTC '2038-01-09
03:14:07' UTC arasındaki zamanlar için.
− https://www.codeproject.com/Tips/12156
35/MySQL-DATETIME-vs-TIMESTAMP
DROP

Veri tabanını veya CREATE ile yaratılan
öğeleri silmek için kullanılır.
DROP DATABASE crm;
DROP TABLE musteri;
TRUNCATE

Bir tablonun içindeki tüm kayıtları siler.

Veri tabanı implementasyonuna bağlı
olarak, kayıtların diskte işgal ettiği yeri de
boşaltabilir.

Eğer boşaltılmak istenen tablonun
kayıtlarına verilen yabancı anahtar
referansları varsa, TRUNCATE komutuna
izin verilmez.
TRUNCATE TABLE musteri;
RENAME
Bir tablonun veya veri tabanı öğesinin adını
değiştirmek için kullanılır.
ALTER TABLE musteri
RENAME TO firma;
ALTER

Bir veri tabanının veya onun öğelerinden
birinin özelliklerini değiştirmek için kullanılır.

ALTER komutundan sonra ADD, DROP,
CHANGE, RENAME gibi komutlar da gelir.
ALTER TABLE musteri
ADD PRIMARY KEY (musteri_no);
ALTER ile tabloları değiştirmek

Kolon ekleme:
ALTER TABLE musteri
ADD COLUMN notlar TEXT NULL;

Dizin (index) ekleme:
ALTER TABLE musteri
ADD INDEX (firma_adi);

Bir kolonu değiştirme:
ALTER TABLE musteri
CHANGE firma_adi firma_adi
VARCHAR(150) NOT NULL;
NULL mı 0 mı?
Boş / Null

Bir değeri bilmiyorsak ne yazacağız?

Örnek: Yaşı bilmiyorsak 0 mı yazalım?
Ama ya bebekse ve yaşı o yüzden 0 ise?

Bilinmeyen veya uygun olmayan değerler
için NULL kullanılır.

Veri yapılarını tanımlarken NULL
yazarsak, o alan boş bırakılabilir, NOT
NULL yazarsak boş bırakılamaz!
CREATE TABLE
CREATE TABLE sinif_listesi (
ogrenci_no VARCHAR(10) NOT NULL,
ad VARCHAR(30) NOT NULL,
soyad VARCHAR(30),
sinif TINYINT
);
ALTER TABLE sinif_listesi
ADD PRIMARY KEY (ogrenci_no);
Veri Değiştirme Komutları

DML: Data Manipulation Language

Tablolardaki kayıtları süzmek ve
değiştirmek için kullanılan komutlardır.
− SELECT: Kayıtları süzmek ve göstermek
− INSERT: Kayıt eklemek
− UPDATE: Kaydı değiştirmek
− DELETE: Kaydı silmek
INSERT

Var olan bir tabloya yeni kayıt eklemek için
kullanılır.
INSERT INTO musteri (musteri_no,
firma_adi, sehir, ulke,
vergi_dairesi, vergi_no, notlar)
VALUES (1, 'Yakamoz', 'Bursa',
'Türkiye', 'Nilüfer', '928 xxx
yyyy', 'yazılım firması');
UPDATE

Var olan bir kaydın bir kısmını veya
tamamını değiştirmek için kullanılır.
UPDATE musteri
SET notlar = 'teknik destek ve
yazılım'
WHERE musteri_no = 1;
DELETE

Tablodan bir veya daha fazla kaydı silmek
için kullanılır.
DELETE FROM musteri
WHERE musteri_no = 1;
SELECT

Bir veya daha fazla tablodan sorgulama
yapmak için kullanılır.

Kayıtları süzer ve bir sonuç kümesi olarak
geri döner.
SELECT gösterilecek-alanlar
FROM hangi-tablodan
WHERE süzme-koşulları;
Dizin (indeks)

Tablolar üzerinde yapılan sorgulamalarda
hızı artırmak için dizin (indeks) kullanılır.

Dizinleri bir kitabın arkasındaki indeks
bölümüne benzetebilirir. Aradığımız
anahtar sözcüğün hangi sayfalarda
(tablonun neresinde) olduğunu bize
söylerler.
Birincil anahtar ve indeksler

Birincil anahtar (primary key) de bir
indekstir.

Birincil anahtar her tabloda bir tane olur.

Üzerinde kurulu olduğu kolon veya
kolonların
− Tekil olması
− Boş olmaması zorunludur.
Birincil anahtar ve indeksler

Ancak indeksler, tanımlarına bağlı olarak
boş değer alabilen kolonlar üzerine de
kurulur.

Açıkça tekil (UNIQUE) olarak
tanımlanmamışlarsa, tekil olmak zorunda
değillerdir.
Performans açısından...
(+) Dizin kurmak, sorgularken hızı artırır.
ÖNEMLİ: Bir kolon üzerine dizin
kurulmamışsa, o kolon değeri için süzme
yapıldığında; sorgu sırasında bütün tablo
baştan sona okunur.
(-) İndeksler (dizinler) diskte yer işgal eder.
(-) Bir tablo üzerinde pek çok indeks (dizin)
varsa; kayıt ekleme, güncelleme ve silme
işlemleri daha uzun sürer.
ADD INDEX

Tabloya indeks ekleme:
ALTER TABLE musteri
ADD INDEX (sehir);

Tabloya tekil indeks ekleme:
ALTER TABLE musteri
ADD UNIQUE (firma_adi);

More Related Content

Similar to Veri Tabani: SQL'e Giriş (Hafta 2)

Veri̇ tabani oluşturma ve yapilandirma
Veri̇ tabani oluşturma ve yapilandirmaVeri̇ tabani oluşturma ve yapilandirma
Veri̇ tabani oluşturma ve yapilandirmaoktaygokgol
 
İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03Cihan Özhan
 
Stored procedure
Stored procedureStored procedure
Stored procedureoktaygokgol
 
Performance Tuni̇ng
Performance Tuni̇ngPerformance Tuni̇ng
Performance Tuni̇ngAnar Godjaev
 
Sql egitim-cd-si
Sql egitim-cd-siSql egitim-cd-si
Sql egitim-cd-sisersld61
 
Sql egitim-seti
Sql egitim-setiSql egitim-seti
Sql egitim-setisersld61
 
Sql kursu-ucreti
Sql kursu-ucretiSql kursu-ucreti
Sql kursu-ucretisersld61
 
Sql Server2008 For Developers By Tarik
Sql Server2008 For Developers By TarikSql Server2008 For Developers By Tarik
Sql Server2008 For Developers By TarikTarık Kranda
 
Sql en-iyi-kursu
Sql en-iyi-kursuSql en-iyi-kursu
Sql en-iyi-kursusersld61
 
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdanOrneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdanAnar Godjaev
 
Sql egitimi-atasehir
Sql egitimi-atasehirSql egitimi-atasehir
Sql egitimi-atasehirsersld61
 
Sql egitimi-tuzla
Sql egitimi-tuzlaSql egitimi-tuzla
Sql egitimi-tuzlasersld61
 
Sql egitimi-sancaktepe
Sql egitimi-sancaktepeSql egitimi-sancaktepe
Sql egitimi-sancaktepesersld61
 

Similar to Veri Tabani: SQL'e Giriş (Hafta 2) (20)

Veri̇ tabani oluşturma ve yapilandirma
Veri̇ tabani oluşturma ve yapilandirmaVeri̇ tabani oluşturma ve yapilandirma
Veri̇ tabani oluşturma ve yapilandirma
 
İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02
 
Sql Server 2.hafta
Sql Server 2.haftaSql Server 2.hafta
Sql Server 2.hafta
 
Sunu
SunuSunu
Sunu
 
Sunu
SunuSunu
Sunu
 
İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Performance Tuni̇ng
Performance Tuni̇ngPerformance Tuni̇ng
Performance Tuni̇ng
 
Mssql Slayt 2
Mssql Slayt 2Mssql Slayt 2
Mssql Slayt 2
 
Konu anlatım
Konu anlatımKonu anlatım
Konu anlatım
 
Sql egitim-cd-si
Sql egitim-cd-siSql egitim-cd-si
Sql egitim-cd-si
 
Sql egitim-seti
Sql egitim-setiSql egitim-seti
Sql egitim-seti
 
Sql kursu-ucreti
Sql kursu-ucretiSql kursu-ucreti
Sql kursu-ucreti
 
Sql Server2008 For Developers By Tarik
Sql Server2008 For Developers By TarikSql Server2008 For Developers By Tarik
Sql Server2008 For Developers By Tarik
 
Sql en-iyi-kursu
Sql en-iyi-kursuSql en-iyi-kursu
Sql en-iyi-kursu
 
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdanOrneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
 
Sql egitimi-atasehir
Sql egitimi-atasehirSql egitimi-atasehir
Sql egitimi-atasehir
 
Sql egitimi-tuzla
Sql egitimi-tuzlaSql egitimi-tuzla
Sql egitimi-tuzla
 
Sql egitimi-sancaktepe
Sql egitimi-sancaktepeSql egitimi-sancaktepe
Sql egitimi-sancaktepe
 
Sql ornek
Sql ornekSql ornek
Sql ornek
 

More from Sibel Kuzgun AKIN

More from Sibel Kuzgun AKIN (9)

Requirements Analysis
Requirements AnalysisRequirements Analysis
Requirements Analysis
 
Cost Estimation
Cost EstimationCost Estimation
Cost Estimation
 
User Interface and User Experience
User Interface and User ExperienceUser Interface and User Experience
User Interface and User Experience
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Testing Software
Testing SoftwareTesting Software
Testing Software
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Normal Formlar
Normal FormlarNormal Formlar
Normal Formlar
 
ER Şemaları
ER ŞemalarıER Şemaları
ER Şemaları
 

Veri Tabani: SQL'e Giriş (Hafta 2)

  • 1. Veri Tabanı Hafta 2 SQL'e giriş Sibel Kuzgun Akın
  • 2. SQL nedir?  SQL: Standard Query Language  Bir veri tabanından diğerine değişen unsurları olsa da, ANSI standardıdır.  İlişkisel veri tabanlarıyla işlem yapmak için kullanılır. − Sorgu; kayıt ekleme, silme ve güncelleme − Veri yapılarını değiştirme − Yetki verme ve geri alma  4GL: 4. kuşak programlama dili
  • 3. Veri Tanımlama Komutları  DDL: Data Definition Language  Veri tabanı şemasını tanımlamak için kullanılan komutlardır.  Veri yapılarını oluşturmak, değiştirmek veya silmek için kullanılırlar.  Veri sözlüğü (data dictionary): Bir veri tabanını ve onu oluşturan öğelerin (örnek: tablolar) yapısını, biçimini, içeriğini tanımlayan bilgi kümesidir. Hem veri tabanına erişmek, hem de onu değiştirmek için kullanılır.
  • 4. CREATE  Veri tabanının kendisini veya içinde bir öğe yaratmak için kullanılır.  CREATE komutu ile yarabilirsiniz: − Tablo (table) − Dizin (index) − Görünüm (view) − Saklı yordam (stored procedure) − İşlev (function) − Tetikleyici (trigger) CREATE DATABASE crm;
  • 5. CREATE TABLE CREATE TABLE musteri ( musteri_no INT NOT NULL, firma_adi VARCHAR(100) NOT NULL, sehir VARCHAR(20) NULL, ulke VARCHAR(20) NULL, vergi_dairesi VARCHAR(20) NULL, vergi_no VARCHAR(11) NULL );
  • 6. Veri tipleri  Sayısal: INT, DECIMAL, DOUBLE  Alfanumerik: CHAR, VARCHAR  Tarih / saat: DATE, TIME, DATETIME, TIMESTAMP  Mantıksal: BOOLEAN  Metin: TEXT  İkilik (binary): BLOB
  • 7. Sayısal veri tipleri  INT, TINYINT, SMALLINT, BIGINT... − Unutma: En küçük ve en büyük değerler! − https://dev.mysql.com/doc/refman/8.0/en/integer-types.html  DECIMAL − Nokta (ondalık ayracı) sabit. Kesin değer.  FLOAT, DOUBLE − Nokta kayıyor!!! Yaklaşık değer.  BIT: 1 veya 0 saklayalım :) − Örnek: b'101'
  • 8. Alfanümerik veri tipleri CHAR ve VARCHAR arasındaki fark nedir?  CHAR(5): 5 karakterlik yer bellekte veya diskte ayrılır.  VARCHAR(5): Değer atanıncaya kadar yer ayrılmaz. Değer atanınca, kaç karakterse o kadar yer ayrılır. Tüm değerler '' veya “” içine yazılmalıdır:  Örnek: 'Ahmet Yılmaz'
  • 9. Tarih veri tipleri (MySQL)  DATE: 'YYYY-AA-GG'  TIME: 'SS:DD:SS'  DATETIME: 'YYYY-AA-GG SS:DD:ss' − '2018-10-05 21:30:04'  TIMESTAMP: − '1970-01-01 00:00:01' UTC '2038-01-09 03:14:07' UTC arasındaki zamanlar için. − https://www.codeproject.com/Tips/12156 35/MySQL-DATETIME-vs-TIMESTAMP
  • 10. DROP  Veri tabanını veya CREATE ile yaratılan öğeleri silmek için kullanılır. DROP DATABASE crm; DROP TABLE musteri;
  • 11. TRUNCATE  Bir tablonun içindeki tüm kayıtları siler.  Veri tabanı implementasyonuna bağlı olarak, kayıtların diskte işgal ettiği yeri de boşaltabilir.  Eğer boşaltılmak istenen tablonun kayıtlarına verilen yabancı anahtar referansları varsa, TRUNCATE komutuna izin verilmez. TRUNCATE TABLE musteri;
  • 12. RENAME Bir tablonun veya veri tabanı öğesinin adını değiştirmek için kullanılır. ALTER TABLE musteri RENAME TO firma;
  • 13. ALTER  Bir veri tabanının veya onun öğelerinden birinin özelliklerini değiştirmek için kullanılır.  ALTER komutundan sonra ADD, DROP, CHANGE, RENAME gibi komutlar da gelir. ALTER TABLE musteri ADD PRIMARY KEY (musteri_no);
  • 14. ALTER ile tabloları değiştirmek  Kolon ekleme: ALTER TABLE musteri ADD COLUMN notlar TEXT NULL;  Dizin (index) ekleme: ALTER TABLE musteri ADD INDEX (firma_adi);  Bir kolonu değiştirme: ALTER TABLE musteri CHANGE firma_adi firma_adi VARCHAR(150) NOT NULL;
  • 15. NULL mı 0 mı?
  • 16. Boş / Null  Bir değeri bilmiyorsak ne yazacağız?  Örnek: Yaşı bilmiyorsak 0 mı yazalım? Ama ya bebekse ve yaşı o yüzden 0 ise?  Bilinmeyen veya uygun olmayan değerler için NULL kullanılır.  Veri yapılarını tanımlarken NULL yazarsak, o alan boş bırakılabilir, NOT NULL yazarsak boş bırakılamaz!
  • 17. CREATE TABLE CREATE TABLE sinif_listesi ( ogrenci_no VARCHAR(10) NOT NULL, ad VARCHAR(30) NOT NULL, soyad VARCHAR(30), sinif TINYINT ); ALTER TABLE sinif_listesi ADD PRIMARY KEY (ogrenci_no);
  • 18. Veri Değiştirme Komutları  DML: Data Manipulation Language  Tablolardaki kayıtları süzmek ve değiştirmek için kullanılan komutlardır. − SELECT: Kayıtları süzmek ve göstermek − INSERT: Kayıt eklemek − UPDATE: Kaydı değiştirmek − DELETE: Kaydı silmek
  • 19. INSERT  Var olan bir tabloya yeni kayıt eklemek için kullanılır. INSERT INTO musteri (musteri_no, firma_adi, sehir, ulke, vergi_dairesi, vergi_no, notlar) VALUES (1, 'Yakamoz', 'Bursa', 'Türkiye', 'Nilüfer', '928 xxx yyyy', 'yazılım firması');
  • 20. UPDATE  Var olan bir kaydın bir kısmını veya tamamını değiştirmek için kullanılır. UPDATE musteri SET notlar = 'teknik destek ve yazılım' WHERE musteri_no = 1;
  • 21. DELETE  Tablodan bir veya daha fazla kaydı silmek için kullanılır. DELETE FROM musteri WHERE musteri_no = 1;
  • 22. SELECT  Bir veya daha fazla tablodan sorgulama yapmak için kullanılır.  Kayıtları süzer ve bir sonuç kümesi olarak geri döner. SELECT gösterilecek-alanlar FROM hangi-tablodan WHERE süzme-koşulları;
  • 23. Dizin (indeks)  Tablolar üzerinde yapılan sorgulamalarda hızı artırmak için dizin (indeks) kullanılır.  Dizinleri bir kitabın arkasındaki indeks bölümüne benzetebilirir. Aradığımız anahtar sözcüğün hangi sayfalarda (tablonun neresinde) olduğunu bize söylerler.
  • 24. Birincil anahtar ve indeksler  Birincil anahtar (primary key) de bir indekstir.  Birincil anahtar her tabloda bir tane olur.  Üzerinde kurulu olduğu kolon veya kolonların − Tekil olması − Boş olmaması zorunludur.
  • 25. Birincil anahtar ve indeksler  Ancak indeksler, tanımlarına bağlı olarak boş değer alabilen kolonlar üzerine de kurulur.  Açıkça tekil (UNIQUE) olarak tanımlanmamışlarsa, tekil olmak zorunda değillerdir.
  • 26. Performans açısından... (+) Dizin kurmak, sorgularken hızı artırır. ÖNEMLİ: Bir kolon üzerine dizin kurulmamışsa, o kolon değeri için süzme yapıldığında; sorgu sırasında bütün tablo baştan sona okunur. (-) İndeksler (dizinler) diskte yer işgal eder. (-) Bir tablo üzerinde pek çok indeks (dizin) varsa; kayıt ekleme, güncelleme ve silme işlemleri daha uzun sürer.
  • 27. ADD INDEX  Tabloya indeks ekleme: ALTER TABLE musteri ADD INDEX (sehir);  Tabloya tekil indeks ekleme: ALTER TABLE musteri ADD UNIQUE (firma_adi);