W programie Access można tworzyć i modyfikować tabele, ograniczenia, indeksy i relacje, pisząc zapytania definiujące dane w widoku SQL. W tym artykule opisano kwerendy definiujące dane oraz sposoby używania ich do tworzenia tabel, ograniczeń, indeksów i relacji. Ten artykuł może też pomóc w określeniu, kiedy należy użyć kwerendy definiującej dane.
W tym artykule
Omówienie
W przeciwieństwie do innych zapytań programu Access zapytanie definiujące dane nie pobiera danych. Zamiast tego zapytanie definiujące dane do tworzenia, modyfikowania i usuwania obiektów bazy danych używa języka Data Definition Language.
Uwaga
Język DDL (Data Definition Language) jest częścią języka Structured Query Language (SQL).
Zapytania definiujące dane mogą być bardzo wygodne. Aby regularnie usuwać i tworzyć ponownie fragmenty schematu bazy danych, wystarczy uruchomić kilka kwerend. Rozważ użycie kwerendy definiującej dane, jeśli znasz instrukcje SQL i planujesz usunąć i ponownie utworzyć określone tabele, ograniczenia, indeksy lub relacje.
Ostrzeżenie
Używanie kwerend definiujących dane w celu modyfikowania obiektów bazy danych może być ryzykowne, ponieważ akcjom tym nie towarzyszą okna dialogowe potwierdzenia. Jeśli popełnisz błąd, możesz utracić dane lub przypadkowo zmienić projekt tabeli. Podczas modyfikowania obiektów w bazie danych przy użyciu kwerendy definiującej dane należy zachować ostrożność. Jeśli użytkownik nie jest odpowiedzialny za konserwację używanej bazy danych, przed uruchomieniem kwerendy definiującej dane powinien skonsultować się z jej administratorem.
Ważne
Przed uruchomieniem kwerendy definiującej 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 | Zmodyfikuj istniejącą tabelę lub kolumnę. |
| DROP | Usuń istniejącą tabelę, kolumnę lub ograniczenie. |
| ADD | Dodawanie kolumny lub ograniczenia do tabeli. |
| COLUMN | Użyj z instrukcjami ADD, ALTER lub DROP |
| CONSTRAINT | Użyj z instrukcjami ADD, ALTER lub DROP |
| INDEX | Użyj z funkcją CREATE |
| TABLE | Use with ALTER, CREATE lub DROP |
Tworzenie lub modyfikowanie tabeli
Aby utworzyć tabelę, użyj polecenia CREATE TABLE. Polecenie UTWÓRZ TABELĘ 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 zazwyczaj wymagane jest zdefiniowanie niektórych pól lub innych aspektów tabeli. Rozważmy ten prosty przykład.
Załóżmy, że należy utworzyć tabelę do przechowywania nazwy, roku i ceny używanych samochodów, które zamierzasz kupić. Nazwa ma zawierać maksymalnie 30 znaków, a rok — 4. Aby utworzyć tabelę za pomocą kwerendy definiującej dane, wykonaj następujące czynności:
Uwaga
Aby uruchomić zapytanie definiujące dane, może być konieczne włączenie zawartości bazy danych:
- Na pasku komunikatów kliknij przycisk Włącz zawartość.
Tworzenie tabeli
- Na karcie Tworzenie w grupie Makra & kod kliknij pozycję Projekt kwerendy.
- Na karcie Projektowanie w grupie Typ kwerendy kliknij przycisk Definicja danych.
Siatka projektu zostanie ukryta i zostanie wyświetlona karta obiektu widoku SQL. - Wpisz następującą instrukcję SQL:
CREATE TABLE Samochody (nazwa TEKST(30), rok TEKST(4), cena WALUTA) - Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.
Modyfikowanie tabeli
Aby zmodyfikować tabelę, użyj polecenia ALTER TABLE. Polecenie ALTER TABLE umożliwia dodawanie, modyfikowanie i usuwanie (usuwanie) kolumn lub ograniczeń. Polecenie ALTER TABLE ma następującą składnię:
ALTER TABLE table_name predicate
gdzie orzeczenie może być jednym 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ć pole tekstowe zawierające 10 znaków w celu przechowywania informacji o stanie każdego samochodu. Możesz wykonać następujące czynności:
- Na karcie Tworzenie w grupie Makra & kod kliknij pozycję Projekt kwerendy.
- Na karcie Projektowanie w grupie Typ kwerendy kliknij przycisk Definicja danych.
Siatka projektu zostanie ukryta i zostanie wyświetlona karta obiektu widoku SQL. - Wpisz następującą instrukcję SQL:
ALTER TABLE Samochody DODAJ KOLUMNĘ Warunek TEKST(10) - Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.
Tworzenie indeksu
Aby utworzyć indeks na 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 do indeksowania oraz lista pól do uwzględnienia w indeksie.
- Argument DESC powoduje, że indeks jest tworzony w kolejności malejącej, co może być użyteczne, jeśli często są uruchamiane kwerendy wyszukujące najwyższe wartości pola indeksowanego lub sortujące indeksowane pole 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 indeksowanego pola — wartości null są niedozwolone.
Załóżmy, że masz tabelę o nazwie Samochody z polami zawierającymi nazwy, rok, cenę i stan używanych samochodów, które zamierzasz kupić. Załóżmy również, że tabela stała się duża i często dołączasz pole roku do zapytań. Aby przyspieszyć zwracanie wyników przez zapytania, możesz utworzyć indeks pola Rok, wykonując poniższą procedurę:
- Na karcie Tworzenie w grupie Makra & kod kliknij pozycję Projekt kwerendy.
- Na karcie Projektowanie w grupie Typ kwerendy kliknij przycisk Definicja danych.
Siatka projektu zostanie ukryta i zostanie wyświetlona karta obiektu widoku SQL. - Wpisz następującą instrukcję SQL:
CREATE INDEX YearIndex ON Samochody (rok) - Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.
Tworzenie ograniczenia lub relacji
Ograniczenie określa warunek logiczny, który pole lub kombinacja pól musi spełnić podczas wstawiania wartości. Na przykład ograniczenie UNIQUE uniemożliwia zablokowanemu polu zaakceptowanie wartości, która spowodowałaby duplikowanie istniejącej wartości pola.
Relacja to typ ograniczenia, które odwołuje się do wartości pola lub kombinacji pól w innej tabeli w celu określenia, czy wartość może być wstawiana do pola lub kombinacji pól podlegających ograniczeniom. Nie należy używać specjalnego słowa kluczowego, aby wskazać, że ograniczenie jest relacją.
Aby utworzyć ograniczenie, użyj klauzuli CONSTRAINT w poleceniu CREATE TABLE lub ALTER TABLE. Istnieją dwa rodzaje klauzul CONSTRAINT: jedna służy do utworzenia ograniczenia w jednym polu, a druga do utworzenia ograniczenia w wielu polach.
Ograniczenia w jednym polu
Klauzula CONSTRAINT zawierająca jedno pole jest bezpośrednio zgodna z definicją pola, które ogranicza, 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 nazwy, rok, cenę i stan używanych samochodów, które zamierzasz kupić. Załóżmy również, że użytkownik często zapomina o wprowadzeniu wartości określającej stan samochodu i zawsze chce zanotować tę informację. Możesz utworzyć ograniczenie dla pola Warunek, które uniemożliwi pozostawienie tego pola pustego, wykonując poniższą procedurę:
- Na karcie Tworzenie w grupie Makra & kod kliknij pozycję Projekt kwerendy.
- Na karcie Projektowanie w grupie Typ kwerendy kliknij przycisk Definicja danych.
Siatka projektu zostanie ukryta i zostanie wyświetlona karta obiektu widoku SQL. - Wpisz następującą instrukcję SQL:
ALTER TABLE Samochody ALTER COLUMN Warunek TEXT CONSTRAINT ConditionRequired NOT NULL - Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.
Teraz załóżmy, że po jakimś czasie okaże się, że w polu Warunek znajduje się wiele podobnych wartości, które powinny być takie same. Na przykład stan niektórych samochodów jest słaby , a stan innych — zły.
Uwaga
Jeśli chcesz wykonać pozostałe procedury, dodaj fałszywe dane do tabeli Samochody, która została utworzona w poprzednich krokach.
Po wyczyszczeniu wartości, tak aby były bardziej spójne, możesz utworzyć tabelę o nazwie WarunekSamochodu z jednym polem o nazwie Warunek, zawierającym wszystkie wartości, których chcesz użyć dla stanu samochodów:
Na karcie Tworzenie w grupie Makra & kod kliknij pozycję Projekt kwerendy.
Na karcie Projektowanie w grupie Typ kwerendy kliknij przycisk Definicja danych.
Siatka projektu zostanie ukryta i zostanie wyświetlona karta obiektu widoku SQL.Wpisz następującą instrukcję SQL:
CREATE TABLE CarCondition (Warunek TEXT(10))Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.
Utwórz klucz podstawowy tabeli przy użyciu instrukcji ALTER TABLE:
ALTER TABLE CarCondition Warunek ALTER COLUMN Warunek TEXT CONSTRAINT CarConditionPK KLUCZ PODSTAWOWYAby wstawić wartości z pola Condition tabeli Cars do nowej tabeli CarCondition, wpisz następujący kod SQL na karcie obiektu widoku SQL:
INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;Uwaga
Instrukcja SQL w tym kroku jest zapytaniem dołączającym. W przeciwieństwie do kwerendy definiującej dane kwerenda dołączająca kończy się średnikiem.
Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.
Tworzenie relacji przy użyciu ograniczenia
Aby każda nowa wartość wstawiana w polu Warunek tabeli Samochody odpowiadała wartości pola Warunek w tabeli WarunekSamochodu, można następnie utworzyć relację między StanSamochodu a Kategorią Samochody w polu o nazwie Warunek, wykonując poniższą procedurę:
- Na karcie Tworzenie w grupie Makra & kod kliknij pozycję Projekt kwerendy.
- Na karcie Projektowanie w grupie Typ kwerendy kliknij przycisk Definicja danych.
Siatka projektu zostanie ukryta i zostanie wyświetlona karta obiektu widoku SQL. - Wpisz następującą instrukcję SQL:
ALTER TABLE Samochody ALTER COLUMN Warunek OGRANICZENIE TEKSTOWE FKeyCondition REFERENCES CarCondition (Warunek) - Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.
Ograniczenia w wielu polach
Klauzula CONSTRAINT w wielu polach 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 inny przykład użycia tabeli Samochody. Załóżmy, że chcesz się upewnić, że żadne dwa rekordy w tabeli Samochody nie mają takiego samego zestawu wartości dla pola Nazwa, Rok, Warunek i Cena. Aby utworzyć ograniczenie UNIKATOWE stosowane do tych pól, wykonaj poniższą procedurę:
- Na karcie Tworzenie w grupie Makra & kod kliknij pozycję Projekt kwerendy.
- Na karcie Projektowanie w grupie Typ kwerendy kliknij przycisk Definicja danych.
Siatka projektu zostanie ukryta i zostanie wyświetlona karta obiektu widoku SQL. - Wpisz następującą instrukcję SQL:
ALTER TABLE Samochody ADD CONSTRAINT NoDupes UNIQUE (nazwa, rok, stan, cena) - Na karcie Projektowanie w grupie Wyniki kliknij przycisk Uruchom.