Dans notre série sur les nouveautés de la version 12c, en voici aujourd’hui qui concernent plus particulièrement le code SQL et j’ai trouvé intéressant de vous parler des deux commandes plus qu’essentielles lors de l’utilisation de la base de données, les commandes CREATE TABLE et ALTER TABLE et le typage des colonnes associées.
Les nouveautés dans le domaine déclaratif SQL sont :
– La taille maximale des trois types VARCHAR2, NVARCHAR2 et RAW est désormais de 32767 bytes, à condition de définir le paramètre d’initialisation de la base MAX_ STRING_SIZE comme suit :
- MAX_STRING_SIZE = STANDARD (valeur par défaut) : la taille limite dans la base de données Oracle 12c sera 4000 octets pour VARCHAR2 et NVARCHAR2 et 2000 octets pour RAW;
- MAX_STRING_SIZE = EXTENDED : la taille limite sera 32767 octets pour les types VARCHAR2, NVARCHAR2 et RAW.
– La possibilité de spécifier la valeur par défaut d’une colonne (DEFAULT Value) en utilisant les pseudos colonnes utilisées pour les séquenceurs CURRVAL et NEXTVAL (tant que la séquence existe et que vous avez les droits nécessaires pour accéder au séquenceur), exemple :
create sequence id_seq start with 1 increment by 1 nocache; CREATE TABLE test_seq ( test_seq_id integer NOT NULL default id_seq.nextval, …)
– On peut ajouter à la clause DEFAULT le terme ON NULL, ce qui indique qu’on attribue une valeur de colonne par défaut spécifiée quand une instruction INSERT tente d’assigner une valeur qui est « évaluée » à NULL, exemple :
CREATE TABLE myemp (employee_id number, last_name varchar2(25), department_id NUMBER DEFAULT ON NULL 50 NOT NULL); INSERT INTO myemp (employee_id, last_name) values (1,’Test’) ; SELECT employee_id, last_name, department_id FROM myemp WHERE employee_id = 1 ; EMPLOYEE_ID LAST_NAME DEPARTMENT_ID ----------- ------------------------- ------------- 1 Test 50
– Comme pour d’autres moteurs de base de données on peut enfin spécifier une colonne (IDENTITY) à laquelle est affectée une valeur qui s’incrémente ou se décrémente en utilisant un séquenceur généré dans la commande :
- La table T1 est créée avec une colonne IDENTITY, un séquenceur est automatiquement généré avec un incrémentant de 1 par défaut :
- CREATE TABLE T1 (id NUMBER GENERATED AS IDENTITY);
- La table T1 est créée avec une colonne IDENTITY, avec un séquenceur automatiquement généré débutant à la valeur 100 avec un incrément de 10 :
- CREATE TABLE t2 (id NUMBER GENERATED BY DEFAULT AS IDENTITY (START WITH 100 INCREMENT BY 10));
– On peut rendre une colonne VISIBLE (valeur par défaut) ou INVISIBLE. Une requête de type « SELECT * » ne permet pas de consulter les colonnes invisibles, il faut les spécifier dans la requête nominativement, de même la commande DESCRIBE sur la table ne ramène pas d’informations sur la colonne invisible à moins d’utiliser le paramètre COLINVISIBLE de SQL*Plus. L’information sur les colonnes invisibles est visible dans la vue USER_TAB_COLUMNS
– Dans Oracle 11g, certaines commandes de langage de définition de données (DDL) requièrent des verrous impliquant le blocage des opérations de manipulation de données (DML), avec la nouvelle version 12c, il y a l’ajout du terme « ONLINE » sur les commande DDL pour éviter tout blocage :
- Suppression d’index : DROP INDEX … ONLINE
- Marquer un index UNUSED : ALTER INDEX … UNUSABLE ONLINE
- Marquer une colonne UNUSED : ALTER TABLE …SET UNUSED … ONLINE
- Supprimer une contrainte : ALTER TABLE … DROP … ONLINE
- Move une partition d’une table : ALTER TABLE … MOVE PARTITION … ONLINE
Restez attentif nous continuerons de vous apporter régulièrement lors des prochaines semaines, les éléments que nous avons trouvé intéressants lors de nos tests sur cette nouvelle mouture d’Oracle.
1 réflexion sur “Nouveautés SQL Oracle 12c : CREATE TABLE, ALTER TABLE et plus”
Pour en savoir plus sur les nouvelles fonctionnalités de la Database 12c, vous pouvez suivre le cours dont le descriptif est disponible sur ce lien :
https://easyteam.fr/formation-oracle/Catalogue/oracle-database-12c-new-features-for-administrators-D77758
Les commentaires sont fermés.