Veri tanımı sorgusunu kullanarak tablo veya dizin oluşturma ya da değiştirme

Uygulandığı Öğe
Microsoft 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ı, dizinleri ve ilişkileri oluşturabilir ve değiştirebilirsiniz. Bu makalede, veri tanımı sorguları ve bunların tablolar, kısıtlamalar, dizinler ve ilişkiler oluşturmak için nasıl kullanılacağı açıklanmaktadır. Bu makale, veri tanımı sorgusunu ne zaman kullanmanız gerektiğine karar vermenize de yardımcı olabilir.

Bu makalede

Genel bakış

Diğer Access sorgularından farklı olarak, veri tanımı sorguları veri almaz. Bunun yerine, veri tanımı sorgusu veritabanı nesnelerini oluşturmak, değiştirmek veya silmek için Veri Tanımlama Dili'ni kullanır.

Not

Veri Tanımlama Dili (DDL), Yapılandırılmış Sorgu DiliYapılandırılmış Sorgu Dili (SQL) öğesinin bir parçasıdır.

Veri tanımı sorguları çok kullanışlı olabilir. Yalnızca bazı sorguları çalıştırarak veritabanı şemanızın bazı 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ı

Veritabanı nesnelerini değiştirmek için veri tanımı sorguları kullanmak riskli olabilir, çünkü eylemlere onay iletişim kutuları eşlik etmez. Hata yaparsanız, verileri kaybedebilir veya tablonun tasarımını yanlışlıkla değiştirebilirsiniz. Veritabanınızdaki nesneleri değiştirmek için veri tanımı sorgusu kullanırken dikkatli olun. Kullandığınız veritabanının bakımı sizin sorumluluğunuz değilse, veri tanımı sorgusunu çalıştırmadan önce veritabanının yöneticisine danışmanız gerekir.

Önemli

Veri tanımı sorgusunu çalıştırmadan önce ilgili tüm tabloların yedek bir kopyasını alın.

DDL anahtar sözcükleri

Anahtar Sözcük Kullanım
CREATE Var olmayan bir dizin veya tablo oluşturma.
ALTER Varolan bir tablo veya sütunda değişiklik yapın.
DROP Var olan bir tablo, sütun veya kısıtlamayı silin.
ADD Tabloya sütun veya kısıtlama ekleyin.
SÜTUN ADD, ALTER veya DROP ile kullanma
CONSTRAINT ADD, ALTER veya DROP ile kullanma
İNDİS CREATE ile kullan
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 komutunun sözdizimi şöyledir:

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

CREATE TABLE komutunun gerekli öğeleri yalnızca CREATE TABLE komutunun kendisi ve tablonun adıdır, ancak genellikle tablonun bazı alanlarını veya diğer yönlerini tanımlamak istersiniz. Şu basit örneği ele alalım.

Satın almayı düşündüğünüz ikinci el 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 çok 30 karaktere ve yıl için de 4 karaktere izin vermek istiyorsunuz. Veri tanımı sorgusu kullanarak tabloyu oluşturmak için aşağıdakileri yapın:

Not

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 sekmesinde, Makrolar & Kod grubunda, Sorgu Tasarımı'nı tıklatın.
  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'nı tıklatın.
    Tasarım kılavuzu gizlenir ve SQL görünümü nesne sekmesi görüntülenir.
  3. Aşağıdaki SQL deyimini yazın:
    TABLO OLUŞTUR Arabalar (İsim METİN(30), Yıl METİN(4), Fiyat PARA BİRİMİ)
  4. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

Bir tabloyu değiştirme

Tabloda değişiklik yapmak 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 komutunun sözdizimi şöyledir:

ALTER TABLE table_name predicate

burada yüklem 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 sekmesinde, Makrolar & Kod grubunda, Sorgu Tasarımı'nı tıklatın.
  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'nı tıklatın.
    Tasarım kılavuzu gizlenir ve SQL görünümü nesne sekmesi görüntülenir.
  3. Aşağıdaki SQL deyimini yazın:
    ALTER TABLE Arabalar SÜTUN EKLE Koşul METİN(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 komutunun sözdizimi şöyledir:

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

Gerekli olan tek öğeler CREATE INDEX komutu, dizinin adı, AÇIK bağımsız değişkeni, dizine almak istediğiniz alanları içeren tablonun adı ve dizine eklenecek alanların listesidir.

  • DESC bağımsız değişkeni, dizinin azalan sırada oluşturulmasına neden olur; bu, dizine alınan alan için en yüksek değerleri arayan veya dizine alınmış alanı azalan düzende sıralayan sorguları sık sık çalıştırıyorsanız yararlı olabilir. Varsayılan olarak, dizin artan sırada oluşturulur.
  • WITH PRIMARY bağımsız değişkeni, dizine alınan alan veya alanları tablonun birincil anahtarı olarak ayarlar.
  • WITH DISALLOW NULL bağımsız değişkeni, dizinin dizine alınan alan için bir değer girilmesini zorunlu tutmasına neden olur; başka bir deyişle, null değerlere izin verilmez.

Satın almayı düşündüğünüz ikinci el arabaların adını, yılını, fiyatını ve durumunu depolayan alanlar içeren Arabalar adlı bir tablonuz olduğunu varsayalım. Ayrıca, tablonun büyüdüğünü ve sorgulara sık sık yıl alanını eklediğinizi varsayalım. Sorgularınızın daha hızlı sonuç döndürmesine yardımcı olmak için aşağıdaki yordamı kullanarak Yıl alanında bir dizin oluşturabilirsiniz:

  1. Oluştur sekmesinde, Makrolar & Kod grubunda, Sorgu Tasarımı'nı tıklatın.
  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'nı tıklatın.
    Tasarım kılavuzu gizlenir 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 (Yıl)
  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

Sınırlama, değerler eklendiğinde bir alanın veya alan bileş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ğerin yinelenmesine neden olacak bir değeri kabul etmesini engeller.

İlişki, bir değerin kısıtlanan alana veya alanlar bileşimine eklenip eklenemeyeceğini belirlemek için başka bir tablodaki bir alanın değerlerine veya alan bileş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: 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ı bir CONSTRAINT yan tümcesi, kısıtladığı alanın tanımından hemen sonra gelir 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 ikinci el arabaların adını, yılını, fiyatını ve durumunu depolayan alanlar içeren Arabalar adlı bir tablonuz olduğunu varsayalım. Ayrıca, arabanın durumu için bir değer girmeyi sık sık unuttuğunuzu ve bu bilgiyi her zaman kaydetmek istediğinizi varsayın. Koşul alanında, alanı boş bırakmanızı engelleyen bir kısıtlama oluşturmak için aşağıdaki yordamı kullanabilirsiniz:

  1. Oluştur sekmesinde, Makrolar & Kod grubunda, Sorgu Tasarımı'nı tıklatın.
  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'nı tıklatın.
    Tasarım kılavuzu gizlenir ve SQL görünümü nesne sekmesi görüntülenir.
  3. Aşağıdaki SQL deyimini yazın:
    ALTER TABLE Arabalar ALTER COLUMN Koşul METİN KISITLAMASI KoşulRequired 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ı arabaların Durum değeri zayıf , bazılarının değeri ise kötüdür.

Not

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

Değerleri temizleyip daha tutarlı olmalarını sağladıktan sonra, arabaların durumu için kullanmak istediğiniz tüm değerleri içeren Koşul adlı bir alanı olan ArabaDurumu adlı bir tablo oluşturabilirsiniz:

  1. Oluştur sekmesinde, Makrolar & Kod grubunda, Sorgu Tasarımı'nı tıklatın.

  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'nı tıklatın.
    Tasarım kılavuzu gizlenir ve SQL görünümü nesne sekmesi görüntülenir.

  3. Aşağıdaki SQL deyimini yazın:
    CREATE TABLE CarCondition (Koşul METİN(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 BİRİNCİL ANAHTAR

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

    Not

    Bu adımdaki SQL deyimi bir ekleme sorgusudur. Veri tanımı sorgusundan farklı olarak, 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, ArabaDurumu tablosundaki Koşul alanının değeriyle eşleşmesini zorunlu kılmak için, aşağıdaki yordamı kullanarak Koşul adlı alandaki ArabaDurumu ile Arabalar arasında bir ilişki oluşturabilirsiniz:

  1. Oluştur sekmesinde, Makrolar & Kod grubunda, Sorgu Tasarımı'nı tıklatın.
  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'nı tıklatın.
    Tasarım kılavuzu gizlenir ve SQL görünümü nesne sekmesi görüntülenir.
  3. Aşağıdaki SQL deyimini yazın:
    ALTER TABLE Arabalar ALTER COLUMN Koşul TEXT CONSTRAINT FKeyCondition BAŞVURULAR CarCondition (Koşul)
  4. Tasarım sekmesinin Sonuçlar grubunda Çalıştır'a tıklayın.

Çok alanlı kısıtlamalar

Çok alanlı CONSTRAINT yan tümcesi yalnızca alan tanımı yan tümcesinin 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 ele alalım. Arabalar tablosundaki hiçbir 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 alanlara uygulanan BENZERSİZ kısıtlaması oluşturabilirsiniz:

  1. Oluştur sekmesinde, Makrolar & Kod grubunda, Sorgu Tasarımı'nı tıklatın.
  2. Tasarım sekmesinin Sorgu Türü grubunda Veri Tanımı'nı tıklatın.
    Tasarım kılavuzu gizlenir ve SQL görünümü nesne sekmesi görüntülenir.
  3. Aşağıdaki SQL deyimini yazın:
    ALTER TABLE Arabalar KISITLAMA EKLE 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şı