VARCHAR2, NUMBER(p,s), DATE/TIMESTAMP/INTERVAL, LOB; CTAS, ALTER TABLE, DROP ... PURGE, geçici tablolar.
Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.
Veri tipleri
| Tip | Not |
VARCHAR2(n [BYTE|CHAR]) | Değişken uzunluklu metin; Oracle'da önerilen metin tipi |
CHAR(n) | Sabit uzunluk, boşlukla doldurulur |
NUMBER(p, s) | p toplam basamak, s ondalık basamak. NUMBER(5,2) en fazla 999.99. s negatifse sola yuvarlar. |
DATE | Tarih ve saat (saniyeye kadar) |
TIMESTAMP [WITH [LOCAL] TIME ZONE] | Kesirli saniye, saat dilimi |
INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | Süre |
CLOB, BLOB, NCLOB | Büyük metin / ikili veri (eski LONG yerine) |
RAW, ROWID | İkili, satır adresi |
Oluşturma
CREATE TABLE kampanya (
kampanya_id NUMBER(6) CONSTRAINT pk_kampanya PRIMARY KEY,
kod VARCHAR2(20) NOT NULL CONSTRAINT uq_kampanya_kod UNIQUE,
indirim NUMBER(3,2) CONSTRAINT ck_indirim CHECK (indirim BETWEEN 0 AND 0.5),
baslangic DATE DEFAULT SYSDATE,
urun_id NUMBER(6),
CONSTRAINT fk_kampanya_urun FOREIGN KEY (urun_id) REFERENCES products (product_id) ON DELETE SET NULL
);
-- Sorgudan tablo (CTAS): NOT NULL dışındaki kısıtlar kopyalanmaz
CREATE TABLE kitaplar AS SELECT product_id, name, price FROM products WHERE category = 'Kitap';
-- Yalnızca yapı (satırsız)
CREATE TABLE bos_kopya AS SELECT * FROM products WHERE 1 = 0;
Değiştirme
ALTER TABLE kampanya ADD (aciklama VARCHAR2(200));
ALTER TABLE kampanya MODIFY (aciklama VARCHAR2(500));
ALTER TABLE kampanya RENAME COLUMN aciklama TO notlar;
ALTER TABLE kampanya DROP COLUMN notlar;
ALTER TABLE kampanya SET UNUSED (kod); -- anında gizle, sonra DROP UNUSED COLUMNS
ALTER TABLE kampanya READ ONLY; -- DML engellenir
ALTER TABLE kampanya READ WRITE;
RENAME kampanya TO kampanyalar;
DROP TABLE kampanyalar; -- geri dönüşüm kutusuna gider
FLASHBACK TABLE kampanyalar TO BEFORE DROP; -- geri getir
DROP TABLE kampanyalar PURGE; -- kalıcı sil
- Bir sütunu küçültmek veya tipini değiştirmek için sütun boş olmalı ya da veri yeni tipe sığmalı.
- NOT NULL eklemek için mevcut satırlarda NULL olmamalı (veya DEFAULT ile birlikte eklenmeli).
- Geçici tablo:
CREATE GLOBAL TEMPORARY TABLE ... ON COMMIT DELETE ROWS | PRESERVE ROWS; yapı kalıcı, veri oturuma/işleme özel. Oracle 18c'den itibaren PRIVATE TEMPORARY TABLE (ad ORA$PTT_ ile başlar).