Un limbaj de definire a datelor este un limbaj de programare sau de scriptare pentru computer care definește o structură de date. Prin definiție, aceste limbi trebuie să facă trei lucruri: să creeze, să șterge și să modifice structuri de date. Ceea ce fac ei în afara acestor trei domenii este lipsit de importanță, atâta timp cât îndeplinesc acele trei sarcini. Orice limbaj poate fi un limbaj de definire a datelor, dar termenul se aplică cel mai frecvent la schemele limbajului de interogare structurat (SQL) și limbajului de marcare extensibil (XML).
Când a intrat în uz termenul de limbaj de definire a datelor, acesta s-a aplicat unui model realizat de Conferința pentru limbaje ale sistemelor de date (Codasyl). Procesul a definit două domenii majore de dezvoltare a structurii de date – limbajul de definire a datelor a făcut structura reală a bazei de date, iar limbajul de manipulare a datelor a definit metodele de plasare a datelor în structură. De atunci, acești doi termeni s-au extins și au devenit termeni generici pentru procesele pe care le acoperă.
Termenii generici se aplică acum oricăror limbi care își îndeplinesc funcțiile inițiale. Atât SQL, cât și XML îndeplinesc toate sarcinile necesare și oferă multe caracteristici care lipseau din modelul original, deoarece nu fuseseră încă inventate. Alte limbi oferă și aceste capacități; sunt doar folosite mult mai rar.
Pentru a fi un limbaj de definire a datelor, limbajul trebuie să ofere trei funcții. Prima funcție principală este construirea structurilor de date; practic, acestea sunt tabele concepute pentru a păstra anumite grupuri de informații. Ele apar adesea ca o foaie de calcul, ținând pagini de informații cu referințe încrucișate. De exemplu, foaia poate avea o listă cu clienții unei companii pe o parte și o listă cu produsele disponibile în partea de sus. Fișa ar avea o listă cu momentele în care acești clienți au cumpărat produse individuale, pe partea de masă.
Următoarea funcție principală este ștergerea structurilor de date. Acest lucru nu este același lucru cu ștergerea unei întregi baze de date sau a unui fișier; este un proces mult mai selectiv. Poate elimina o anumită pagină de informații sau o porțiune întreagă a unei matrice multidimensionale. În ambele cazuri, datele trebuie eliminate fără a afecta alte structuri de date, chiar dacă toate sunt păstrate în același fișier.
Ultima funcție principală este modificarea unei structuri de date. Aceasta este o categorie largă care acoperă o mulțime de situații. Un tabel poate avea coloane adăugate sau redenumite, sau o întreagă bază de date poate avea nevoie să fie împărțită în două baze de date diferite. În orice situație, acestea trebuie modificate astfel încât nicio informație să nu fie pierdută, distrusă sau creată în timpul procesului. Acest lucru previne intrarea informațiilor anormale în sistemul de date.