SQL Data Definition SQL tanmlayclar veritabanndaki tablo adlar
SQL Data Definition
SQL tanımlayıcıları, veritabanındaki tablo adları, görünüm adları ve sütunlar gibi nesneleri tanımlamak için kullanılır. • Bir tanımlayıcı 128 karakterden uzun olamaz; • Tanımlayıcı bir harfle başlamalıdır; • Tanımlayıcı boşluk içeremez.
SQL Skaler Veri Tipleri Boolean veri tipi, DOĞRU ve YANLIŞ gerçek değerlerinden oluşur. TRUE değeri FALSE değerinden büyüktür. Karakter veri tipi CHARACTER [VARYING] [length] CHARACTER can be abbreviated to CHAR and CHARACTER VARYING to VARCHAR Sube. No CHAR (4) adresi VARCHAR (30) Bit veri tipi Bit veri türü, her biri 0 veya 1 değerine sahip olan bit dizelerini, yani bir ikili basamak dizisini (bit) tanımlamak için kullanılır. bit. String BIT (4) Tam Sayısal Veri NUMERIC [ precision [, scale] ] rooms SMALLINT DECIMAL [ precision [, scale] ] salary DECIMAL(7, 2) FLOAT [precision] INTEGER REAL SMALLINT DOUBLE PRECISION BIGINT INTEGER can be abbreviated to INT and DECIMAL to DEC
SQL Skaler Veri Tipleri Datetime veri türü, zaman içindeki noktaları belirli bir doğruluk derecesine göre tanımlamak için kullanılır. DATE TIME [time. Precision] [WITH TIME ZONE] TIMESTAMP [time. Precision] [WITH TIME ZONE] DATE, YIL, AY ve GÜN alanlarını kullanarak takvim tarihlerini saklamak için kullanılır. TIME, HOUR, MINUTE ve SECOND alanlarını kullanarak zaman depolamak için kullanılır. TIMESTAMP, tarih ve saatleri kaydetmek için kullanılır. view. Date DATE Interval: Zaman aralağı (duration) saklar.
Büyük nesneler Büyük nesne, uzun metin dosyası veya grafik dosyası gibi büyük miktarda veri tutan bir veri türüdür. SQL'de üç farklı büyük nesne veri türü tanımlanmıştır: • İkili Büyük Nesne (BLOB), karakter kümesi veya harmanlama ilişkisine sahip olmayan bir ikili dize; • Karakter Büyük Nesnesi (CLOB) ve Ulusal Karakter Büyük Nesnesi (NCLOB), her iki karakter dizesi.
Bütünlük Sağlama-Entity Integrity Bütünlük kontrolü, veritabanını tutarsızlığa karşı korumak için uygulamak istediğimiz kısıtlamalardan oluşur. Gerekli veriler; Etki alanı kısıtlamaları; Varlık bütünlüğü; Bilgi tutarlılığı; Genel kısıtlamalar. Gerekli veriler Bazı sütunlar geçerli bir değer içermelidir; boş değer içermelerine izin verilmez. Null/not null
Bütünlük Sağlama-Entity Integrity • Etki Alanı Kısıtlamaları Bir sütunda veya tüm tabloda bir kısıtlama tanımlanmasına izin veren CHECK cümlesidir. CHECK yan tümcesinin biçimi şöyledir: CHECK (search. Condition) cinsyt CHAR NOT NULL CHECK (cinsyt IN (‘E’, ‘B’)) CREATE DOMAIN Domain. Name [AS] data. Type [DEFAULT default. Option] [CHECK (search. Condition)] CREATE DOMAIN cinsyt AS CHAR DEFAULT ‘E’ CHECK (VALUE IN (‘E’, ‘B’));
Bütünlük Sağlama-Entity Integrity CREATE DOMAIN sube. No AS CHAR(4) CHECK (VALUE IN (SELECT sube. No FROM sube)); DROP DOMAIN sube. No Varlık Bütünlüğü Bir tablonun birincil anahtarı, her satır için benzersiz, boş bir değer içermemelidir. PRIMARY KEY deyimi, tablo başına yalnızca bir kez belirtilebilir. Bununla birlikte, UNIQUE anahtar sözcüğünü kullanarak tablodaki herhangi bir alternatif anahtar için benzersizliği sağlamak mümkündür. UNIQUE yan tümcesinde görünen her sütun da NOT NULL olarak bildirilmelidir.
Bütünlük Sağlama-Entity Integrity Referans tutarlılığı Referans bütünlüğü, eğer yabancı anahtar bir değer içeriyorsa, bu değerin ana tablodaki mevcut ve geçerli bir satırı göstermesi gerektiği anlamına gelir. FOREIGN KEY (pers. No) REFERENCES personel ON DELETE SET NULL FOREIGN KEY (sahibi. No) REFERENCES sahib ON UPDATE CASCADE • CASCADE: Satırı ana tablodan ve alt tablodaki eşleşen satırları otomatik olarak siler. • SET NULL: Satırı ana tablodan siler ve alt tablodaki yabancı anahtar değerlerini NULL olarak ayarlar. • SET DEFAULT: Satırı üst tablodan siler ve alt tablodaki yabancı anahtarın her bileşenini belirtilen varsayılan değere ayarlar. • NO ACTION: Silme işlemini ana tablodan reddeder.
Bütünlük Sağlama-Entity Integrity • Genel Kısıtlamalar CREATE ASSERTION deyimi, doğrudan bir tablo tanımına bağlı olmayan bir bütünlük kısıtıdır. İfadenin formatı şudur: CREATE ASSERTION Assertion. Name CHECK (search. Condition) CREATE ASSERTION yanlis. Not CHECK (NOT EXISTS (SELECT ders. Id FROM notlar GROUP BY ders. Id HAVING COUNT(*) > 100))
Veri tanımı-Data Definition Bir şema, bir şekilde birbirleriyle ilişkili olan adlandırılmış bir veritabanı nesneleri koleksiyonudur (veritabanındaki tüm nesneler). Bir şemadaki nesneler tablolar, görünümler, etki alanları ve karakter kümeleri olabilir. Bir şemadaki tüm nesneler aynı sahibe aittir ve birkaç varsayılan yapıyı paylaşır. Şema tanımı ifadesi aşağıdaki (basitleştirilmiş) forma sahiptir: CREATE SCHEMA [Name | AUTHORIZATION Creatorldentifier] Sql. Tests şemasının yaratıcısı Ali ise, SQL ifadesi şöyledir: CREATE SCHEMA Sql. Tests AUTHORIZATION Ali; DROP SCHEMA Name [RESTRICT | CASCADE]
Veri tanımı-Data Definition • Tablo Oluşturma (CREATE TABLE) CREATE TABLE Table. Name {(colum. Name data. Type [NOT NULL] [UNIQUE] [DEFAULT default. Option] [CHECK (search. Condition)] [, . . . ]} [PRIMARY KEY (list. Of. Columns), ] {[UNIQUE (list. Of. Columns)] [, . . . ]} {[FOREIGN KEY (list. Of. Foreign. Key. Columns) REFERENCES Parent. Table. Name [(list. Of. Candidate. Key. Columns)] [MATCH {PARTIAL | FULL} [ON UPDATE referential. Action] [ON DELETE referential. Action]] [, . . . ]} {[CHECK (search. Condition)] [, . . . ]})
Veri tanımı-Data Definition ÖRNEK TABLO OLUŞTURMA CREATE TABLE ifadesinin kullanılabilir özelliklerini kullanarak Property. For. Rent tablosunu oluşturun. • CREATE DOMAIN Owner. Number AS VARCHAR(5) CREATE TABLE Property. For. Rent( CHECK (VALUE IN (SELECT owner. No FROM Private. Owner)); property. No Property. Number NOT NULL, street Street NOT NULL, • CREATE DOMAIN Staff. Number AS VARCHAR(5) city City NOT NULL, postcode Post. Code, CHECK (VALUE IN (SELECT staff. No FROM Staff)); type Property. Type NOT NULL DEFAULT ‘F’, • CREATE DOMAIN Branch. Number AS CHAR(4) rooms Property. Rooms NOT NULL DEFAULT 4, rent Property. Rent NOT NULL DEFAULT 600, CHECK (VALUE IN (SELECT branch. No FROM branch)); owner. No Owner. Number NOT NULL, • CREATE DOMAIN Property. Number AS VARCHAR(5); staff. No Staff. Number CONSTRAINT Staff. Not. Handling. Too. Much CREATE DOMAIN Street AS VARCHAR(25); CHECK (NOT EXISTS (SELECT staff. No • CREATE DOMAIN City AS VARCHAR(15); FROM Property. For. Rent GROUP BY staff. No CREATE DOMAIN Postcode AS VARCHAR(8); HAVING COUNT(*) > 100)), • CREATE DOMAIN Property. Type AS CHAR(1) branch. No Branch. Number NOT NULL, PRIMARY KEY (property. No), CHECK(VALUE IN (‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘M’, ‘S’)); FOREIGN KEY (staff. No) REFERENCES Staff ON DELETE SET NULL • CREATE DOMAIN Property. Rooms AS SMALLINT; ON UPDATE CASCADE, FOREIGN KEY (owner. No) REFERENCES Private. Owner ON DELETE NO CHECK(VALUE BETWEEN 1 AND 15); ACTION ON UPDATE CASCADE, • CREATE DOMAIN Property. Rent AS DECIMAL(6, 2) FOREIGN KEY (branch. No) REFERENCES Branch ON DELETE NO ACTION ON UPDATE CASCADE); CHECK(VALUE BETWEEN 0 AND 9999. 99);
Veri tanımı-Data Definition • Tablo Tanımını Değiştirme (ALTER TABLE) ISO standardı, oluşturulduktan sonra bir tablonun yapısını değiştirmek için ALTER TABLE ifadesi sunar. ISO standardındaki ALTER TABLE ifadesinin tanımı aşağıdaki altı seçenekten oluşur: ALTER TABLE Table. Name [ADD [COLUMN] column. Name data. Type [NOT NULL] • Bir tabloya yeni bir sütun eklemek; [UNIQUE] • Bir tablodan bir sütun bırakmak; [DEFAULT default. Option] [CHECK (search. Condition)]] [DROP [COLUMN] column. Name [RESTRICT | • Yeni bir tablo kısıtı eklemek; CASCADE]] [ADD [CONSTRAINT [Constraint. Name]] • Bir tablo kısıtlaması bırakmak; table. Constraint. Definition] • Bir sütun için varsayılan ayarlamak; [DROP CONSTRAINT Constraint. Name [RESTRICT | CASCADE]] • Bir sütun için varsayılanı bırakmak. [ALTER [COLUMN] SET DEFAULT default. Option] [ALTER [COLUMN] DROP DEFAULT]
Veri tanımı-Data Definition ALTER TABLE Staff ALTER position DROP DEFAULT; ALTER TABLE Staff ALTER cinsiyet SET DEFAULT ‘B’; DROP TABLE Table. Name [RESTRICT | CASCADE] DROP TABLE Property. For. Rent; • RESTRICT: Bağlı nesneleri silmez. • CASCASE: Bağlı tüm nesneleri siler. ALTER TABLE Property. For. Rent DROP CONSTRAINT Staff. Not. Handling. Too. Much; ALTER TABLE Client ADD pref. No. Rooms Property. Rooms;
Veri tanımı-Data Definition • Index: Bir indeks, bir ya da daha fazla sütunun değerlerine dayanarak bir tablonun satırlarına hızlandırılmış erişim sağlayan bir yapıdır. Bir indeksin varlığı, bir sorgunun performansını önemli ölçüde artırabilir. Indeksler, genellikle tablo bir süre kullanıldıktan ve boyut olarak büyüdükten sonra belirli arama kriterlerini karşılamak için oluşturulur. CREATE [UNIQUE] INDEX Index. Name ON Table. Name (column. Name [ASC | DESC] [, . . . ]) Indeksler, görünümlerde değil, yalnızca temel tablolarda oluşturulabilir. UNIQUE deyimi kullanılıyorsa, dizine alınmış sütunun benzersizliği veya sütun birleşimi DBMS tarafından uygulanır. CREATE UNIQUE INDEX Staff. Nolnd ON Staff (staff. No); CREATE UNIQUE INDEX Property. No. Ind ON Property. For. Rent (property. No); DROP INDEX Index. Name
Veri tanımı-Data Definition • Görünümler Veritabanı kullanıcısı için, bir görünüm, adlandırılmış sütunlar ve veri satırları içeren gerçek bir tablo gibi görünür. Bununla birlikte, bir taban tablosundan farklı olarak, bir görünüm mutlaka veri tabanında depolanmış bir veri değerleri kümesi olarak bulunmaz. Bunun yerine, görünüm bir veya daha fazla temel tablo veya görünümde sorgu olarak tanımlanır. DBMS, görünümün tanımını veritabanında depolar. Görünüm Oluşturma (CREATE VIEW) CREATE VIEW ifadesinin biçimi şöyledir: CREATE VIEW View. Name [(new. Column. Name [, . . . ])] AS subselect [WITH [CASCADED | LOCAL] CHECK OPTION] Bir SQL SELECT deyimi belirtilerek görünüm tanımlanır. İsteğe bağlı olarak görünümdeki her sütuna bir ad atanabilir. Bir sütun adı listesi belirtilirse, alt seçim tarafından üretilen sütun sayısıyla aynı sayıda öğeye sahip olmalıdır. Sütun adları listesi belirtilmezse, görünümdeki her sütun, alt seçim ifadesindeki karşılık gelen sütunun adını alır. Sütun adında herhangi bir belirsizlik varsa sütun adları listesi belirtilmelidir. Bu, alt seçim hesaplanmış sütunlar içeriyorsa ve AS alt maddesi bu tür sütunları adlandırmak için kullanılmamışsa veya birleşimin sonucu olarak aynı ada sahip iki sütun oluşturduysa oluşabilir. Alt seçim, tanımlayıcı sorgu olarak bilinir. WITH CHECK OPTION belirtilirse, SQL, görünümü tanımlayıcı sorgunun WHERE yan tümcesini yerine getirmemesi durumunda, görünümün temel tablosuna eklenmemesini sağlar.
Veri tanımı-Data Definition ÖRNEK Yatay görünüm oluşturma B 003 şubesindeki yöneticinin, yalnızca şubesinde çalışan personelin ayrıntılarını görebilmesi için bir görünüm oluşturun. Yatay görünüm, kullanıcının bir veya daha fazla tablonun seçilen satırlarına erişimini kısıtlar. CREATE VIEW Manager 3 Staff AS SELECT * FROM Staff WHERE branch. No = ‘B 003’; SELECT * FROM Manager 3 Staff;
Veri tanımı-Data Definition ÖRNEK Dikey görünüm oluşturma B 003 şubesinde, personel bilgilerini maaş bilgilerini içermeyen bir görünüm oluşturun, böylece yalnızca yöneticiler, şubelerinde çalışan personelin maaş detaylarına erişebilir. Dikey görünüm, kullanıcının bir veya daha fazla tablonun seçilen sütunlarına erişimini kısıtlar. CREATE VIEW Staff 3 AS SELECT staff. No, f. Name, IName, position, cnsyt FROM Staff WHERE branch. No = ‘B 003’; SELECT * FROM Staff 3;
Veri tanımı-Data Definition • DROP VIEW View. Name [RESTRICT | CASCADE] • DROP VIEW Manager 3 Staff; Görünüm Güncellenebilirliği Temel tablodaki tüm güncellemeler, bu temel tabloyu içeren tüm görünümlere hemen yansır. Benzer şekilde, bir görünüm güncellenirse, temel tabloların bu değişikliği yansıtacağını bekleyebiliriz.
Veri tanımı-Data Definition • Transaction ISO standardı iki SQL ifadesine dayanan bir işlem modeli tanımlar: • COMMIT ve ROLLBACK • Bir COMMIT deyimi işlemi başarıyla tamamlar ve veritabanı değişikliklerini kalıcı kılar. Bir sonraki işlem başlatan ifade ile birlikte COMMIT'ten sonra yeni bir işlem başlar. • Bir ROLLBACK deyimi işlemi iptal eder ve işlem tarafından yapılan değişiklikleri geri alır. ROLLBACK'ten sonra bir sonraki işlem başlatan ifade ile yeni bir işlem başlar. SET TRANSACTION [READ ONLY | READ WRITE] | [ISOLATION LEVEL READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE]
Veri tanımı-Data Definition GRANT deyimi, belirli kullanıcılara veritabanı nesneleri üzerinde ayrıcalıklar vermek için kullanılır. ÖRNEK Tüm ayrıcalıklar Kullanıcıya, Personel tablosundaki tüm ayrıcalıkları verin. GRANT ALL PRIVILEGES ON Staff TO Manager WITH GRANT OPTION;
Veri tanımı-Data Definition ÖRNEK Özel ayrıcalıklar Kullanıcılara Personel tablosunun sütun alanında SELECT ve UPDATE ayrıcalıklarını verin. GRANT SELECT, UPDATE (salary) ON Staff TO Personnel, Director; WITH GRANT OPTION anahtar kelimesi kullanılmayınca kullanıcılar Personel ve Yönetici bu ayrıcalıklardan hiçbirini diğer kullanıcılara aktaramaz. ÖRNEK PUBLIC ayrıcalık Tüm kullanıcılara Şube tablosundaki SELECT ayrıcalığını verin. GRANT SELECT ON Branch TO PUBLIC;
Veri tanımı-Data Definition Kullanıcılardan Ayrıcalıkları İptal Etme (REVOKE) REVOKE ifadesi, GRANT ifadesiyle verilen ayrıcalıkları ortadan kaldırmak için kullanılır. Bir REVOKE ifadesi, daha önce bir kullanıcıya verilen ayrıcalıkların tümünü veya bir kısmını alabilir. İfadenin formatı şudur:
Veri tanımı-Data Definition ÖRNEK PUBLIC ayrıcalıkları iptal et (Revoke) Tüm kullanıcılardan Şube tablosundaki SELECT ayrıcalığını iptal edin. REVOKE SELECT ON Branch FROM PUBLIC; ÖRNEK Personel tablosunda Müdür'e verdiğiniz tüm ayrıcalıkları iptal edin. REVOKE ALL PRIVILEGES ON Staff FROM Director;
- Slides: 27