W programie Access można tworzyć i modyfikować tabele, ograniczenia, indeksy i relacje, zapisując zapytania definiujące dane w widoku SQL. W tym artykule wyjaśniono zapytania definiujące dane oraz wyjaśniono, jak używać ich do tworzenia tabel, ograniczeń, indeksów i relacji. Ten artykuł może również ułatwić określenie, kiedy używać zapytania definiującego dane.

W tym artykule

Przegląd

W przeciwieństwie do innych zapytań programu Access zapytanie definiujące dane nie pobiera danych. Zamiast tego zapytanie definiujące dane używa języka definicji danych do tworzenia, modyfikowania lub usuwania obiektów bazy danych.

Uwaga: Język DDL (Data Definition Language) jest częścią języka SQL (Structured Query Language).

Zapytania definiujące dane mogą być bardzo wygodne. Części schematu bazy danych można regularnie usuwać i ponownie tworzyć tylko przez uruchamianie niektórych zapytań. Rozważ użycie zapytania definiującego dane, jeśli znasz instrukcje SQL i zamierzasz usunąć i ponownie utworzyć określone tabele, ograniczenia, indeksy lub relacje.

Ostrzeżenie: Modyfikowanie obiektów bazy danych za pomocą zapytań definicji danych może być ryzykowne, ponieważ akcjom nie towarzyszą okna dialogowe potwierdzenia. Jeśli popełnisz błąd, możesz utracić dane lub nieumyślnie zmienić projekt tabeli. Zachowaj ostrożność podczas modyfikowania obiektów w bazie danych za pomocą zapytania definiującego dane. Jeśli nie ponosisz odpowiedzialności za obsługę używanej bazy danych, przed uruchomieniem zapytania definiującego dane skonsultuj się z administratorem bazy danych.

Ważne: Przed uruchomieniem zapytania definiującego dane utwórz kopię zapasową wszystkich tabel.

Słowa kluczowe DDL

Słowo kluczowe

Użyj

CREATE

Utwórz indeks lub tabelę, która jeszcze nie istnieje.

ALTER

Modyfikowanie istniejącej tabeli lub istniejącej kolumny.

DROP

Usuwanie istniejącej tabeli, kolumny lub ograniczenia.

ADD

Dodawanie kolumny lub ograniczenia do tabeli.

COLUMN

Używanie z funkcjami ADD, ALTER lub DROP

CONSTRAINT

Używanie z funkcjami ADD, ALTER lub DROP

INDEX

Używanie z funkcją CREATE

TABLE

Używanie z funkcjami ALTER, CREATE lub DROP

Początek strony

Tworzenie lub modyfikowanie tabeli

Aby utworzyć tabelę, użyj polecenia CREATE TABLE. Polecenie CREATE TABLE ma następującą składnię:

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

Jedynymi wymaganymi elementami polecenia CREATE TABLE są samo polecenie CREATE TABLE i nazwa tabeli, ale zwykle trzeba zdefiniować niektóre pola lub inne aspekty tabeli. Rozważmy ten prosty przykład.

Załóżmy, że chcesz utworzyć tabelę przechowującą nazwę, rok i cenę używanych samochodów rozważanych do zakupu. Nazwa ma składać się z maksymalnie 30 znaków i 4 znaków w roku. Aby utworzyć tabelę za pomocą zapytania definiującego dane, wykonaj następujące czynności:

Uwaga: Najpierw może być konieczne włączenie zawartości bazy danych w celu uruchomienia zapytania definiującego dane:

  • Na pasku komunikatów kliknij przycisk Włącz zawartość.

Tworzenie tabeli

  1. Na karcie Tworzenie w grupie Makra & Kod kliknij pozycję Projekt zapytania.

  2. Na karcie Projektowanie w grupie Typ zapytania kliknij pozycję Definicja danych.

    Siatka projektu jest ukryta i jest wyświetlana karta obiektu widoku SQL.

  3. Wpisz następującą instrukcję SQL:

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

  4. Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.

Modyfikowanie tabeli

Aby zmodyfikować tabelę, należy użyć polecenia ALTER TABLE. Polecenie ALTER TABLE umożliwia dodawanie, modyfikowanie i upuszczanie (usuwanie) kolumn lub ograniczeń. Polecenie ALTER TABLE ma następującą składnię:

ALTER TABLE table_name predicate

gdzie orzeczenie może być dowolne z następujących:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Załóżmy, że chcesz dodać 10-znakowe pole tekstowe w celu przechowywania informacji o stanie każdego samochodu. Możesz wykonać następujące czynności:

  1. Na karcie Tworzenie w grupie Makra & Kod kliknij pozycję Projekt zapytania.

  2. Na karcie Projektowanie w grupie Typ zapytania kliknij pozycję Definicja danych.

    Siatka projektu jest ukryta i jest wyświetlana karta obiektu widoku SQL.

  3. Wpisz następującą instrukcję SQL:

    ALTER TABLE Samochody DODAJ TEKST WARUNKU KOLUMNY(10)

  4. Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.

Początek strony

Tworzenie indeksu

Aby utworzyć indeks w istniejącej tabeli, użyj polecenia CREATE INDEX. Polecenie CREATE INDEX ma następującą składnię:

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

Jedynymi wymaganymi elementami są polecenie CREATE INDEX, nazwa indeksu, argument ON, nazwa tabeli zawierającej pola, które mają zostać indeksowane, oraz lista pól, które mają zostać uwzględnione w indeksie.

  • Argument DESC powoduje, że indeks jest tworzony w kolejności malejącej, co może być przydatne, jeśli często są uruchamiane zapytania wyszukujące najwyższe wartości dla pola indeksowanego lub sortujące pole indeksowane w kolejności malejącej. Domyślnie indeks jest tworzony w kolejności rosnącej.

  • Argument WITH PRIMARY określa indeksowane pole lub pola jako klucz podstawowy tabeli.

  • Argument WITH DISALLOW NULL powoduje, że indeks wymaga wprowadzenia wartości dla pola indeksowanego , czyli wartości null są niedozwolone.

Załóżmy, że masz tabelę o nazwie Samochody z polami zawierającymi nazwę, rok, cenę i stan używanych samochodów, które rozważasz za zakup. Załóżmy też, że tabela stała się duża i często umieszcza się pole roku w zapytaniach. Możesz utworzyć indeks w polu Rok, aby ułatwić kwerendom szybsze zwracanie wyników za pomocą następującej procedury:

  1. Na karcie Tworzenie w grupie Makra & Kod kliknij pozycję Projekt zapytania.

  2. Na karcie Projektowanie w grupie Typ zapytania kliknij pozycję Definicja danych.

    Siatka projektu jest ukryta i jest wyświetlana karta obiektu widoku SQL.

  3. Wpisz następującą instrukcję SQL:

    CREATE INDEX YearIndex ON Cars (Rok)

  4. Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.

Początek strony

Tworzenie ograniczenia lub relacji

Ograniczenie ustanawia warunek logiczny, który musi spełniać pole lub połączenie pól po wstawieniu wartości. Na przykład ograniczenie UNIQUE uniemożliwia ograniczonemu polu zaakceptowanie wartości, która zduplikuje istniejącą wartość pola.

Relacja to typ ograniczenia odwołujące się do wartości pola lub kombinacji pól w innej tabeli w celu określenia, czy wartość może zostać wstawiona w ograniczonym polu lub w kombinacji pól. Nie należy używać specjalnego słowa kluczowego do wskazywania, że ograniczenie jest relacją.

Aby utworzyć ograniczenie, należy użyć klauzuli CONSTRAINT w poleceniu CREATE TABLE lub ALTER TABLE. Istnieją dwa rodzaje klauzul CONSTRAINT: jedna służąca do tworzenia ograniczenia w jednym polu, a druga do tworzenia ograniczenia dla wielu pól.

Ograniczenia w jednym polu

Klauzula CONSTRAINT z jednym polem jest bezpośrednio zgodna z definicją ograniczonego pola i ma następującą składnię:

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

Załóżmy, że masz tabelę o nazwie Samochody z polami zawierającymi nazwę, rok, cenę i stan używanych samochodów, które rozważasz za zakup. Załóżmy też, że często zapominasz o wprowadzeniu wartości dla stanu samochodu i że zawsze chcesz zarejestrować te informacje. W polu Warunek można utworzyć ograniczenie uniemożliwiające pozostawienie tego pola pustego, wykonując poniższą procedurę:

  1. Na karcie Tworzenie w grupie Makra & Kod kliknij pozycję Projekt zapytania.

  2. Na karcie Projektowanie w grupie Typ zapytania kliknij pozycję Definicja danych.

    Siatka projektu jest ukryta i jest wyświetlana karta obiektu widoku SQL.

  3. Wpisz następującą instrukcję SQL:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.

Teraz załóżmy, że po jakimś czasie zauważysz, że w polu Warunek jest wiele podobnych wartości, które powinny być takie same. Na przykład niektóre samochody mają wartość stanu słabej , a inne mają wartość złej.

Uwaga: Jeśli chcesz wykonać pozostałe procedury, dodaj fałszywe dane do tabeli Samochody utworzonej w poprzednich krokach.

Po wyczyszczeniu wartości, aby były spójniejsze, można utworzyć tabelę o nazwie CarCondition z jednym polem o nazwie Warunek, która zawiera wszystkie wartości, których chcesz użyć w warunkach samochodów:

  1. Na karcie Tworzenie w grupie Makra & Kod kliknij pozycję Projekt zapytania.

  2. Na karcie Projektowanie w grupie Typ zapytania kliknij pozycję Definicja danych.

    Siatka projektu jest ukryta i jest wyświetlana karta obiektu widoku SQL.

  3. Wpisz następującą instrukcję SQL:

    CREATE TABLE CarCondition (Tekst warunku(10))

  4. Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.

  5. Utwórz klucz podstawowy dla tabeli przy użyciu instrukcji ALTER TABLE:

    ALTER TABLE CarCondition ALTER COLUMN Warunek TEKST CONSTRAINT CarConditionPK KLUCZ PODSTAWOWY

  6. Aby wstawić wartości z pola Warunek tabeli Samochody do nowej tabeli CarCondition, wpisz następujący sql na karcie obiektu widoku SQL:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Uwaga: Instrukcja SQL w tym kroku jest zapytanie dołączające. W przeciwieństwie do zapytania definiującego dane zapytanie dołączające kończy się średnikiem.

  7. Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.

Tworzenie relacji przy użyciu ograniczenia

Aby każda nowa wartość wstawiona w polu Warunek w tabeli Samochody była zgodna z wartością pola Warunek w tabeli CarCondition, można następnie utworzyć relację między funkcjami CarCondition i Cars w polu o nazwie Warunek, wykonując poniższą procedurę:

  1. Na karcie Tworzenie w grupie Makra & Kod kliknij pozycję Projekt zapytania.

  2. Na karcie Projektowanie w grupie Typ zapytania kliknij pozycję Definicja danych.

    Siatka projektu jest ukryta i jest wyświetlana karta obiektu widoku SQL.

  3. Wpisz następującą instrukcję SQL:

    ALTER TABLE Samochody ALTER KOLUMNA Warunek TEKST OGRANICZENIE FKeyCondition REFERENCES CarCondition (Warunek)

  4. Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.

Ograniczenia wielopolowe

Klauzula CONSTRAINT z wieloma polami może być używana tylko poza klauzulą definicji pola i ma następującą składnię:

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}]}

Rozważmy kolejny przykład używający tabeli Samochody. Załóżmy, że chcesz się upewnić, że dwa rekordy w tabeli Samochody nie mają tego samego zestawu wartości w polach Nazwa, Rok, Warunek i Cena. Możesz utworzyć ograniczenie UNIKATOWE, które będzie stosowane do tych pól, wykonując poniższą procedurę:

  1. Na karcie Tworzenie w grupie Makra & Kod kliknij pozycję Projekt zapytania.

  2. Na karcie Projektowanie w grupie Typ zapytania kliknij pozycję Definicja danych.

    Siatka projektu jest ukryta i jest wyświetlana karta obiektu widoku SQL.

  3. Wpisz następującą instrukcję SQL:

    ALTER TABLE Samochody DODAJ WĘZŁY CONSTRAINT UNIKATOWE (nazwa, rok, warunek, cena)

  4. Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.

Początek strony

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.