Datu definēšanas valoda

SQL kontekstā, datu definēšanas jeb datu aprakstīšanas valoda (DDL) ir sintakse datu bāzes objektu, piemēram, tabulu, indeksu un lietotāju izveidei un modificēšanai. DDL vaicājumi ir līdzīgi datorprogrammēšanas valodai, kas definē datu struktūru, īpaši datubāzu shēmu. Visbiežāk lietotie DDL vaicājumu piemēri ir CREATE, ALTER un DROP.

Vēsture labot šo sadaļu

Datu definīcijas valodas jēdziens un tās nosaukums pirmo reizi tika ieviests saistībā ar Codasyl datu bāzes modeli, kur datu bāzes shēma tika uzrakstīta valodas sintaksē, kas aprakstīja lietotāja datu modeļa ierakstus, laukus un kopas.[1] Vēlāk to izmantoja, lai atsauktos uz strukturētās vaicājumu valodas (SQL) apakškopu, lai deklarētu tabulas, kolonnas, datu tipus un ierobežojumus. SQL-92 ieviesa shēmu manipulēšanas valodu un shēmu informācijas tabulas, lai vaicātu shēmas.[2] Šīs informācijas tabulas SQL:2003 tika norādītas kā SQL/Schemata. Termins DDL tiek lietots arī vispārīgā nozīmē, lai apzīmētu jebkuru formālu valodu, kas apraksta datus vai informācijas struktūras.

Strukturēto vaicājumu valoda (SQL) labot šo sadaļu

Vairākas datu aprakstīšanas valodas lieto deklaratīvo sintaksi, lai definētu kolonnas un datu tipus, bet strukturētā vaicājumu valoda (SQL) izmanto imperatīvo darbības vārdu kolekciju, kuras mērķis ir modificēt datu bāzes shēmu — pievienojot, mainot vai dzēšot tabulu vai citu elementu definīcijas. Šos vaicājumus var brīvi apvienot ar citiem SQL vaicājumiem, nepadarot DDL par atsevišķu valodu.

CREATE vaicājums labot šo sadaļu

Create komanda tiek izmantota, lai izveidotu jaunu datu bāzi, tabulu, indeksu vai iekļautās procedūras.

CREATE vaicājums SQL izveido komponentu relāciju datubāžu pārvaldības sistēmā (RDBMS). SQL 1992 specifikācijā komponentu veidi, ko var izveidot ir shēmas, tabulas, skati, domēni, rakstzīmju kopas, komplektēšana, tulkojumi un apgalvojumi.[2] Daudzas implementācijas paplašina sintaksi, lai varētu izveidot papildus elementus, piemēram, indeksus un lietotāju profilus. Dažas sistēmas, piemēram, PostgreSQL un SQL Server, atļauj CREATE un citas DDL komandas datu bāzes transakcijā, un līdz ar to tās var tikt atsauktas.[3] [4]

CREATE TABLE vaicājums labot šo sadaļu

Bieži lietota CREATE komanda ir komanda CREATE TABLE. Tipisks lietojums:

CREATE TABLE [tabulas nosaukums] ( [kolonnu definīcijas] ) [tabulas parametri]

Kolonnu definīcijas ir šādas:

  • Ar komatu atdalīts saraksts, kas sastāv no jebkura no šiem elementiem
  • Kolonnas definīcija: [kolonnas nosaukums] [datu tips] {NULL | NOT NULL} {kolonnas opcijas}
  • Primārās atslēgas definīcija: PRIMARY KEY ( [ar komatu atdalītu kolonnu saraksts] )
  • Ierobežojumi: {CONSTRAINT} [ierobežojuma definīcija]
  • RDBMS specifiska funkcionalitāte

Vaicājuma piemērs, lai izveidotu tabulu ar nosaukumu darbinieki, ar dažām kolonnām:

CREATE TABLE darbinieki (
    id               INTEGER       PRIMARY KEY,
    pirmais_vards    VARCHAR(50)   not null,
    uzvards          VARCHAR(75)   not null,
    otrais_vards     VARCHAR(50)   not null,
    dzimsanasgads    DATE          not null
);

Dažas CREATE TABLE DDL formas var ietvert DML (datu manipulēšanas valodu) - līdzīgas konstrukcijas kā SQL sintaksē CREATE TABLE AS SELECT (CTaS).[5]

DROP vaicājums labot šo sadaļu

DROP vaicājums neatgriezeniski izdzēš esošu datu bāzi, tabulu, indeksu vai skatu.

DROP vaicājums SQL noņem komponentu no relāciju datubāzu pārvaldības sistēmas (RDBMS). Objektu veidi, kurus var neatgriezeniski izdzēst, ir atkarīgi no izmantotās RDBMS, bet lielākā daļa atbalsta tabulu, lietotāju un datubāzu neatgriezenisku izdzēšanu. Dažas sistēmas (piemēram, PostgreSQL) ļauj DROP un citām DDL komandām notikt transakcijas ietvaros un tādējādi tās var tikt atsauktas. Tipisks lietojums:

DROP objektatips objektanosaukums.

Piemēram, komanda DROP tabulu ar nosaukumu darbinieki:

DROP TABLE darbinieki;

DROP vaicājums atšķiras no DELETE un TRUNCATE vaicājumiem, jo DELETE un TRUNCATE nenoņem pašu tabulu. Piemēram, vaicājums DELETE var izdzēst dažus (vai visus) datus no tabulas, atstājot pašu tabulu datu bāzē, savukārt DROP vaicājums no datu bāzes izdzēš visu tabulu.

ALTER vaicājums labot šo sadaļu

Vaicājums ALTER maina esošu datu bāzes objektu.

ALTER vaicājums SQL maina objekta īpašības relāciju datubāžu pārvaldības sistēmā (RDBMS). Objektu veidi, kurus var mainīt, ir atkarīgi no tā, kura RDBMS tiek izmantota. Tipisks lietojums:

ALTER objektatips objektanosaukums parametri.

Piemēram, komanda pievienot (pēc tam noņemt) kolonnu ar nosaukumu burbuļi esošai tabulai ar nosaukumu izlietne :

ALTER TABLE izlietne ADD burbuļi INTEGER;
ALTER TABLE izlietne DROP COLUMN burbuļi;

TRUNCATE vaicājums labot šo sadaļu

Vaicājums TRUNCATE tiek izmantots, lai dzēstu visus datus no tabulas. Tas ir daudz ātrāk, nekā lietot vaicājumu DELETE .

TRUNCATE TABLE table_name;

Referenciālās integritātes vaicājumi labot šo sadaļu

Cits DDL teikuma veids SQL tiek izmantots, lai definētu referenciālās integritātes attiecības, kas parasti tiek ieviestas kā primārās atslēgas un ārējās atslēgas tagi, dažās tabulu kolonnās. Šos divus vaicājumus var iekļaut teikumā CREATE TABLE vai ALTER TABLE;

Citas valodas labot šo sadaļu

  • XML shēma ir XML DDL piemērs.
  • JSON shēma ir JSON DDL piemērs.
  • DFDL shēma ir DDL piemērs, kas var aprakstīt daudzus teksta un bināros formātus.

Skatīt arī labot šo sadaļu

Atsauces labot šo sadaļu

  1. T. William Olle. The Codasyl Approach to Data Base Management. Wiley, 1978. ISBN 0-471-99579-7.
  2. 2,0 2,1 «Information Technology - Database Language SQL». SQL92. Carnegie Mellon. Skatīts: 2018. gada 12. novembris.
  3. Douglas Laudenschlager, Gene Milener, Craig Guyer, Rick Byham. «Transactions (Transact-SQL)». Microsoft Docs. Microsoft. Skatīts: 2018. gada 12. novembris.
  4. «PostgreSQL Transactions». PostgreSQL 8.3 Documentation. PostgreSQL. Skatīts: 2018. gada 12. novembris.
  5. Grant Allen. The Definitive Guide to SQLite. Apresspod (2 izd.). Apress, 2010. 90–91. lpp. ISBN 9781430232254. The create table statement has a special syntax for creating tables from select statements. [...]: [...] create table foods2 as select * from foods; [...] Many other databases refer to this approach as CTaS, which stands for Create Table as Select, and that phrase is not uncommon among SQLite users.

Ārējās saites labot šo sadaļu