25
Veri Tabanı-I 6.Hafta 06.01.2012 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR 1 Tablo Oluşturma

12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Veri Tabanı-I 6.Hafta

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

1

Tablo Oluşturma

Page 2: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Sunucu

SUNUCU-DATABASE-TABLO-ALAN

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

2

numarası adı soyadı

0913109001 Ali Can

0913109002 Nuri Koç

0913109003 Fatma Kara

Tablo

Database

Satır,Kayıt (row, record)

Kolon,nitelik,alan(Column,attributes,fields)

Verilerimizi kayıt ettiğimiz yapılar tablolardır. Bu sebeple tabloların düzdün bir şekilde oluşturulması; verilerimizin sağlıklı bir şekilde saklanmasına ve sorgulanabilmesine olanak sağlayacaktır.

Page 3: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

SQL komutu yazma ve Çalıştırma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

3

SQL ( Structured Query Language) kodları ile SQL sunucular üzerinde komutlar (emir) verilir-

işletilir.

MS SQL sunucuda SQL kodları yazıldıktan sonra kodlar seçilip (F5 veya Run tuşu ile

işletilir- icra edilir- çalıştırılır).

Komutlar sadece Run edildiği zaman işlem yapar. Bu sebeple komutlar üzerinde bir

değişiklik yapıldığında mutlaka komut (F5 veya Run tuşu ile) ile tekrara çalıştırılmalıdır.

Page 4: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Database Oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

4

-- MYO adında database oluşturmak için Create DATABASE MYO ON PRIMARY (

Name = myo_db, FILENAME = 'C:\myo.mdf' , SIZE = 10 MB, MAXSIZE = 25 MB, FILEGROWTH = 20%

) LOG ON (

Name = myo_log, FILENAME = 'C:\myo.ldf' , SIZE = 3 MB, MAXSIZE = 5 MB, FILEGROWTH = 1 MB

)

Page 5: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Veri Tanımlama

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

5

CREATE TABLE Özellikleri ve veri türleri ile birlikte yeni bir tablo (ilişki)

tanımlamak için kullanılır.

Özellikler için NOT NULL tanımlaması yapılabilir.

Birincil anahtar özellikler (PRIMARY KEY) tanımlanabilir.

Farklı (UNIQUE) değerler alması gereken özellikler tanımlanabilir.

Bir alana veri girişi CHECK Constrain ile kontrol edilebilirr

Bir alana DEFAULT değer verilebilir

Yabancı anahtarlar (FOREIGN KEY) tanımlanabilir.

Page 6: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo Oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

6

-- üzerinde çalışılacak database mutlaka seçilmelidir

USE DATABASE MYO

GO

CREATE TABLE ogrenci

(

numara char(10) NOT NULL,

adsoy VARCHAR(50) NOT NULL,

dogumtarihi DateTime,

PRIMARY KEY (numara),

UNIQUE(numara)

);

CREATE TABLE ogrenci

(

numara char(10) NOT NULL PRIMARY KEY UNIQUE ,

adsoy VARCHAR(50) NOT NULL,

dogumtarihi DateTime

);

Page 7: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo Oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

7

Page 8: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo Oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

8

IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam eden artan bir alandır. Bu alana dışardan veri girilmez. idno int identity(1,1) primary key, Değişkenadi Tip IDENTITY ( başlangıç değeri , artış miktarı) Tip : int, bigint, smallint, tinyint, decimal, numeric Başlangıç değeri : tamsayı bir değer Artış miktarı : tamsayı bir değer CHECK : bir alana girilebilecek değerlerin kontrol edilmesi için kullanılır. Örn : int vize CHECK ( vize >=0 AND final <=100)

Page 9: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo Oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

9

CREATE TABLE musteri

(

musterino int NOT NULL PRIMARY KEY ,

adi varchar(15) NOT NULL,

soyadi varchar(15) not null,

adres varchar(50),

telefon varchar(11) CHECK( len(telefon)=10 )

);

adres

MÜŞTERİ Müşteri_No

Adı Soyadı

telefon

Musteri_no adi soyadi adres telefon

int Varchar(15) Varchar(15) Varchar(50) Varchar(11)

Page 10: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo Oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

10

CREATE TABLE ogrenciders ( idno int identity(1,1) primary key, numara char(10) , derskodu char(7), vize int DEFAULT (0) CHECK( vize>=0 AND vize <=100), final int DEFAULT (0) CHECK(final >=0 AND final <=100), tarih DateTime Default ( GetDate( ) ) );

id numara derskodu vize final tarih

Otomatik tamsayı

Char(10) char(7) (0-100 arası tamsayı)

(0-100 arası tamsayı)

Otomatik tarih atılacak

final

ogrenciders numara

vize derskodu

tarih

idno

Page 11: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo Oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

11

DERS

Ders Adı Kredi

Ders Kodu

ÖĞRENCİ

Ad

numara

Soyad

Ogrenci_ders N N

vize

Final

CREATE TABLE OGRENCI ( numara char(10) primary key , ad varchar(15), soyad varchar(15) );

CREATE TABLE DERS ( derskodu char(7) primary key , ders_adi varchar(25), kredi real );

create table ogrenci_ders ( numara char(10) FOREIGN KEY REFERENCES OGRENCI(numara) , derskodu char(7) FOREIGN KEY REFERENCES DERS (derskodu), vize int check( vize>=0 AND vize <=100), final int check( final>=0 AND final <=100), )

Page 12: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo Oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

12

CREATE TABLE URUNLER ( urun_no int primary key , urun_adi varchar(15), fiyati money );

CREATE TABLE MUSTERI ( musterino int primary key , ad varchar(25), soyad varchar(25) );

create table SATIS ( musterino int FOREIGN KEY REFERENCES MUSTERI ON DELETE CASCADE ON UPDATE CASCADE , urun_no int FOREIGN KEY REFERENCES URUNLER ON DELETE CASCADE ON UPDATE CASCADE , satis_miktari real, satis_fiyati money, satis_tarihi DateTime Default(GetDate()) )

ürün_No ÜRÜNLER

ÜrünAdı

Fiyatı

MÜŞTERİ

Müşteri_No

Adı Soyadı

SATIŞ

Satış fiyatı Satış miktarı

Satış Tarihi

Page 13: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo Oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

13

CREATE TABLE URUNLER ( urun_no int primary key , urun_adi varchar(15), fiyati money );

CREATE TABLE MUSTERI ( musterino int primary key , ad varchar(25), soyad varchar(25) );

create table SATIS ( musterino int FOREIGN KEY REFERENCES MUSTERI ON DELETE SET DEFAULT ON UPDATE CASCADE , urun_no int FOREIGN KEY REFERENCES URUNLER ON DELETE SET NULL ON UPDATE CASCADE , satis_miktari real, satis_fiyati money, satis_tarihi DateTime Default(GetDate()) )

ürün_No ÜRÜNLER

ÜrünAdı

Fiyatı

MÜŞTERİ

Müşteri_No

Adı Soyadı

SATIŞ

Satış fiyatı Satış miktarı

Satış Tarihi

Page 14: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo oluşturma (hesaplanmış alanlar)

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

14

CREATE TABLE hesaplanmis_tablo ( num int, vize int, final int, ort AS (vize + final)/2 -- hesaplanmış alan ) ; insert into hesaplanmis_tablo (num,vize,final) VALUES(101,50,80) select * from hesaplanmis_tablo

NOT: Hesaplanmış alanların tipi yoktur otomatik sonucun tipini alır ve alanlara veri girilmez.

Page 15: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

15

CREATE TABLE cust ( cust_id uniqueidentifier NOT NULL DEFAULT newid(), ad nvarchar(20), soy nvarchar(20) ) insert into cust (ad , soy) VALUES('Ayşe', ‘Şaçbağı') insert into cust (cust_id, ad, soy) VALUES ( NEWID() , 'Melda‘ , 'Başçı') select * from cust

NOT: Uniqueidentifier Alanların verileri

NEWID() fonksiyonu ile elde edilen bir değer olmalıdır.

Page 16: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

16

CREATE TABLE ExampleTable (PriKey int PRIMARY KEY, timestamp); insert into ExampleTable ( PriKey)VALUES(1) insert into ExampleTable ( PriKey)VALUES(2) select * from ExampleTable CREATE TABLE ExampleTable2 (PriKey int PRIMARY KEY, VerCol rowversion) ; insert into ExampleTable2 ( PriKey)VALUES(1) insert into ExampleTable2 ( PriKey)VALUES(2) select * from ExampleTable2

NOT: ExampleTable deki

timestamp ve

ExampleTable2 deki

VerCol rowversion alanına veri girilmez

Page 17: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Vizard(sihribaz) ile Tablo oluşturma

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

17

Database-Tables seçilir ve üzerinde sağ kliknenip- New Table … seçildiğinde aşağıdaki ekran gelir. Bu ekrandan değişken adı ve değişken tipi seçilerek tablonun alanları belirlenip kaydet butonuna basılır . Karşımıza aşağıdaki gibi tablo adını girebileceğimiz açılan pencereden tablo adını yazıp OK ile işelm tamamlanır.

Page 18: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Tablo Üzerinde Düzeltme Yapmak

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

18

DROP TABLE: Bir tabloyu (ilişkiyi) silmek için kullanılır.

Örnek; DROP TABLE ogrenci;

ALTER TABLE :

Bir tabloya (ilişkiye) yeni bir özellik eklemek,

mevcut bir özelliği silmek veya alfasayısal bir özelliğin uzunluğunu değiştirmek

için kullanılır. Yeni eklenen özellik NULL değer alacağı için, özellik NOT NULL

tanımlanamaz.

Örnek; ALTER TABLE ogrenci ADD yas int;

ALTER TABLE ogrenci DROP dogumtarihi;

ALTER TABLE ogrenci MODIFY COLUMN adsoy varchar(30);

Page 19: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Geçici Tablolar(Temporary Tables)

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

19

# ile başlayan tablolar geçici (temprorary) tablolardır.

SQL server da geçici tablolar tempdb tabanı içerisinde oluşturulurlar.

SQL Server a login olduğunuzda SQL Server sizin için bir oturum(Session) yaratır. Oluşturduğunuz geçici

tablolar bu session da tutulur.

SQL Server da açtığınız Session ı kapattığınızda geçici tablolarınızda yok edilir.

Sonraki salyttaki örnekdeki gibi “Local Temporary Table” lar sadece oluşturuldukları Session da kullanılabilir

durumdadır.

Eğer bir stored procedure geçici bir tablo oluşturuyor ise procedure sonlandığında tablo da yok edilir.

Eğer birden çok session da kullanılmak üzere bir geçici tablo(Global Temporary Table) oluşturmak isterseniz

aşağıdaki kodu kullanabilirsiniz. Bu tip tablolar bu tabloyu kullanan son Session kapandığında yani kullanıcı

çıkış yaptığında yok edilirler.

Temporary table ların farklı kullanıcılar tarafından aynı anda oluşturulma ihtimalleri vardır. Bu durumda sistem kendilerine unique(benzersiz) bir id ataması yaparak isim çakışmalarını engeller.

Page 20: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Geçici Tablolar(Temporary Tables)

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

20

CREATE TABLE #gecici

(

numara int primary key,

ad varchar(50),

soyad varchar(50)

)

CREATE TABLE ##gecici_global

(

numara int primary key,

ad varchar(50),

soyad varchar(50)

)

SELECT * FROM #global

SELECT * FROM ##gecici_global

Page 21: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

MS SQL Veri Tipleri

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

21

bigint numeric

bit smallint

decimal smallmoney

int tinyint

money

float real date datetimeoffset

datetime2 smalldatetime

datetime time

char varchar

text

Character Strings

Tamsayı Reel Sayı

nchar nvarchar

ntext

binary varbinary

image

Unicode Character Strings Binary Strings

cursor timestamp

hierarchyid uniqueidentifier

sql_variant xml

table

Diğer Data Tipleri

Detaylı Bilgi için:http://msdn.microsoft.com/en-us/library/ms187752.aspx

Date and Time

Page 22: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

TABLODA EKLEME - SİLME - GÜNCELLEME

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

22

INSERT

INSERT INTO Tablo [(Kolon Listesi)] VALUES (Değerler Listesi)

DELETE

DELETE FROM Tablo WHERE Koşullar

UPDATE

UPDATE Tablo SET Kolon1=Değer1, Kolon2=Değer2… WHERE Koşullar

Page 23: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

EKLEME

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

23 INSERT INTO ogrenci (numara , adsoy , dogumtarihi) VALUES ('1013160101' , 'Arda Koç' , '1990-12-18')

INSERT INTO Tablo ( Kolon Listesi ) VALUES (Değerler Listesi)

Bir tabloya (ilişkiye) bir veya daha fazla satır eklemede kullanılır.

Kolon listesi zorunlu değil. Belirtilmemişse TABLO’daki tüm kolonlar

CREATE TABLE komutundaki sırada kabul edilir.

Kolon için DEFAULT belirtilmemişse ve boş bırakılacaksa, değerler

listesinde NULL belirtilmelidir.

Değerler Listesi sayısı, Kolon Listesi sayısına eşit olmalıdır.

Değerler Listesi’ndeki verinin yeri, ilgili kolonun yerine uygun olmalıdır.

Değerler Listesi’ndeki verinin türü, ilgili kolonun veri türünde olmalıdır.

Page 24: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

EKLEME

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

24

INSERT INTO ogrenci (numara , adsoy , dogumtarihi) VALUES ('1013160101' , 'Arda Koç' , '1990-12-18') INSERT INTO ogrenci VALUES ('1013160101' , 'Arda Koç' , '1990-12-18') Var olan yeni_ogrenci tablosu aktarır. Her iki tablonun da aynı yapıda olması gerekir INSERT INTO ogrenci_yeni SELECT * FROM ogrenci INSERT INTO ogrenci_yeni (numara , adsoy , dogumtarihi) ( SELECT numara , adsoy , dogumtarihi FROM ogrenci WHERE numara <100) Yeni ogrenci_yeni TABLOSU oluşturur ve ogrenci tablosundan numara ve adsoy bilgilerini aktarır SELECT numara, adsoy INTO ogrenci_yeni FROM ogrenci

Page 25: 12 Veri Tabanı-I 6 - İlhan UYSALilhanuysal.com/ders_notlari/veritabani/veri_tabani1...Tablo Oluşturma 12 Ü-UR 8 IDENTITY alanı kayıt eklendikçe otomatik olarak artarak devam

Soru ve Önerileriniz …

06

.01

.20

12

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

25

?