Duomenų apibrėžimo kalba yra kompiuterio programavimo arba scenarijų kalba, apibrėžianti duomenų struktūrą. Pagal apibrėžimą šios kalbos turi atlikti tris dalykus – kurti, ištrinti ir keisti duomenų struktūras. Tai, ką jie daro už šių trijų sričių ribų, yra nesvarbu, kol jie atlieka šias tris užduotis. Bet kuri kalba gali būti duomenų apibrėžimo kalba, tačiau šis terminas dažniausiai taikomas struktūrinės užklausos kalbos (SQL) ir išplečiamosios žymėjimo kalbos (XML) schemoms.
Pradėjus vartoti terminą duomenų apibrėžimo kalba, jis buvo taikomas Duomenų sistemos kalbų konferencijos (Codasyl) sukurtam modeliui. Procesas apibrėžė dvi pagrindines duomenų struktūros kūrimo sritis – duomenų apibrėžimo kalba sukūrė tikrąją duomenų bazės struktūrą, o duomenų apdorojimo kalba apibrėžė duomenų pateikimo į struktūrą metodus. Nuo tada šie du terminai išsiplėtė ir tapo bendraisiais procesų, kuriuos jie apima, terminais.
Bendrieji terminai dabar taikomi visoms kalboms, kurios atlieka savo pradines funkcijas. Tiek SQL, tiek XML atlieka visas reikalingas užduotis ir suteikia daug funkcijų, kurių nebuvo pradiniame modelyje, nes jos dar nebuvo išrastos. Kitos kalbos taip pat suteikia šias galimybes; jie tiesiog naudojami daug rečiau.
Kad kalba būtų duomenų apibrėžimo kalba, ji turi turėti tris funkcijas. Pirmoji pagrindinė funkcija yra duomenų struktūrų kūrimas; iš esmės tai yra lentelės, skirtos tam tikroms informacijos grupėms. Jie dažnai atrodo kaip skaičiuoklė, kurioje yra kryžminės nuorodos informacijos puslapiai. Pavyzdžiui, vienoje lapo pusėje gali būti įmonės klientų sąrašas, o viršuje – galimų produktų sąrašas. Lape ant stalo būtų nurodytas sąrašas, kada tie klientai įsigijo atskirus produktus.
Kita pagrindinė funkcija yra duomenų struktūrų ištrynimas. Tai nėra tas pats, kas visos duomenų bazės ar failo ištrynimas; tai daug selektyvesnis procesas. Jis gali pašalinti konkretų informacijos puslapį arba visą daugiamačio masyvo dalį. Bet kuriuo atveju duomenys turi būti pašalinti nepažeidžiant kitų duomenų struktūrų, net jei jie visi yra tame pačiame faile.
Paskutinė pagrindinė funkcija yra duomenų struktūros keitimas. Tai plati kategorija, apimanti daugybę situacijų. Lentelėje gali būti pridėti arba pervadinti stulpeliai, arba visą duomenų bazę gali tekti padalyti į dvi skirtingas duomenų bazes. Bet kurioje situacijoje jie turi būti pakeisti taip, kad proceso metu jokia informacija nebūtų prarasta, sunaikinta ar sukurta. Tai neleidžia anomaliai informacijai patekti į duomenų sistemą.