|  
    
Le type de données pouvant être stockées dans une colonne d'une table Oracle est déterminé par le type de données. vous spécifiez lors de la création ou de la modification du schéma de la table. La déclaration du type de données dicte le type de valeurs autorisées dans cette colonne et Oracle applique cette contrainte. 
  
 Voici une ventilation des facteurs clés : 
  
 * Déclaration de type de données : Le déterminant principal est le `data_type` choisi lors de la création de la table (à l'aide de `CREATE TABLE`) ou de la modification (à l'aide de `ALTER TABLE`). Par exemple: 
  
 ```sql  
 Employés de CRÉER TABLE (  
 employe_id NUMBER(6), -- Nombre avec précision 6  
 first_name VARCHAR2(20), -- Chaîne de caractères de longueur variable jusqu'à 20 caractères  
 last_name VARCHAR2(25) CONSTRAINT nn_last_name NOT NULL, -- Chaîne de caractères de longueur variable, non nulle  
 envoyer un e-mail à VARCHAR2(25),  
 Hire_date DATE, -- Date et heure  
 salaire NUMBER(8,2), -- Nombre avec une précision de 8, 2 décimales  
 ...  
 );  
 ```  
  
 Dans cet exemple, `employee_id` ne peut contenir que des chiffres, `first_name` et `last_name` peuvent contenir des chaînes de caractères de longueur variable, `hire_date` peut contenir des dates et `salary` peut contenir des nombres avec des décimales.  
  
 * Types de données intégrés à Oracle : Oracle fournit un riche ensemble de types de données intégrés répondant à divers besoins de stockage de données. Parmi les plus courants, citons : 
  
 * Types de données de caractères :  
 * `VARCHAR2(size)` :Chaîne de caractères de longueur variable (type de caractères recommandé par Oracle). `size` spécifie la longueur maximale en octets ou en caractères (en fonction du jeu de caractères de la base de données). Utilisez-le pour les données textuelles générales.  
 * `NVARCHAR2(size)` :Chaîne de caractères nationaux de longueur variable. Utilisé pour stocker des données Unicode. `size` spécifie la longueur maximale en caractères.  
 * `CHAR(size)` :Chaîne de caractères de longueur fixe. Blocs avec des espaces à la « taille » spécifiée. Moins couramment utilisé que `VARCHAR2`.  
 * `NCHAR(size)` :Chaîne de caractères nationaux de longueur fixe.  
 * `CLOB` :grand objet de caractère. Pour stocker de grandes quantités de données texte (jusqu'à 4 Go). Stocke les données réelles séparément, à l'aide d'un localisateur dans le tableau.  
 * `NCLOB` :Grand Objet de Caractère National. CLOB pour les données Unicode.  
 * Types de données numériques :  
 * `NUMBER(precision, scale)` :type de données numériques à usage général. « précision » est le nombre total de chiffres et « échelle » est le nombre de chiffres à droite de la virgule décimale.  
 * `NUMBER` :par défaut, précision et échelle maximales.  
 * `BINARY_FLOAT` :nombre à virgule flottante 32 bits.  
 * `BINARY_DOUBLE` :nombre à virgule flottante de 64 bits.  
 * Types de données de date et d'heure :  
 * `DATE` :stocke les informations de date et d'heure.  
 * `TIMESTAMP` :stocke la date et l'heure en fractions de seconde. Des variantes existent pour la prise en charge du fuseau horaire (par exemple, « TIMESTAMP AVEC TIME ZONE », « TIMESTAMP AVEC LOCAL TIME ZONE »).  
 * « INTERVALLE ANNÉE À MOIS » :stocke une période de temps en années et en mois.  
 * « INTERVALLE JOUR À SECONDE » :stocke une période de temps en jours, heures, minutes et secondes.  
 * Types de données binaires :  
 * `BLOB` :grand objet binaire. Pour stocker de grandes quantités de données binaires (jusqu'à 4 Go), telles que des images, de l'audio ou de la vidéo. Stocke les données réelles séparément, à l'aide d'un localisateur dans le tableau.  
 * `BFILE` :fichier binaire. Stocke un pointeur vers un fichier binaire stocké *en dehors* de la base de données (sur le système de fichiers du système d'exploitation). La base de données stocke uniquement l'emplacement du fichier, pas le contenu du fichier lui-même.  
 * Types de données RowID :  
 * `ROWID` :Une pseudo-colonne contenant l'adresse d'une ligne dans un tableau. Il est unique dans la base de données et permet l'accès le plus rapide à une ligne particulière.  
 * `UROWID` :Un identifiant de ligne universel, qui peut représenter les ROWID de tables organisées indexées.  
 * Type de données XML :  
 * `XMLTYPE` :Pour stocker des données XML. Oracle fournit des méthodes pour interroger et manipuler le XML stocké dans ce type de données.  
 * Type de données JSON :  
 * `JSON` :pour stocker les données JSON. Disponible dans les versions ultérieures d'Oracle.  
  
 * Précision et échelle (pour NOMBRE) : Lors de l'utilisation du type de données « NUMBER », les paramètres « précision » et « échelle » sont cruciaux.  
 * `precision` :Spécifie le nombre total de chiffres (y compris avant et après la virgule décimale).  
 * `scale` :Spécifie le nombre de chiffres à droite du point décimal.  
  
 Par exemple, `NUMBER(7,2)` vous permet de stocker des nombres avec un maximum de 7 chiffres, 2 de ces chiffres étant après la virgule décimale. Les valeurs valides seraient 12345,67, 123,45 ou 0,01. Les valeurs non valides seraient 123456,7 ou 1,234567.  
  
 * Jeu de caractères de base de données : Le jeu de caractères de la base de données influence le stockage des types de données de caractères (en particulier `VARCHAR2` et `CHAR`). Il détermine la longueur maximale d'une colonne `VARCHAR2` en termes de *octets* ou de *caractères*. Dans les anciennes versions, `VARCHAR2(size)` était interprété comme des octets. Les versions plus récentes d'Oracle, avec le paramètre d'initialisation `MAX_STRING_SIZE=EXTENDED`, permettent d'interpréter `VARCHAR2(size)` comme des caractères. L'utilisation de jeux de caractères Unicode (comme AL32UTF8) vous permet de stocker des caractères de plusieurs langues.  
  
 * Contraintes : Bien que les contraintes ne *définissent pas* le type de données, elles peuvent restreindre davantage les valeurs autorisées dans une colonne. Par exemple: 
  
 * `NOT NULL` :garantit qu'une colonne ne peut pas contenir de valeurs NULL.  
 * `UNIQUE` :garantit que toutes les valeurs d'une colonne (ou d'un ensemble de colonnes) sont uniques.  
 * `PRIMARY KEY` :identifie une colonne (ou un ensemble de colonnes) comme identifiant unique pour chaque ligne du tableau.  
 * `FOREIGN KEY` :établit une relation entre deux tables, garantissant que les valeurs de la ou des colonnes de clé étrangère existent dans la ou les colonnes de clé primaire référencées.  
 * `CHECK` :Vous permet de définir une règle personnalisée à laquelle les valeurs d'une colonne doivent satisfaire. Par exemple :« VÉRIFIER (salaire> 0) » pour vous assurer que les salaires sont toujours positifs.  
  
 * Conversion implicite du type de données : Oracle peut parfois convertir implicitement des types de données lors de comparaisons ou d'affectations. Par exemple, Oracle peut implicitement convertir une chaîne de caractères en nombre si vous la comparez à une colonne numérique. Cependant, il est généralement recommandé d'utiliser des fonctions de conversion de type de données explicites (comme `TO_NUMBER`, `TO_CHAR`, `TO_DATE`) pour éviter un comportement inattendu et garantir l'intégrité des données.  
  
 En résumé, le type de données déclaré pour une colonne constitue le mécanisme de contrôle fondamental qui régit le type de données que vous pouvez stocker dans cette colonne dans une base de données Oracle. Comprendre les types de données Oracle et leurs propriétés est essentiel pour concevoir des schémas de bases de données efficaces et fiables.
 
 |