Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Voit luoda ja muokata taulukoita, rajoituksia, indeksejä ja yhteyksiä Accessissa kirjoittamalla tietomäärityskyselyitä SQL-näkymässä. Tässä artikkelissa kerrotaan tietomäärityskyselyistä ja niiden käyttämisestä taulukoiden, rajoitusten, indeksien ja yhteyksien luomiseen. Tämän artikkelin avulla voit myös päättää, milloin tietomäärityskyselyä käytetään.

Tämän artikkelin sisältö

Yleiskatsaus

Toisin kuin muut Access-kyselyt, tietojen määrityskysely ei nouta tietoja. Sen sijaan tietomäärityskysely käyttää tietomäärityskieltä tietokantaobjektien luomiseen, muokkaamiseen tai poistamiseen.

Huomautus: DDL (Data Definition Language) on osa SQL (Structured Query Language) -kieltä.

Tietojen määrityskyselyt voivat olla käteviä. Voit poistaa tietokantarakenteen osia ja luoda niitä uudelleen säännöllisesti vain suorittamalla joitakin kyselyjä. Harkitse tietojen määrityskyselyn käyttämistä, jos sql-lausekkeet ovat sinulle tuttuja ja aiot poistaa ja luoda uudelleen tiettyjä taulukoita, rajoituksia, indeksejä tai yhteyksiä.

Varoitus: Tietomäärityskyselyjen käyttäminen tietokantaobjektien muokkaamiseen voi olla riskialtista, koska toimintoihin ei liity vahvistusvalintaikkunoita. Jos teet virheen, voit menettää tietoja tai muuttaa taulukon rakennetta vahingossa. Ole varovainen, kun muokkaat tietokannan objekteja tietojen määrityskyselyn avulla. Jos et ole vastuussa käyttämäsi tietokannan ylläpidosta, ota yhteyttä tietokannan järjestelmänvalvojaan ennen tietojen määrityskyselyn suorittamista.

Tärkeää: Tee varmuuskopio kaikista mukana olevista taulukoista, ennen kuin suoritat tietojen määrityskyselyn.

DDL-avainsanat

Avainsana.

Yleismerkki

LUO

Luo indeksi tai taulukko, jota ei vielä ole.

MUUTA

Muokkaa aiemmin luotua taulukkoa tai saraketta.

PUDOTA

Poista aiemmin luotu taulukko, sarake tai rajoitus.

LISÄÄ

Lisää taulukkoon sarake tai rajoitus.

SARAKE

Käytä ADD-, ALTER- tai DROP-näppäimen kanssa

RAJOITE

Käytä ADD-, ALTER- tai DROP-näppäimen kanssa

HAKEMISTO

Käytä CREATE-toiminnossa

TAULUKKO

Käytä ALTER-, CREATE- tai DROP-toiminnolla

Sivun alkuun

Taulukon luominen tai muokkaaminen

Voit luoda taulukon LUO TAULUKKO -komennolla. LUO TAULUKKO -komennolla on seuraava syntaksi:

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

CREATE TABLE -komennon ainoat pakolliset elementit ovat ITSE CREATE TABLE -komento ja taulukon nimi, mutta yleensä haluat määrittää joitakin kenttiä tai muita taulukon ominaisuuksia. Harkitse tätä yksinkertaista esimerkkiä.

Oletetaan, että haluat luoda taulukon, johon tallennetaan ostettavien käytettyjen autojen nimi, vuosi ja hinta. Haluat sallia nimelle enintään 30 merkkiä ja vuoden 4 merkkiä. Jos haluat luoda taulukon tietomäärityskyselyn avulla, toimi seuraavasti:

Huomautus: Sinun on ehkä ensin otettava tietokannan sisältö käyttöön, jotta tietojen määrityskysely voidaan suorittaa:

  • Valitse sanomapalkista Ota sisältö käyttöön.

Taulukon luominen

  1. Valitse Luo-välilehden Makrot ja koodi -ryhmässä Kyselyn rakennenäkymä.

  2. Valitse Rakenne-välilehdenKyselytyyppi-ryhmästäTietomääritys.

    Rakenneruudukko on piilotettu, ja SQL-näkymän objektivälilehti tulee näkyviin.

  3. Kirjoita seuraava SQL-lauseke:

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

  4. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

Taulukon muokkaaminen

Jos haluat muokata taulukkoa, käytä ALTER TABLE -komentoa. ALTER TABLE -komennolla voit lisätä, muokata tai poistaa sarakkeita tai rajoituksia. ALTER TABLE -komennolla on seuraava syntaksi:

ALTER TABLE table_name predicate

jossa predikaatti voi olla jokin seuraavista:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Oletetaan, että haluat lisätä 10-merkkisen tekstikentän, johon tallennetaan tietoja kunkin auton kunnosta. Voit tehdä seuraavaa:

  1. Valitse Luo-välilehden Makrot ja koodi -ryhmässä Kyselyn rakennenäkymä.

  2. Valitse Rakenne-välilehdenKyselytyyppi-ryhmästäTietomääritys.

    Rakenneruudukko on piilotettu, ja SQL-näkymän objektivälilehti tulee näkyviin.

  3. Kirjoita seuraava SQL-lauseke:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  4. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

Sivun alkuun

Hakemiston luominen

Jos haluat luoda indeksin aiemmin luotuun taulukkoon, käytä CREATE INDEX -komentoa. CREATE INDEX -komennolla on seuraava syntaksi:

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

Ainoat pakolliset elementit ovat CREATE INDEX -komento, indeksin nimi, ON-argumentti, indeksoitavien kenttien sisältävän taulukon nimi ja indeksiin sisällytettävien kenttien luettelo.

  • DESC-argumentti aiheuttaa indeksin luomisen laskevaan järjestykseen, mikä voi olla hyödyllistä, jos suoritat usein kyselyjä, jotka etsivät indeksoidusta kentästä ylintä arvoa tai jotka lajittelevat indeksoidut kentät laskevaan järjestykseen. Indeksi luodaan oletusarvoisesti nousevassa järjestyksessä.

  • WITH PRIMARY -argumentti määrittää indeksoidut kentät taulukon perusavain.

  • WITH DISALLOW NULL -argumentti aiheuttaa sen, että indeksi edellyttää, että indeksoidulle kentälle kirjoitetaan arvo eli tyhjäarvoja ei sallita.

Oletetaan, että sinulla on Autot-niminen taulukko, jossa on kentät, joihin tallennetaan ostettavien käytettyjen autojen nimi, vuosi, hinta ja kunto. Oletetaan myös, että taulukosta on tullut suuri ja että sisällytät usein vuosikentän kyselyihin. Voit luoda Vuosi-kenttään indeksin, jonka avulla kyselysi palauttavat tulokset nopeammin, noudattamalla seuraavia ohjeita:

  1. Valitse Luo-välilehden Makrot ja koodi -ryhmässä Kyselyn rakennenäkymä.

  2. Valitse Rakenne-välilehdenKyselytyyppi-ryhmästäTietomääritys.

    Rakenneruudukko on piilotettu, ja SQL-näkymän objektivälilehti tulee näkyviin.

  3. Kirjoita seuraava SQL-lauseke:

    CREATE INDEX YearIndex ON Cars (Vuosi)

  4. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

Sivun alkuun

Rajoitteen tai suhteen luominen

Rajoitus muodostaa loogisen ehdon, joka kentän tai kenttäyhdistelmän on täytettävä, kun arvoja lisätään. Esimerkiksi UNIQUE-rajoite estää rajoitettua kenttää hyväksymästä arvoa, joka monistaisi aiemmin luodun arvon kentälle.

Yhteys on rajoitetyyppi, joka viittaa toisen taulukon kentän tai kenttäyhdistelmän arvoihin sen määrittämiseksi, voidaanko arvo lisätä rajoitettuun kenttään vai kenttien yhdistelmään. Et käytä erityistä avainsanaa osoittamaan, että rajoitus on yhteys.

Voit luoda rajoituksen KÄYTTÄMÄLLÄ CONSTRAINT-lausetta CREATE TABLE- tai ALTER TABLE -komennossa. CONSTRAINT-lauseita on kahdenlaisia: toinen yhdelle kentälle rajoituksen luomiseen ja toinen rajoitusten luomiseen useille kentille.

Yhden kentän rajoitukset

Yhden kentän CONSTRAINT-lause seuraa välittömästi rajoittavan kentän määritelmää, ja sillä on seuraava syntaksi:

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

Oletetaan, että sinulla on Autot-niminen taulukko, jossa on kentät, joihin tallennetaan ostettavien käytettyjen autojen nimi, vuosi, hinta ja kunto. Oletetaan myös, että unohdat usein antaa arvon auton kunnosta ja että haluat aina tallentaa nämä tiedot. Voit luoda Ehto-kenttään rajoituksen, joka estää sinua jättämästä kenttää tyhjäksi seuraavasti:

  1. Valitse Luo-välilehden Makrot ja koodi -ryhmässä Kyselyn rakennenäkymä.

  2. Valitse Rakenne-välilehdenKyselytyyppi-ryhmästäTietomääritys.

    Rakenneruudukko on piilotettu, ja SQL-näkymän objektivälilehti tulee näkyviin.

  3. Kirjoita seuraava SQL-lauseke:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

Oletetaan, että jonkin ajan kuluttua huomaat, että Ehto-kentässä on monia samankaltaisia arvoja, joiden pitäisi olla samat. Esimerkiksi joidenkin autojen Kunto-arvo on heikko ja toisten arvo on huono.

Huomautus: Jos haluat seurata muita toimenpiteitä, lisää joitakin väärennettyjä tietoja Autot-taulukkoon, jonka loit edellisissä vaiheissa.

Kun olet puhdistanut arvot yhdenmukaisemmiksi, voit luoda carcondition-nimisen taulukon, jossa on yksi Ehto-niminen kenttä, joka sisältää kaikki arvot, joita haluat käyttää autojen kunnosta:

  1. Valitse Luo-välilehden Makrot ja koodi -ryhmässä Kyselyn rakennenäkymä.

  2. Valitse Rakenne-välilehdenKyselytyyppi-ryhmästäTietomääritys.

    Rakenneruudukko on piilotettu, ja SQL-näkymän objektivälilehti tulee näkyviin.

  3. Kirjoita seuraava SQL-lauseke:

    CREATE TABLE CarCondition (ehtoTEKSTI(10))

  4. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

  5. Perusavaimen luominen taulukolle ALTER TABLE -lausekkeen avulla:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Jos haluat lisätä Arvot Autot-taulukon Ehto-kentästä uuteen CarCondition-taulukkoon, kirjoita seuraava SQL SQL SQL-näkymän objektivälilehteen:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Huomautus: Tämän vaiheen SQL-lauseke on liittämiskysely. Toisin kuin tietojen määrityskysely, liittämiskyselyn lopussa on puolipiste.

  7. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

Yhteyden luominen rajoitteen avulla

Jos haluat, että kaikki Autot-taulukon Ehto-kenttään lisätyt uudet arvot vastaavat CarCondition-taulukon Ehto-kentän arvoa, voit luoda suhteen CarConditionin ja Autot-kentän välille Ehto-nimiseen kenttään seuraavasti:

  1. Valitse Luo-välilehden Makrot ja koodi -ryhmässä Kyselyn rakennenäkymä.

  2. Valitse Rakenne-välilehdenKyselytyyppi-ryhmästäTietomääritys.

    Rakenneruudukko on piilotettu, ja SQL-näkymän objektivälilehti tulee näkyviin.

  3. Kirjoita seuraava SQL-lauseke:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Ehto)

  4. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

Monikenttärajoitukset

Monikenttäistä CONSTRAINT-lausetta voi käyttää vain kentän määrityslausekkeen ulkopuolella, ja siinä on seuraava syntaksi:

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

Harkitse toista esimerkkiä, jossa käytetään Autot-taulukkoa. Oletetaan, että haluat varmistaa, että kahdella Autot-taulukon tietueella ei ole samoja arvoja nimille, vuosille, ehdoille ja hinnoille. Voit luoda yksilöllisen rajoituksen, joka koskee näitä kenttiä, noudattamalla seuraavia ohjeita:

  1. Valitse Luo-välilehden Makrot ja koodi -ryhmässä Kyselyn rakennenäkymä.

  2. Valitse Rakenne-välilehdenKyselytyyppi-ryhmästäTietomääritys.

    Rakenneruudukko on piilotettu, ja SQL-näkymän objektivälilehti tulee näkyviin.

  3. Kirjoita seuraava SQL-lauseke:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (nimi, vuosi, ehto, hinta)

  4. Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.

Sivun alkuun

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.

Osallistumalla yhteisöihin voit kysyä kysymyksiä ja vastata niihin, antaa palautetta sekä kuulla lisää asiantuntijoilta, joilla on runsaasti tietoa.