Le langage SQL permet de créer ses propres types de données par l'intermédiaire de l'instruction de CREATE TYPE voir de CREATE DOMAIN.
La création d'un type défini par l'utilisateur, produit un objet contenant un à plusieurs champs possédant chacun un type de données particulier.
CREATE TYPE Type_Utilisateur AS OBJECT ( Nom_Champ Type_Donnée, ... Nom_ChampN Type_DonnéeN)
Cet objet ainsi créé devient utilisable dans une base de données par l'intermédaire d'une définition de type habituelle. Dans ce cas, le champ typé pourrait accepter plusieurs zones de types différents.
Nom_Champ Type_Utilisateur
CREATE TYPE Type_Personnel AS OBJECT ( Nom VARCHAR(20), Prenom AS VARCHAR(20), Naissance AS DATE ) CREATE TYPE Type_Coordonnee AS OBJECT Adresse AS VARCHAR(50), Ville AS VARCHAR(20), CP AS DECIMAL(5, 0), Tph AS DECIMAL(10, 0) ) Définition des types de données CREATE TABLE Liste_Personnel ( IDPersonnel AS CHAR(10), Employe Type_Personnel Coordonnee Type_Coordonnee )
Un domaine doit être associé à un type de données puis être affecté à l'instar d'une définition de type à un champ de table.
CREATE DOMAIN Nom_Domaine AS Type_Donnée
CREATE DOMAIN DOM_IDPersonnel AS CHAR(10) CREATE DOMAIN DOM_Nom AS VARCHAR(20) CREATE DOMAIN DOM_Prenom AS VARCHAR(20) CREATE DOMAIN DOM_Naissance AS DATE CREATE DOMAIN DOM_Adresse AS VARCHAR(50) CREATE DOMAIN DOM_CP AS DECIMAL(5, 0) CREATE DOMAIN DOM_Ville AS VARCHAR(20) CREATE DOMAIN DOM_Tph AS DECIMAL(10, 0) Définition des types de données CREATE TABLE Liste_Personnel ( ID DOM_IDPersonnel, Nom DOM_Nom, Prenom DOM_Prenom, Date_Naissance DOM_Naissance, Adresse DOM_Adresse, Code_Postal DOM_CP, Ville DOM_Ville, Telephone DOM_Tph )
L'utilisation des types ou des domaines procure divers avantages, dont la facilité de modification globale des types de données dans l'ensemble de la base de données ou encore l'application de contraintes globales.