[se non leggi bene l'articolo vai sul blog http://vincenzomiccolis.blogspot.it/ o sulla versione mobile http://bit.ly/AeHvgL]
Ogni tanto mi capita di parlare di argomenti un po' più tecnici. Oggi rispondo ad un quesito su Oracle.
Ciao Vincent, ho una domanda relativa alla dichiarazione dei tipi sulle colonne delle tabelle in Oracle. Ho visto che ogni tanto parli dell'argomento ed eccomi quà.
bloB
Ciao bloB e grazie per il tuo intervento.
L'argomento è molto interessante.
Cerco di spiegare in parole semplici. Quando si costruisce una tabella si deve dichiarare il tipo per ogni colonna. Ad esempio...
CREATE TABLE stipendi
(
importo number(18,3),
cognome varchar2(100),
nome varchar2(100)
)
Nel dichiarare una colonna di tipo varchar2() si deve obbligatoriamente indicare specificamente la dimensione massima della colonna.
cognome varchar2(100),
Per default la dimensione dovrebbe essere in Byte anche se dipende essenzialmente dalla configurazione del DB (vedi Oracle Data Types | SS64.com e init.ora SpFile Parameters | SS64.com [EN] sotto in Link utili). In questo scenario le due dichiarazioni seguenti dovrebbero coincidere
CREATE TABLE stipendi
(
importo number(18,3),
cognome varchar2(100),
nome varchar2(100)
)
CREATE TABLE stipendi
(
importo number(18,3),
cognome varchar2(100 byte),
nome varchar2(100 byte)
)
In un characterset possono essere compresi caratteri che per la loro rappresentazione richiedano più di un byte (ad es.UTF8). In questi casi può rivelarsi utile dichiarare il numero di caratteri che si vuole gestire a prescindere dai byte.
CREATE TABLE stipendi
(
importo number(18,3),
cognome varchar2(100 char),
nome varchar2(100 char)
)
Si badi che il limite massimo delle colonne varchar2 rimane di 4000 Byte, quindi non necessariamente 4000 caratteri. Nella versione 10g il dimensionamento con la clausola char determina un aumento a 3 byte per carattere.
L'argomento è molto interessante.
Cerco di spiegare in parole semplici. Quando si costruisce una tabella si deve dichiarare il tipo per ogni colonna. Ad esempio...
CREATE TABLE stipendi
(
importo number(18,3),
cognome varchar2(100),
nome varchar2(100)
)
Nel dichiarare una colonna di tipo varchar2() si deve obbligatoriamente indicare specificamente la dimensione massima della colonna.
cognome varchar2(100),
Per default la dimensione dovrebbe essere in Byte anche se dipende essenzialmente dalla configurazione del DB (vedi Oracle Data Types | SS64.com e init.ora SpFile Parameters | SS64.com [EN] sotto in Link utili). In questo scenario le due dichiarazioni seguenti dovrebbero coincidere
CREATE TABLE stipendi
(
importo number(18,3),
cognome varchar2(100),
nome varchar2(100)
)
CREATE TABLE stipendi
(
importo number(18,3),
cognome varchar2(100 byte),
nome varchar2(100 byte)
)
In un characterset possono essere compresi caratteri che per la loro rappresentazione richiedano più di un byte (ad es.UTF8). In questi casi può rivelarsi utile dichiarare il numero di caratteri che si vuole gestire a prescindere dai byte.
CREATE TABLE stipendi
(
importo number(18,3),
cognome varchar2(100 char),
nome varchar2(100 char)
)
Si badi che il limite massimo delle colonne varchar2 rimane di 4000 Byte, quindi non necessariamente 4000 caratteri. Nella versione 10g il dimensionamento con la clausola char determina un aumento a 3 byte per carattere.
Alla prossima!
Se il post ti piace condividilo su Facebook
Tieni d'occhio questo post e i suoi commenti: iscriviti nella parte destra del blog.
Per qualsiasi dubbio, critica, segnalazione scrivimi a vm_tempbox-perparlarediweb[at]yahoo.it
Visita la mia pagina su Facebook e diventa fan. Segui @vincentmiccolis su Twitter dove oltre ai link agli articoli del blog condivido i link delle mie letture in tempo reale.
Leggi anche:
Oracle - Estrarre l'anno da una data con EXTRACT()
Oracle - Cercare testo in colonne CLOB
Oracle - GRANT e REVOKE su tabelle
Oracle - Come rilevare la versione del db di destinazione
Oracle - è possibile rinominare un campo?
Oracle - Estrarre l'anno da una data con EXTRACT()
Oracle - Cercare testo in colonne CLOB
Oracle - GRANT e REVOKE su tabelle
Oracle - Come rilevare la versione del db di destinazione
Oracle - è possibile rinominare un campo?
Tipi di dati in Oracle | Guida Oracle | Database HTML.it
sql - Difference between BYTE and CHAR in column datatypes - Stack Overflow [EN]
Oracle Data Types | SS64.com [EN]
init.ora SpFile Parameters | SS64.com [EN]
SQL CREATE TABLE
html.it/
ss64.com/ [EN]
1keydata.com/
stackoverflow.com/ [EN]
Alla prossima!
Per leggere i post con più chiarezza ed un allineamento adattato agli schermi più piccoli di iPhone e smartphone usa la versione mobile. Vai a http://bit.ly/AeHvgL oppure clicca/scansiona il QR code quì sotto.
DISCLAIMER: Il contenuto dei miei articoli è reso disponibile così com'è. Per Parlare di Web non offre alcuna garanzia sui contenuti che sono forniti a solo scopo di intrattenimento e/o didattico con l'obiettivo di fare da spunto di riflessione per il lettore proponendo idee, concetti e recensioni di prodotti e servizi tecnologici. Il blog Per Parlare di Web non si assume alcuna responsabilità per ogni conseguenza dannosa che possa risultare al lettore dall'adozione di indicazioni descritte nei nostri articoli e nelle nostre guide hardware e software.