Applies ToMicrosoft 365 için Access Access 2024 Access 2021 Access 2019 Access 2016

SQL görünümünde veri tanımı sorguları yazarak Access'te tablolar, kısıtlamalar, dizinler ve ilişkiler oluşturabilir ve bunları değiştirebilirsiniz. Bu makalede veri tanımı sorguları ve tabloları, kısıtlamaları, dizinleri ve ilişkileri oluşturmak için bunların nasıl kullanılacağı açıklanmaktadır. Bu makale, veri tanımı sorgusunu ne zaman kullanacağınıza karar vermenize de yardımcı olabilir.

Bu makalede

Genel bakış

Diğer Access sorgularının aksine, veri tanımı sorgusu verileri almaz. Bunun yerine, veri tanımı sorgusu veritabanı nesnelerini oluşturmak, değiştirmek veya silmek için Veri Tanımı Dili kullanır.

Not: Veri Tanım Dili (DDL), Yapılandırılmış Sorgu Dili'nin (SQL) bir parçasıdır.

Veri tanımı sorguları çok kullanışlı olabilir. Yalnızca bazı sorgular çalıştırarak veritabanı şemanızın bölümlerini düzenli olarak silebilir ve yeniden oluşturabilirsiniz. SQL deyimlerini biliyorsanız ve belirli tabloları, kısıtlamaları, dizinleri veya ilişkileri silip yeniden oluşturmayı planlıyorsanız veri tanımı sorgusu kullanmayı göz önünde bulundurun.

Uyarı: Eylemlere onay iletişim kutuları eşlik etmediğinden, veritabanı nesnelerini değiştirmek için veri tanımı sorguları kullanmak riskli olabilir. Hata yaparsanız, verileri kaybedebilir veya yanlışlıkla tablonun tasarımını değiştirebilirsiniz. Veritabanınızdaki nesneleri değiştirmek için bir veri tanımı sorgusu kullanırken dikkatli olun. Kullandığınız veritabanının bakımının yapılmasından sorumlu değilseniz, bir veri tanımı sorgusu çalıştırmadan önce veritabanının yöneticisine danışmanız gerekir.

Önemli: Veri tanımı sorgusu çalıştırmadan önce ilgili tabloların yedek kopyasını oluşturun.

DDL anahtar sözcükleri

Anahtar Sözcük

Kullanım

CREATE

Henüz var olmayan bir dizin veya tablo oluşturun.

ALTER

Varolan bir tabloyu veya sütunu değiştirme.

DROP

Varolan bir tabloyu, sütunu veya kısıtlamayı silin.

ADD

Tabloya sütun veya kısıtlama ekleyin.

COLUMN

ADD, ALTER veya DROP ile kullanma

CONSTRAINT

ADD, ALTER veya DROP ile kullanma

INDEX

CREATE ile kullanma

TABLE

ALTER, CREATE veya DROP ile kullanma

Sayfanın Başı

Tablo oluşturma veya değiştirme

Tablo oluşturmak için CREATE TABLE komutunu kullanırsınız. CREATE TABLE komutu aşağıdaki söz dizimine sahiptir:

CREATE TABLE table_name  (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])

CREATE TABLE komutunun tek gerekli öğeleri CREATE TABLE komutunun kendisi ve tablonun adıdır, ancak genellikle tablonun bazı alanlarını veya diğer yönlerini tanımlamak istersiniz. Bu basit örneği göz önünde bulundurun.

Satın almayı düşündüğünüz arabaların adını, yılını ve fiyatını depolamak için bir tablo oluşturmak istediğinizi varsayalım. Ad için en fazla 30 karaktere ve yıl için 4 karaktere izin vermek istiyorsunuz. Tabloyu oluşturmak üzere bir veri tanımı sorgusu kullanmak için aşağıdakileri yapın:

Not: Bir veri tanımı sorgusunun çalışması için önce veritabanının içeriğini etkinleştirmeniz gerekebilir:

  • İleti Çubuğu'nda İçeriği Etkinleştir'e tıklayın.

Tablo oluşturma

  1. Oluştur sekmesinin Makrolar & Kod grubunda Sorgu Tasarımı'na tıklayın.

  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'na tıklayın.

    Tasarım kılavuzu gizlidir ve SQL görünümü nesne sekmesi görüntülenir.

  3. Aşağıdaki SQL deyimini yazın:

    CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)

  4. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

Bir tabloyu değiştirme

Tabloyu değiştirmek için ALTER TABLE komutunu kullanırsınız. Sütunları veya kısıtlamaları eklemek, değiştirmek veya bırakmak (kaldırmak) için ALTER TABLE komutunu kullanabilirsiniz. ALTER TABLE komutu aşağıdaki söz dizimine sahiptir:

ALTER TABLE table_name predicate

koşul aşağıdakilerden herhangi biri olabilir:

ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Her arabanın durumu hakkındaki bilgileri depolamak için 10 karakterlik bir metin alanı eklemek istediğinizi varsayalım. Aşağıdakileri yapabilirsiniz:

  1. Oluştur sekmesinin Makrolar & Kod grubunda Sorgu Tasarımı'na tıklayın.

  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'na tıklayın.

    Tasarım kılavuzu gizlidir ve SQL görünümü nesne sekmesi görüntülenir.

  3. Aşağıdaki SQL deyimini yazın:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  4. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

Sayfanın Başı

Dizin oluşturma

Var olan bir tabloda dizin oluşturmak için CREATE INDEX komutunu kullanırsınız. CREATE INDEX komutu aşağıdaki söz dizimine sahiptir:

CREATE [UNIQUE] INDEX index_name ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]

Tek gerekli öğeler CREATE INDEX komutu, dizinin adı, AÇILMA bağımsız değişkeni, dizine eklemek istediğiniz alanları içeren tablonun adı ve dizine eklenecek alanların listesidir.

  • DESC bağımsız değişkeni, dizinin azalan düzende oluşturulmasına neden olur. Bu, dizinlenmiş alan için en yüksek değerleri arayan veya dizine alınan alanı azalan düzende sıralayan sorguları sık sık çalıştırırsanız yararlı olabilir. Varsayılan olarak, artan sırada bir dizin oluşturulur.

  • WITH BİRİnCİl bağımsız değişkeni, tablonun birincil anahtar olarak dizine alınan alanı veya alanları oluşturur.

  • WITH DISALLOW NULL bağımsız değişkeni, dizinin dizine alınan alan için bir değer girilmesi gerektirmesine neden olur; diğer bir deyişle null değerlere izin verilmez.

Satın almayı düşündüğünüz kullanılmış otomobillerin adını, yılını, fiyatını ve koşulunu depolayan alanları olan Arabalar adlı bir tablonuz olduğunu varsayalım. Ayrıca tablonun büyük olduğunu ve yıl alanını sık sık sorgulara dahil ettiğinizi varsayalım. Aşağıdaki yordamı kullanarak sorgularınızın sonuçları daha hızlı döndürmesine yardımcı olmak için Yıl alanında bir dizin oluşturabilirsiniz:

  1. Oluştur sekmesinin Makrolar & Kod grubunda Sorgu Tasarımı'na tıklayın.

  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'na tıklayın.

    Tasarım kılavuzu gizlidir ve SQL görünümü nesne sekmesi görüntülenir.

  3. Aşağıdaki SQL deyimini yazın:

    CREATE INDEX YearIndex ON Cars (Year)

  4. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

Sayfanın Başı

Kısıtlama veya ilişki oluşturma

Kısıtlama, değerler eklendiğinde bir alanın veya alan birleşiminin karşılaması gereken mantıksal bir koşul oluşturur. Örneğin, BENZERSİz kısıtlaması, kısıtlanmış alanın alan için var olan bir değeri yineleyecek bir değeri kabul etmesini engeller.

İlişki, bir değerin kısıtlanmış alana mı yoksa alan birleşimine mi eklenebileceğini belirlemek için bir alanın değerlerine veya başka bir tablodaki alanların birleşimine başvuran bir kısıtlama türüdür. Kısıtlamanın bir ilişki olduğunu belirtmek için özel bir anahtar sözcük kullanmazsınız.

Kısıtlama oluşturmak için CREATE TABLE veya ALTER TABLE komutunda CONSTRAINT yan tümcesi kullanırsınız. İki tür CONSTRAINT yan tümcesi vardır: biri tek bir alanda kısıtlama oluşturmak için, diğeri de birden çok alanda kısıtlama oluşturmak için.

Tek alanlı kısıtlamalar

Tek alanlı CONSTRAINT yan tümcesi, kısıtladığı alanın tanımını hemen izler ve aşağıdaki söz dizimine sahiptir:

CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}

Satın almayı düşündüğünüz kullanılmış otomobillerin adını, yılını, fiyatını ve koşulunu depolayan alanları olan Arabalar adlı bir tablonuz olduğunu varsayalım. Ayrıca aracın durumu için bir değer girişi oluşturmayı sık sık unuttuğuyu ve bu bilgileri her zaman kaydetmek istediğinizi varsayalım. Koşul alanında, aşağıdaki yordamı kullanarak alanı boş bırakmanızı engelleyen bir kısıtlama oluşturabilirsiniz:

  1. Oluştur sekmesinin Makrolar & Kod grubunda Sorgu Tasarımı'na tıklayın.

  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'na tıklayın.

    Tasarım kılavuzu gizlidir ve SQL görünümü nesne sekmesi görüntülenir.

  3. Aşağıdaki SQL deyimini yazın:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

Şimdi, bir süre sonra Koşul alanında aynı olması gereken birçok benzer değer olduğunu fark ettiğinizi varsayalım. Örneğin, bazı otomobillerin Condition değeri kötü , bazılarının değeri ise kötü.

Not: Kalan yordamları takip etmek istiyorsanız, önceki adımlarda oluşturduğunuz Arabalar tablosuna bazı sahte veriler ekleyin.

Değerleri daha tutarlı olacak şekilde temizledikten sonra, arabaların durumu için kullanmak istediğiniz tüm değerleri içeren, Koşul adlı bir alan içeren CarCondition adlı bir tablo oluşturabilirsiniz:

  1. Oluştur sekmesinin Makrolar & Kod grubunda Sorgu Tasarımı'na tıklayın.

  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'na tıklayın.

    Tasarım kılavuzu gizlidir ve SQL görünümü nesne sekmesi görüntülenir.

  3. Aşağıdaki SQL deyimini yazın:

    CREATE TABLE CarCondition (Condition TEXT(10))

  4. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

  5. ALTER TABLE deyimini kullanarak tablo için birincil anahtar oluşturun:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Cars tablosunun Condition alanındaki değerleri yeni CarCondition tablosuna eklemek için, SQL görünümü nesne sekmesine aşağıdaki SQL'i yazın:

    CarCondition'a INSERT INTO SELECT DISTINCT Condition FROM Cars;

    Not: Bu adımdaki SQL deyimi bir ekleme sorgusu. Veri tanımı sorgularının aksine, ekleme sorgusu noktalı virgülle biter.

  7. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

Kısıtlama kullanarak ilişki oluşturma

Arabalar tablosunun Koşul alanına eklenen herhangi bir yeni değerin CarCondition tablosundaki Koşul alanının değeriyle eşleşmesini istemek için, aşağıdaki yordamı kullanarak Koşul adlı alanda CarCondition ile Arabalar arasında bir ilişki oluşturabilirsiniz:

  1. Oluştur sekmesinin Makrolar & Kod grubunda Sorgu Tasarımı'na tıklayın.

  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'na tıklayın.

    Tasarım kılavuzu gizlidir ve SQL görünümü nesne sekmesi görüntülenir.

  3. Aşağıdaki SQL deyimini yazın:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Koşul)

  4. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

Birden çok alan kısıtlamaları

Birden çok alanlı CONSTRAINT yan tümcesi yalnızca bir alan tanımı yan tümcesi dışında kullanılabilir ve aşağıdaki söz dizimine sahiptir:

CONSTRAINT constraint_name {PRIMARY KEY (pk_field1[, pk_field2[, ...]]) | UNIQUE (unique1[, unique2[, ...]]) | NOT NULL (notnull1[, notnull2[, ...]]) | FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]])   REFERENCES foreign_table   [(fk_field1[, fk_field2[, ...]])] | [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}

Arabalar tablosunu kullanan başka bir örneği düşünün. Arabalar tablosundaki iki kaydın Ad, Yıl, Koşul ve Fiyat için aynı değer kümesine sahip olmadığından emin olmak istediğinizi varsayalım. Aşağıdaki yordamı kullanarak bu alanlar için geçerli olan BENZERSIZ bir kısıtlama oluşturabilirsiniz:

  1. Oluştur sekmesinin Makrolar & Kod grubunda Sorgu Tasarımı'na tıklayın.

  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'na tıklayın.

    Tasarım kılavuzu gizlidir ve SQL görünümü nesne sekmesi görüntülenir.

  3. Aşağıdaki SQL deyimini yazın:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (ad, yıl, koşul, fiyat)

  4. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

Sayfanın Başı

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.