Üye Kayıt Üye Giriş

SQL PLUS - DERS 1


SQL PLUS - DERS 1

 

Yardımcı Komutlar:
Sql komutları sadece hafızada tutulurlar. İşletilen her komut hafıza tutulur. O yüzden kullanıcının isini kolaylaştırmak için bazı ek komutlara ihtiyaç duyulmuştur. Sql Plus ’a girmek için komut satırında şu şekilde girilir;

SQLPLUS [kullanıcı adı [/şifre [@Database]]]

A[PPEND] Text -->Satir sonuna kelime ekler.
C[HANGE] /eski/yeni -->eski text yerine yeni text ekler. Yeni alanı bos bırakılırsa eski alan olarak belirtilen text silinir.
CL[EAR] BUFF[ER] -->SQL hafızasındaki tüm satırları siler, hafızayı boşaltır.
DEL -->Aktif olarak bulunduğu satiri siler. Satir no belirtilirse o satiri siler.
I[NPUT] Text -->Satir arasına Text ifadesiyle belirtilen cümleyi ekler.
L[IST] -->Hafızadaki tüm satırları listeler.
L[IST] m n -->Sadece m ile n arasındaki satırları listeler.
R[UN] -->Hafızadaki SQL satirini çalıştırır. Ayni işlevi "R,r,/, ; " karakterleride yapar.
n Text -->n satırındaki cümleyi Text ifadesi belirtilen alana yazılan cümle ile değiştirir.
0 Text -->Bulunduğu satırdan bir önceki satıra yeni alan açar ve text 'i oraya ekler.
SAVE Dosya -->Hafızadaki komutu belirtilen dosya adı altında saklar.
GET Dosya -->Belirtilen dosyayı hafızaya yükler.
START Dosya-->Belirtilen dosyayı direkt çalıştırır. Hafızaya yüklemez. @ işaretide aynidir.
ED[IT] Dosya-->Belirtilen dosyayı bir editör içinde açar.
SPOOL -->Ekranda yapılan her türlü isi dosyaya atar. SPOOL OFF ile dosyaya kayıt işlemini durdurur.
EXIT -->SQL ’den çıkış sağlar.
HELP Komut -->Belirtilen komut için açıklayıcı bilgi verir.

SQL Plus Fonksiyonları:
Fonksiyonlar sayesinde;Datalar üzerinde hesap yapabilir, Datalar üzerinde değişiklikler yapılabilir, Grup oluşturularak bu kayıtlar için kullanılabilir. Tarih datası çeşitli formatlarda görüntülenebilir, Kolon tipleri değiştirilebilir. İç içe fonksiyonlar tanımlanabilir. Öncelikle içteki fonksiyon çalışır. Çıkan sonuca göre dıştaki fonksiyon işlem görür.
Sys.Dual : Oracle database ’inde bulunan tek kolon ve tek satırdan oluşan bir tablodur. Belirli bir tablodan değerler almadan fonksiyonların kullanılması gerektiğinde bu tablo kullanılır.

Karakter Fonksiyonları:

LOWER(Text) : Text olarak belirtilen alanı küçük harfe çevirir.
UPPER(Text) : Text olarak belirtilen alanı büyük harfe çevirir.
INITCAP(Text) : Text olarak belirtilen alanın bas harfini büyük diğerlerini küçük harfe çevirir.
CONCAT (Text1,Text2) : Text1 olarak belirtilen alan ile Text2 alanını birleştirir. ‘ || ‘ simgeside aynidir.
SUBSTR(Text,m,n) : Text alanının m. karakterinden itibaren (m. karakter dahil) n kadar karakter alır. LENGTH(Text) : Text alanın karakter uzunluğunu Sayısal olarak verir.
NVL(KOLON,DEGER) : Kolonun aldığı değer null ise değer alanında belirtilen değeri verir.

Sayısal Fonksiyonları :
ROUND(Sayı,m): Sayı alanına girilen rakam, m olarak belirtilen ondalık kadar yuvarlar.

Örneğin;

ROUND(45.923,2) -->45.92
ROUND(45.923,0) -->46
ROUND(45.923,-1) -->50
ROUND(45.951,2) -->45.92
ROUND(45.929,2) -->45.93

TRUNC(Sayı,m): Sayı alanına girilen rakam, m olarak belirtilen ondalık kadar sondan keser.

TRUNC(54.923,2) -->45.92
TRUNC(54.923,-1) -->40
TRUNC (54.929,2) -->45.92

MOD(m,n) : m Sayısı n Sayısına bölündüğünde kalan rakamı bulur.

Zamansal Fonksiyonları ve İşlemleri:


Tarih + Sayı -->Tarihe Sayı kadar gün ekler.
Tarih - Sayı -->Tarihe Sayı kadar gün çıkarır.
Tarih - Tarih -->İki tarih arasındaki gün farkını Sayısal olarak verir.
Tarih + Sayı / 24 -->Tarihe Sayı kadar saat ekler.
SYSDATE -->Sistem tarihini verir. Oracle ’ın varsayılan tarih formatı ‘DD-MON-YY’ seklindedir. Üzerinde aritmetiksel işlemler yapılabilir.
MONTHS_BETWEEN(tarih1,tarih2)-->İki tarih arasını ay olarak bulur.
ADD_MONTHS (tarih,n) -->Tarihe n kadar ay ekler.
NEXT_DAY(tarih,' gün' ) -->tarih ‘den sonraki günün ilk tarihini verir.
LAST_DAY(tarih,' gün' ) -->tarih ‘den önceki günün ilk tarihini verir.
ROUND(tarih[,' fmt '] ) -->tarih ‘i belirtilen formata göre aya veya yıla göre yuvarlar.
TRUNC(tarih[,' fmt '] ) -->tarih ‘i belirtilen formata göre aya veya yıla göre keser.

Çevirme Fonksiyonları:

TO_CHAR(Sayı,[‘fmt’]) : Girilen tarih veya Sayıyı karakter tipine çevirir.

Tarih parametreleri;

YYYY -->Yılı rakamsal olarak gösterir.
YEAR àYılı yazısal olarak verir.
BC -->Millattan önce ve sonrası için zaman verir.
MM -->Ayi rakamsal olarak gösterir.
MONTH -->Ayi yazısal olarak verir. Belirtilen ülkenin tarih yazısıyla verir.
MON -->Ayi yazısal sadece ilk 3 harfini verir. Belirtilen ülkenin tarih yazısıyla verir.

RM -->Ayi roma rakamıyla gösterir.
DD -->Günü rakamsal olarak gösterir.
DAY --> Günü yazısal olarak verir.

Sayısal parametreleri;

--> Rakamdır.
--> Sıfır rakamı verir.
$ --> Rakamın başına $ işareti koyar.
. --> Ondalık haneye ayırır.
, --> Rakamı 3’er hane ayırarak aralarına virgül koyar.
MI --> Negatif Sayılar için sonuna – işareti koyar.

Örneğin " x nolu kişi xxx'dir." Formatında ekrana liste oluşturalım (id number);

SELECT TO_CHAR(id) || ' nolu kişi ' ||name||'dir.'

Örneğin sistem tarihini DD-MM-YYYY olarak gösterelim;

SELECT TO_CHAR(sysdate,' DD-MM-YYYY')

Örneğin sistem zamanını HH:MI olarak gösterelim;

SELECT TO_CHAR(sysdate,' HH:MI' )

TO_NUMBER (Karakter) : Girilen karakteri Sayısal ifadeye çevirir.
TO_DATE(char, [‘fmt’]) : Girilen karakteri belirtilen formatta tarih formatına çevirir.


Örneğin tarih kolonundaki değerleri, 7 /11/1998 tarihine eşit olanların listesini oluşturalım. Ama kolon değerleri string olarak ayin uzun ad, günü ve yılı Sayısal olarak kayıtlıdır. Bu sorunu çözmek için kullanılır;

SELECT no, maas
FROM Personel
WHERE MAAS_TARIH=TO_DATE('KASIM 7, 1998', 'Month dd,YYYY')

Tablolar Arasında İlişki Kurulması (JOIN):
* Birden fazla tabloyla ilişki kurularak ortak sorgulama yapılmasıdır. Tabloları belli bir ortak kolona göre birleştirmek için join yöntemi kullanılır. Bunun için öncelikle tablolardaki kolonlar ayni tipte ve ayni büyüklükte olmalıdır.
Yazılımı:

SELECT table1.kolonları,table2.kolonları
FROM table1, table2
WHERE table1.kolon1=table2.kolon2

İki tabloyu birleştirmek için iki tabloda ortak bulunan kolonları where kotulu içinde editleriz.
Örneğin personel adı ve bulunduğu departman listesi için;

SELECT a.*,b.*
FROM personel a , departman b
WHERE a.dept_id=b.dept_id

Böylece personel tablosundan personel adı ve soyadı, departman tablosundan departman adı bilgisi getirilir. * Bazı durumlarda tablo birleştirme koşulu bir aralık şeklinde oluşabilir. Yani tabloları birleştirirken anahtar sahaların belirli bir aralığı seçilebilir.

SELECT table1.kolonları, table2.kolonları
FROM table1, table2
WHERE table1.kolon1 BETWEEN table2.min2 AND table2. max2

* (OUTER JOIN) Bir diğer durumda tablodaki verilerin değerleri null olabilir. Fakat biz null değerlere sahip olanlarıda birleştirmek istersek eksik olan tablonun yanına (+) işareti eklenir.

SELECT table1.kolonları, table2.kolonları
FROM table1, table2
WHERE table1.kolon1 (+) = table2.kolon2

* (SELF JOIN) Bir başka durumda ayni tablodaki kendi içindeki kolonlar arasında ilişki kurulabilir. Bazı durumlarda kolonlardaki değerleri eşit olma durumlarına göre sorgu düzenlenebilir.

SELECT table1.kolonları
FROM table1 a, table1 b
WHERE table1.a = table1. b

Grup (GROUP) Fonksiyonları :
Bazen belli bir koşula uygun belli bir topluluk için sorgu kurulabilir. Bu durumda grup işlemi yapılır. Örneğin departmanlara göre grup oluşturulup o departmandaki personel Sayısı hesaplanabilir. Grup Fonksiyonları sadece grup ifadeleriyle kullanılabilir.
Yazılımı:

SELECT kolonlar, grup Fonksiyonları
FROM table
[WHERE kotul]
[GROUP BY grup_kolonu]
[HAVING group_kotulu]
[ORDER BY kolon]

GROUP BY satiri ile kolonlar üzerinde küçük gruplar oluşturulur.
HAVING satiri ile bu oluşturulan grup için grup koşulları tanımlanabilir. Where koşulundan farkı WHERE kayıt üzerinde koşul koyar, HAVING ise sadece grup kayıtları üzerinde koşul konabilir ve grup Fonksiyonları kullanılabilir.

AVG(Kolon) : Belirtilen kolonun ortalamasını bulur.
COUNT(Kolon) : Belirtilen kolonun kayıt Sayısını bulur. Count(*) ile o grupta oluşturulan kayıt Sayısı hesaplanır. Null değerler için nvl fonksiyonu kullanılır. Çünkü kolon içindeki null değerler işleme alınmaz.
MAX(Kolon) : Belirtilen kolondaki kayıtların değerlerinin maksimum değerini bulur. Sayısal, karakteristik veya tarihsel olarak kendi içinde sıralama yapabilir.
MIN(Kolon) : Belirtilen kolondaki kayıtların değerlerinin minimum değerini bulur. Sayısal, karakteristik veya tarihsel olarak kendi içinde sıralama yapabilir.
SUM(Kolon) : Belirtilen kolondaki kayıtların değerlerinin Sayısal toplamını bulur.
VARIANCE(Kolon) : Belirtilen kolondaki kayıtların değerlerinin matematiksel varyansını bulur.

Örneğin bir personel listesindeki departmanların ayrı ayrı departman içindeki personelin max ve min maas alan kişilerin maaslarını isteyelim;

SELECT Departman_id, MAX(Maas) , MIN(maas) TABLE Personel GROUP BY Departman_id

Veya 38 nolu departmandaki personel Sayısını bulalım;

SELECT COUNT(*) TABLE Personel WHERE Departman_id = 38

Veya tüm departmanlardaki maaslarının ortalaması 80.000.000 ‘den büyük olanların listesini oluşturalım;

SELECT Departman_id, AVG(Maas) TABLE Personel GROUP BY Departman_id HAVING AVG(maas) > 80000000

Bazı durumlarda iç içe grup oluşturulması istenebilir. Bu durumda şu şekilde yazılır.

GROUP BY Kolon1, Kolon2 , …

Örneğin Departman adına ve personel yaşına göre grup oluşturalım.

SELECT Departman_id, Yas
TABLE Personel
GROUP BY Departman_id, Yas


SQL PLUS - DERS 2

Altsorgular(SUBQUERY):

Subquery, bir sorgu oluşturulurken, bu sorguya ait kriterleri başka bir sorgu belirleme durumudur. Kısaca sonucu bilinmeyen koşullar olduğunda bu yöntem kullanılır.

Yazılımı:

SELECT …..
FROM ……
WHERE kolon=( SELECT …
FROM ….
WHERE ….)

Select cümlesi parantez içinde tanımlanır. = koşulu kondu ise select cümlesi tek değer döndürmek zorundadır. Eğer birden fazla değer için koşul konulması gerekirse " in, not in " kelimesi kullanılır. Tek kayıt döndüğünde = yerine >,>=, <, <=, <> kontrol ifadelerice kullanabiliriz. Bir önemli nokta da koşula eşitlenecek değer 2. Select cümlesi içindeki kolon değerine es olmalıdır. Yani tipleri eşit olmalıdır.Subquery sorgulama tekniğinde order by kullanılamaz.Having grup kotulu içinde select cümlesi kullanabiliriz.

Örneğin;

Sorgu : Mehmet' in departman numarası kaçtır?

SELECT dept_id,name
FROM Personel
WHERE name='Mehmet'

Sorgu : Departman numarası 38 olan kişilerin listesinden adı mehmet olan var mi incele?

SELECT dept_id,name
FROM Personel
WHERE dept_id=38

Sorgu : Bu iki sorgunun birleşimi istenirse, yani departmanı 38 olan mehmet adli personel bilgisi ?

SELECT dept_id,name
FROM Personel
WHERE dept_id=( SELECT dept_id
FROM Personel
WHERE name='Mehmet')

Çalışma Anında Sorguya Dışarıdan Deger Alma:

Bir sorgu oluşturulurken bazen bazı alanların değerleri değişkendir. Bu yüzden sorguya dışarıdan değer girilmesi ve bu değere göre bir sorgu oluşturulması gerekir. Bunun için anahtar kelimenin basına ‘ & ‘ karakteri getirilir. Örneğin istenilen departman koduna göre personelin adı ve soyadı listeleyelim;

SELECT ad,soyad
FROM Personel
WHERE Dept_id = &Departman_kodu

Ekran:

Departman_kodu için değer gir: 38
eski 1: select ad,soyad from Personel where Dept_id = &Departman_kodu
yeni 1: select ad,soyad from Personel where Dept_id = 38

Eğer sorgu yazılımı sorunlu ise bu giriş yapıldıktan sonra anlaşılır ve kesinlikle girilen değer kolon tipine es olmalıdır. Örneğin ‘&anahtar_kelime’ seklinde tırnak arasında belirtilmişse giriş olarak sadece text değer girilir. Ama &anahtar_kelime tırnak içinde belirtilmemişse giriş yapılırken tırnak içinde giriş yapılmalıdır. Birden fazla &anahtar_kelime tanımlanırsa sırayla sorgu sorulur ve tüm değerler girildikten sonra sorgu oluşturulur. Eğer where koşulunda &anahtar_kelime’si kullanılmışsa giriş yapılırken matematiksel koşul seklinde giriş yapabiliriz.Eğer anahtar kelimenin basına ‘ && ‘ konulursa sorgu sırasında sadece bir kerelik sorgu sorulur. Bundan sonra anahtar kelimenin değeri ilk girilen değer olarak geçerlidir.

DEFINE değişken=değer : Belirtilen değişkene karakter atanır.
ACCEPT : Kullanıcıya açıklayıcı mesaj verilerek istenilen tipte veri girişi yapılması sağlanır. & işaretiyle yapılan işlemin daha kontrollü seklidir. Yazılımı :

ACCEPT değişken [datatipi] [ FORMAT ] [PROMPT text] [HIDE]

Değişken --> Giriş yapılacak verinin değerinin tutulduğu anahtar kelimedir.
Datatipi --> Girişi yapılacak verinin veri tipidir.
FORMAT --> Giriş yapılacak verinin giriş düzeni sağlanır. Örneğin rakam için 9999 (4 haneli Sayı) , karakter için A10 (10 karakterlik yer) .
PROMPT --> Kullanıcıya gireceği değer için açıklayıcı mesaj görüntüler.
HIDE --> Giriş yapılırken verinin görüntülenmeden giriş yapılması sağlanır. Örneğin şifre girişlerinde.

Örnekler;

ACCEPT adı PROMPT ‘Adinizi giriniz:’
ACCEPT yas NUMBER PROMPT ‘Yaşınızı giriniz:’
ACCEPT yıl NUMBER FORMAT 9999 PROMPT ‘Bulunduğunuz yılı giriniz:’
ACCEPT sifre CHAR PROMPT ‘Şifrenizi giriniz:’ HIDE

Örnek: Personel adına göre personel bilgilerini gösterelim. Bunun için bir .sql uzantılı dosyada yazalım. Bu programı start ile çalıştıralım.

SET ECHO OFF
ACCEPT adı PROMPT ‘ Adinizi Giriniz:’
SELECT * FROM Personel
WHERE UPPER(Personel.ad) LIKE UPPER(‘&adı’)
SET ECHO ON

“Start Ornek.sql “ yazılarak sql çalıştırılır.Bazen parametre girişlerini daha başlangıçta vermek istenirse;Start Dosya_adı Parametreler,…Örneğin yukarıdaki örnek için Start Örnek Kazim.

Tabloların Yaratılması:

Database ’de verilerin saklanması amacıyla tablolar yaratılır. Tablo yaratabilmek için o kullanıcının buna yetkisi olmalıdır. Ayni zamanda limitsiz tablespace hakkına sahip olmalıdır. Yazılımı :

CREATE TABLE [kullanıcı.]table
(kolon datatipi(boyutu) [DEFAULT değer]
[CONSTRAINT constraint_name] constraint_type]
[table_constraint]
[PCTFREE integer] [PCTUSED integer]
[TABLESPACE tablespace] [STORAGE storage_clause]
[CACHE]
[ENABLE enable_clause]
[DISABLE disable_clause]
[AS subquery]

Kullanıcı --> Tablonun yaratıcısıdır. Onun sahip olduğu haklara ve mekana sahiptir.
Kolon --> Tablonun kolon adlarını belirler. Bir tablodaki kolon Sayısı 1-254 arasında olmalıdır.
Datatipi --> Bir kolonun veri tipini belirler.

Varchar2(boyut): Boyut ile belirtilen max miktar kadar karakterdir.Max değeri 2000’dir.
Char(boyut) : Boyut ile belirtilen max miktar kadar karakterdir.Max. değeri 255’dir. Number : e38 ‘e kadar olan tüm Sayısal değerlerdir.
Number(m,n) : m kadar (max e38) Sayının n kadar ondalık alan için değer alır.
Date : Tarih ve saat değerlerini bir tutar.
Boolean : Mantıksal ifadeleri saklar. Yani doğru ise True, yanlış ise false.
Long : Max 2GB ‘a kadar büyük olan alanlar için yer tutar.
Raw : Grafiksel yapıdaki veriler için tanımlanır.
DEFAULT --> Herhangi bir kolona değer girilmezse, direkt olarak değer atamaya yarar. Girilen değerin veri tipi ile ayni olması gerekir.
CONSTRAINT --> O kolon için daha açıklayıcı olması açısından ve yapısı açısından kullanılır.
table_constraint --> O tablo için daha açıklayıcı olması açısından belirtilen etikettir.
PCTFREE --> Tablo üzerinde yapılan kayıt güncelleme İşlemleri için, kayıt bloklarındaki ayrılacak rezervasyon yüzde değeridir. 1-99 arasında bir tamsayıdır. 0,tüm bloklara yeni kayıt girişine izin verilir. Varsayılan değer 10’dur. Yani güncelleme için her bloğun %10’unu rezerve eder. Geri kalan %90’nini ise yeni kayıt girişlerine ayırır.
PCTUSED --> Tablonun her veri bloğu için Oracle ’lın koruduğu, kullanılmış alanın min yüzdesini verir. 1-99 arasında bir tamsayıdır.Varsayılan değeri 40’dir. Verilen parametre değerinin altına düşecek blok için, yeni kayıt girişi seçimliktir. PCTFREE+PCTUSED <100 olmak zorundadır.
TABLESPACE--> Oracle ’ın tabloyu yaratacağı tablo boşluğunu belirler. Eğer tanımlanmazsa çalışılmakta olan kullanıcının tablo boşluğunda yaratılır.
STORAGE --> Tablonun depolama karakteristiğini belirler. Büyük tablolarda performans düzenleyici olarak kullanılır.
CACHE --> Tablo üzerinde arama yapılırken, hafıza cache’nin en çok kullanılanlar üzerinde yer almasını sağlar.
ENABLE --> Bütün sınırlamaları geçerli kılar.
DISABLE --> Bütün sınırlamaları iptal eder.
AS query --> Tablo yaratılırken, alt sorgu aracılığı ile geriye döndürülen satırlar tabloya yerleştirilir.(insert)

Data Dictionary:

Database ile ilgili her türlü bilgiyi buraya atar. Buradan verilere ulaşabiliriz. Kullanıcılar, tablolar, indexler, constraintsler vb. birçok açıklayıcı bilgiler tutulur. Bütün tablo ve viewerların adlarını ve açıklamalarını görmek için ;

SELECT * FROM Dictionary;
Dictionary ’nin yapısını görmek için;
DESC dictionary
İsim Tip

-------------------- --------------------------

TABLE_NAME VARCHAR2(30)
COMMENTS VARCHAR2(2000)

Dictionary ’de bulunan objelerden bazıları;

User_tables : Hangi kullanıcı ile login olundu ise o kullanıcıya ait tabloları listeler.
All_tables : Bütün kullanıcıların yarattığı tabloları listeler.
Dba_tables : Database ile ilgili her türlü tablolar listelenir.
V$_tables : Sistemin performansını ölçmek için tutulan bilgilerdir.
V$_librarycache: Cache’in yeterli olup olmadığını anlamak için bakılır.
V$_rollstat : Rollback segmentinin yeterli olup olmadığını anlamak için bakılır.

Örnek : Login şifresiyle giren kullanıcının yarattığı tabloların listesini alalım;

SELECT table_name FROM user_tables

Örnek: Tüm obje isimlerinin listesini alalım;

SELECT object_name FROM user_objects

Database Üzerinde Transaction Kontrol Komutları:

Transaction, datanın tutarlı şekilde korunmasını sağlayan yöntemdir. Database üzerinde kayıt yapma , silme, düzeltme vb. İşlemlerin yapılabilmesi için aşağıdaki komutlara ihtiyaç vardır;

INSERT INTO : Tabloya yeni bir kayıt eklenmesini sağlar. Yazılımı;

INSERT INTO table [(kolon1, kolon2, …)] VALUES (değer1, değer2, …)

Kolon : Tablonun kayıt yapılacağı kolon adlarını belirler. Bir tablodaki kolon Sayısı 1-254 arasında ve o tabloda var olmalıdır. Deger : O kolon için alacağı değer verilir. Kolon tipiyle ayni olmalıdır. Eğer kolon adları belirtilmezse değerler kolon sırasına göre değer almalıdır. Degerlere sysdate, user vb. hazır fonksiyonlar aktarılabilir. Eğer bir alana değer verilmesi istenmiyorsa, yani bos değer verilmesi isteniyorsa NULL değeri verilir.

Örnek: Personel tablosuna yeni bir personel girişi yapalım;

INSERT INTO personel (ad,soyad,maas,ayrilma_tarihi,kayıt_giriş_tarihi)
VALUES (‘Kazim’,’Sarikaya’,400000000,NULL,SYSDATE)

Ayni örnek için kolon sırasını bildiğimiz düşünülürse şu şekilde de yazılabilir;

INSERT INTO personel
VALUES (‘Kazim’,’Sarikaya’,400000000,NULL,SYSDATE)

Sadece tek kayıt girişi yapılıyorsa, rahat veri girişi yapılması için değerlere değişken tanımlayarak veri girişi sağlayabiliriz. Böylece table her çalıştığında yeni veri girişi yapılır.

Örnek: Personel tablosuna her çalıştırdığımızda yeni bir personel girişi yapalım;

INSERT INTO personel (ad,soyad,maas,ayrilma_tarihi,kayıt_giriş_tarihi)
VALUES (‘&Adi’,’&Soyadı’,&maas,NULL,SYSDATE)

Örnek: Daha güvenli ve rahat giriş yapılacak şekilde kayıt yapılacak script yazalım;

SET ECHO OFF
ACCEPT ad PROMPT ‘Adini giriniz:’
ACCEPT soyad PROMPT ‘Soyadı giriniz:’
ACCEPT maas PROMPT ‘Maasini giriniz:’
INSERT INTO personel(ad,soyad,maas,ayrilma_tarihi,kayıt_giriş_tarihi)
VALUES (‘&ad’,’&soyad’,&maas,NULL,SYSDATE)
/
SET ECHO OFF
Kayıt yapılacak kolonların değerleri bilinmiyorsa veya başka bir tablodan değer alınması gerekiyorsa aşağıdaki yapı kullanılır;
Yazılımı; INSERT INTO table [(kolon1, kolon2, …)] Altsorgu Örnek: Personel tablosuna departman tablosundan departman kodu 38 olan personellerin değerlerini aktaralım; INSERT INTO personel(ad,soyad,maas,ayrilma_tarihi,kayıt_giriş_tarihi) SELECT adı,soyadı,maasi,ayrilma,kayıt_giriş FROM departman WHERE dept_id=38 UPDATE : Tablodaki kolonların değerlerini değiştirmek için kullanılır.
Yazılımı;

UPDATE table
SET kolon1=değer1, kolon2=değer2, …
[WHERE kotul]

Kolon : Tabloda değişiklik yapılacak kolon adıdır. Bir tablodaki kolon Sayısı 1-254 arasında ve o tabloda var olmalıdır.
Deger : O kolon için alacağı değer verilir. Kolon tipiyle ayni olmalıdır. Eğer kolon adları belirtilmezse değerler kolon sırasına göre değer almalıdır. Degerlere sysdate, user vb. hazır fonksiyonlar aktarılabilir. Eğer bir alana değer verilmesi istenmiyorsa, yani bos değer verilmesi isteniyorsa NULL değeri verilir.

Örnek: 41 nolu departmanın maasini %13 artıralım;

UPDATE Personel
SET maas=maas+maas*13/100
WHERE dept_id=41

Örnek: 649 nolu personelin departman kodu 10 olsun;

UPDATE Personel
SET dept_id=10
WHERE personel_id=649

Eğer WHERE koşulu konulmazsa tüm tablo için kolon değerini değiştirir. koşulu SET ile değiştirdiğimiz kolona veremeyiz.

Bilgisayar Dershanesi Ders Sahibi;
Bilgisayar Dershanesi

Yorumlar

Yorum Yapabilmek İçin Üye Girişi Yapmanız Gerekmektedir.

ETİKETLER

x