Applies To„Access“, skirta „Microsoft 365“ „Access 2024“ Access 2021 Access 2019 Access 2016

Galite kurti ir modifikuoti lenteles, apribojimus, indeksus ir ryšius programoje "Access" įrašydami duomenų apibrėžimo užklausas SQL rodinyje. Šiame straipsnyje paaiškintos duomenų apibrėžimo užklausos ir kaip jas naudoti lentelėms, apribojimams, indeksams ir ryšiams kurti. Šis straipsnis taip pat gali padėti nuspręsti, kada naudoti duomenų apibrėžimo užklausą.

Šiame straipsnyje

Apžvalga

Skirtingai nei kitos "Access" užklausos, duomenų apibrėžimo užklausa negauna duomenų. Vietoj to duomenų apibrėžimo užklausa naudoja duomenų apibrėžimo kalbą duomenų bazės objektams kurti, modifikuoti arba naikinti.

Pastaba: Duomenų aprašo kalba (DDL) yra struktūrinių užklausų kalbos (SQL) dalis.

Duomenų apibrėžimo užklausos gali būti labai patogios. Galite reguliariai naikinti ir iš naujo sukurti duomenų bazės schemos dalis tiesiog paleisdami kai kurias užklausas. Apsvarstykite galimybę naudoti duomenų apibrėžimo užklausą, jei esate susipažinę su SQL sakiniais ir ketinate panaikinti ir iš naujo sukurti tam tikrų lentelių, apribojimų, indeksų ar ryšių.

Įspėjimas: Duomenų apibrėžimo užklausų naudojimas duomenų bazės objektams modifikuoti gali būti rizikingas, nes prie veiksmų nėra patvirtinimo dialogo langų. Jei padarysite klaidą, galite prarasti duomenis arba netyčia pakeisti lentelės dizainą. Būkite atsargūs, kai naudojate duomenų apibrėžimo užklausą duomenų bazės objektams modifikuoti. Jei nesate atsakingi už naudojamos duomenų bazės tvarkymą, prieš vykdydami duomenų apibrėžimo užklausą turėtumėte pasitarti su duomenų bazės administratoriumi.

Svarbu: Prieš vykdydami duomenų apibrėžimo užklausą, sukurkite atsarginę visų susijusių lentelių kopiją.

DDL raktažodžiai

Raktažodis

Naudokite

CREATE

Kurti indeksą arba lentelę, kurios dar nėra.

ALTER

Modifikuoti esamą lentelę arba stulpelį.

DROP

Panaikinkite esamą lentelę, stulpelį arba apribojimą.

ADD

Įtraukite stulpelį arba apribojimą į lentelę.

COLUMN

Naudojimas su ADD, ALTER arba DROP

CONSTRAINT

Naudojimas su ADD, ALTER arba DROP

INDEX

Naudoti su CREATE

TABLE

Naudoti su ALTER, CREATE arba DROP

Puslapio viršus

Lentelės kūrimas arba modifikavimas

Norėdami sukurti lentelę, naudokite komandą CREATE TABLE. Komanda CREATE TABLE turi tokią sintaksę:

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

Vieninteli būtini komandos CREATE TABLE elementai yra pati komanda CREATE TABLE ir lentelės pavadinimas, bet paprastai norėsite apibrėžti kai kuriuos laukus ar kitus lentelės aspektus. Panagrinėkime šį paprastą pavyzdį.

Tarkime, kad norite sukurti lentelę, kurioje būtų saugomas pavadinimas, metai ir naudotų automobilių, kuriuos ketinate įsigyti, kaina. Norite leisti ne daugiau kaip 30 simbolių pavadinimo ir 4 metų simbolius. Norėdami naudoti duomenų apibrėžimo užklausą lentelei sukurti, atlikite šiuos veiksmus:

Pastaba: Pirmiausia gali tekti įgalinti duomenų bazės turinį, kad būtų paleista duomenų aprašo užklausa:

  • Pranešimų juostoje spustelėkite Įgalinti turinį.

Lentelės kūrimas

  1. Skirtuko Kūrimas grupėje Makrokomandos & kodas spustelėkite Užklausos dizainas.

  2. Skirtuko Dizainas grupėje Užklausos tipas spustelėkite Duomenų apibrėžimas.

    Dizaino tinklelis yra paslėptas ir rodomas SQL rodinio objekto skirtukas.

  3. Įveskite šį SQL sakinį:

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

  4. Skirtuko Dizainas grupėje Rezultatai spustelėkite Vykdyti.

Lentelės modifikavimas

Norėdami modifikuoti lentelę, naudokite komandą ALTER TABLE. Galite naudoti komandą ALTER TABLE, kad įtrauktumėte, modifikuotumėte arba pašalintumėte (pašalintumėte) stulpelius ar apribojimus. Komanda ALTER TABLE turi tokią sintaksę:

ALTER TABLE table_name predicate

kur taisyklės sąlyga gali būti bet kuris iš šių:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Tarkime, kad norite įtraukti 10 simbolių teksto lauką, kad išsaugotumėte informaciją apie kiekvieno automobilio būklę. Tai galite atlikti taip:

  1. Skirtuko Kūrimas grupėje Makrokomandos & kodas spustelėkite Užklausos dizainas.

  2. Skirtuko Dizainas grupėje Užklausos tipas spustelėkite Duomenų apibrėžimas.

    Dizaino tinklelis yra paslėptas ir rodomas SQL rodinio objekto skirtukas.

  3. Įveskite šį SQL sakinį:

    ALTER TABLE Automobiliai PRIDĖTI STULPELIO sąlygos TEKSTAS(10)

  4. Skirtuko Dizainas grupėje Rezultatai spustelėkite Vykdyti.

Puslapio viršus

Rodyklės kūrimas

Norėdami sukurti esamos lentelės indeksą, naudokite komandą CREATE INDEX. Komanda CREATE INDEX turi tokią sintaksę:

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

Vieninteli būtini elementai yra komanda CREATE INDEX, indekso pavadinimas, argumentas ON, lentelės, kurioje yra norimi įtraukti indeksuoti laukai, pavadinimas ir į rodyklę įtrauktinų laukų sąrašas.

  • Dėl argumento DESC indeksas sukuriamas mažėjimo tvarka, o tai gali būti naudinga, jei dažnai vykdote užklausas, kurios ieško populiariausių indeksuoto lauko reikšmių, arba kurios rikiuoja indeksuotą lauką mažėjimo tvarka. Pagal numatytuosius nustatymus indeksas sukuriamas didėjimo tvarka.

  • Argumentas WITH PRIMARY nustato indeksuotą lauką arba laukus kaip lentelės pirminis raktas.

  • Naudojant argumentą WITH DISALLOW NULL, indeksas reikalauja įvesti indeksuoto lauko reikšmę, t. y. neapibrėžtos reikšmės neleidžiamos.

Tarkime, kad turite lentelę, pavadintą Automobiliai su laukais, kuriuose saugomas naudotų automobilių, kuriuos ketinate įsigyti, pavadinimas, metai, kaina ir būklė. Taip pat tarkime, kad lentelė tapo didelė ir į užklausas dažnai įtraukiate metų lauką. Galite sukurti lauko Metai indeksą, kad užklausos greičiau pateiktų rezultatus, atlikdami šią procedūrą:

  1. Skirtuko Kūrimas grupėje Makrokomandos & kodas spustelėkite Užklausos dizainas.

  2. Skirtuko Dizainas grupėje Užklausos tipas spustelėkite Duomenų apibrėžimas.

    Dizaino tinklelis yra paslėptas ir rodomas SQL rodinio objekto skirtukas.

  3. Įveskite šį SQL sakinį:

    CREATE INDEX YearIndex on Cars (Year)

  4. Skirtuko Dizainas grupėje Rezultatai spustelėkite Vykdyti.

Puslapio viršus

Apribojimo arba ryšio kūrimas

Apribojimas nustato loginę sąlygą, kurią turi atitikti laukas arba laukų derinys, kai įterpiamos reikšmės. Pvz., UNIQUE apribojimas neleidžia apribotam laukui priimti reikšmės, kuri dubliuotų esamą lauko reikšmę.

Ryšys yra apribojimo tipas, kuris nurodo kitos lentelės lauko reikšmes arba laukų derinį, kad nustatytų, ar reikšmę galima įterpti į apribotą lauką, ar laukų derinį. Nenaudojate specialaus raktažodžio, nurodančio, kad apribojimas yra ryšys.

Norėdami sukurti apribojimą, naudokite sąlygą CONSTRAINT komandoje CREATE TABLE arba ALTER TABLE. Yra dviejų rūšių CONSTRAINT sąlygos: viena sąlyga, skirta sukurti vieno lauko apribojimą, o kita – kelių laukų apribojimą.

Vieno lauko apribojimai

Vieno lauko sąlyga CONSTRAINT iš karto atitinka lauko, kurį ji apriboja, apibrėžimą ir turi tokią sintaksę:

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

Tarkime, kad turite lentelę, pavadintą Automobiliai su laukais, kuriuose saugomas naudotų automobilių, kuriuos ketinate įsigyti, pavadinimas, metai, kaina ir būklė. Taip pat tarkime, kad dažnai pamirštate įvesti automobilio būklės reikšmę ir kad visada norite įrašyti šią informaciją. Galite sukurti lauko Sąlyga apribojimą, kuris neleidžia palikti lauko tuščio, atlikdami šią procedūrą:

  1. Skirtuko Kūrimas grupėje Makrokomandos & kodas spustelėkite Užklausos dizainas.

  2. Skirtuko Dizainas grupėje Užklausos tipas spustelėkite Duomenų apibrėžimas.

    Dizaino tinklelis yra paslėptas ir rodomas SQL rodinio objekto skirtukas.

  3. Įveskite šį SQL sakinį:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. Skirtuko Dizainas grupėje Rezultatai spustelėkite Vykdyti.

Dabar tarkime, kad po kurio laiko pastebėsite, kad lauke Sąlyga yra daug panašių reikšmių, kurios turėtų būti vienodos. Pavyzdžiui, kai kurių automobilių būsena yra bloga , o kitų – bloga.

Pastaba: Jei norite sekti kartu su likusiomis procedūromis, įtraukite suklastotų duomenų į lentelę Automobiliai, kurią sukūrėte atlikdami ankstesnius veiksmus.

Išvalę reikšmes, kad jos būtų nuoseklesnės, galite sukurti lentelę, pavadintą CarCondition, su vienu lauku, pavadintu Sąlyga, kuriame yra visos reikšmės, kurias norite naudoti automobilių būklei:

  1. Skirtuko Kūrimas grupėje Makrokomandos & kodas spustelėkite Užklausos dizainas.

  2. Skirtuko Dizainas grupėje Užklausos tipas spustelėkite Duomenų apibrėžimas.

    Dizaino tinklelis yra paslėptas ir rodomas SQL rodinio objekto skirtukas.

  3. Įveskite šį SQL sakinį:

    CREATE TABLE CarCondition (Condition TEXT(10))

  4. Skirtuko Dizainas grupėje Rezultatai spustelėkite Vykdyti.

  5. Sukurkite pirminį lentelės raktą naudodami sakinį ALTER TABLE:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PIRMINIS RAKTAS

  6. Norėdami įterpti reikšmes iš lauko Sąlyga lentelėje Cars į naują CarCondition lentelę, įveskite šį SQL į SQL rodinio objekto skirtuką:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Pastaba: Šio veiksmo SQL sakinys yra papildymo užklausa. Skirtingai nei duomenų apibrėžimo užklausa, papildymo užklausa baigiasi kabliataškiu.

  7. Skirtuko Dizainas grupėje Rezultatai spustelėkite Vykdyti.

Ryšio kūrimas naudojant apribojimą

Norėdami reikalauti, kad bet kuri nauja reikšmė, įterpta į lentelės Cars lauką Sąlyga, atitiktų lauko Sąlyga reikšmę lentelėje CarCondition, galite sukurti ryšį tarp CarCondition ir Cars lauke, pavadintame Sąlyga, naudodami šią procedūrą:

  1. Skirtuko Kūrimas grupėje Makrokomandos & kodas spustelėkite Užklausos dizainas.

  2. Skirtuko Dizainas grupėje Užklausos tipas spustelėkite Duomenų apibrėžimas.

    Dizaino tinklelis yra paslėptas ir rodomas SQL rodinio objekto skirtukas.

  3. Įveskite šį SQL sakinį:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Sąlyga)

  4. Skirtuko Dizainas grupėje Rezultatai spustelėkite Vykdyti.

Kelių laukų apribojimai

Kelių laukų sąlyga CONSTRAINT gali būti naudojama tik už lauko apibrėžimo sąlygos ribų ir turi tokią sintaksę:

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

Panagrinėkime kitą pavyzdį, kuriame naudojama lentelė Cars. Tarkime, norite įsitikinti, kad nėra dviejų įrašų lentelėje Automobiliai, turi tokį patį reikšmių rinkinį pavadinimo, metų, sąlygos ir kainos reikšmės. Galite sukurti šiems laukams taikomą UNIQUE apribojimą, naudodami šią procedūrą:

  1. Skirtuko Kūrimas grupėje Makrokomandos & kodas spustelėkite Užklausos dizainas.

  2. Skirtuko Dizainas grupėje Užklausos tipas spustelėkite Duomenų apibrėžimas.

    Dizaino tinklelis yra paslėptas ir rodomas SQL rodinio objekto skirtukas.

  3. Įveskite šį SQL sakinį:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (pavadinimas, metai, sąlyga, kaina)

  4. Skirtuko Dizainas grupėje Rezultatai spustelėkite Vykdyti.

Puslapio viršus

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.

Bendruomenės padeda užduoti klausimus ir į juos atsakyti, pateikti atsiliepimų ir išgirsti iš ekspertų, turinčių daug žinių.