Guida Tutorial al Database MySql i tipi di dato
Ne abbiamo già parlato in parte del database ed in particolare di quello Mysql diciamo che adesso approfondiremo l’argomento in maniera piu’ esaustiva. Cominciamo ovviamente da una definizione di cosa significhi in informatica database In informatica ossia banca dati o base di dati, indica un archivio dati, o un insieme di archivi, dove sono contenute informazioni secondo un ordine relazionale e/o gerarchico e/o reticolare a oggetti per consentirgli la gestione la gestione/organizzazione efficiente dei dati stessi grazie a particolari applicazioni software dedicate (DBMS), basate su un’architettura di tipo client-server, e ai cosiddetti query language per l’interfacciamento con le richieste dell’utente (query di ricerca o interrogazione, inserimento, cancellazione ed aggiornamento). Ad oggi esistono molte varianti di database fra i quali citiamo Oracle, DB2, MS Sql, Ibase, FBird, PGSQL, Mysql, Sybase ASA, SQLite, MS Access, Informix e altri ancora. Una svariata galassia con caratteristiche simili e in continua evoluzione. Noi ci occuperemo adesso del Database MYSQL che è forse il piu’ indicato per PHP. Spesso si usa anche dire che PHP da solo è poco , con MYSQL è il migliore linguaggio che si possa utilizzare. Forse è un ‘esagerazione, ma che comunque rende abbastanza bene il concetto di quello che andiamo ora a spiegarvi.
MYSQL
Quindi senza fare ulteriori preamboli si tratta di un codice gratuito , un software per la precsisione, sviluppato dalla casa svedese da cui prende il nome. E’ quindi di proprietà esclusiva della MySQL AB, i quali profitti vengono reinvestiti. Non ci addentriamo ulteriormente ma credo che attualmente la società sia entrata a fare parte del mondo SUN Microsystem, che probabilmente avrete già conosciuto quale sviluppatore di Java, un altro loro prodotto. Ritornando a noi MYSQL è composto da un client con interfaccia a riga di comando e un server, entrambi disponibili sia per sistemi Unix o Unix-like come GNU/Linux che per Windows, anche se prevale un suo utilizzo in ambito Unix. Dispone di molti tool applicativi fra i quali il piu’ comune è il phpMyAdmin che in genere viene distribuito ad oggi nei pacchetti LAMP.
Cominciamo quindi a parlarvi del campo piu’ importante del MYSQL ossia il campo chiave
Significa stabilire le regole secondo la quale il contenuto di quel campo non puo’ essere presente nel campo corrispondente di un altro record della stessa tabella.
- Le altre istruzioni del database che abbiamo già rivisto e quindi non ci soffermiamo piu’ di tanto sopra sono
- show databases , mostra il database
- drop database cancella il database
- AUTO_INCREMENT ossia attivando questo opsione si farà intendere al software che ogni volta che viene aggiunto un nuovo regord della tabella Mysql incrementerà automaticamente di 1 il valore dell’ultimo codice presente nella tabella senza che l’’utente debba preoccuparsene
- PRIMARY KEY che non ci possono essere vari nulli, ossia not null assegnato a tutti i campi
- Alter table per modificare il valore della tabella
- Drop table per cancellare una tabella
Tipi di Dato
Tipo di dato Mysql | Occupazione in byte | Valore minimo | Valore massimo | |
Bit [(M)] =TINYINY(1) | 1 | -128 | 127 | |
MOOL[(M)] O Boolen[(M)] | 1 | 0 equivale a falso | ¨ 0 equivale a vero | |
TINYINT[(M)] | 1 | -128 | 128 | |
SMALLINT[(M)] | 2 | -32768 | 32767 | |
MEDIUM INT[(M)] | 3 | -8388608 | 8388607 | |
INT[M] o INTEGER [(M)] | 4 | -2147483648 | 2147483647 | |
BIGINT[(M)] | 8 | …. | ….. |
Se per esempio attribuiamo all’attributo UNSIGED ad un campo TINYINY i 256 valori rappresentabili andrebbero
0—<256
Nei campi numerici se si effettua una sottrazione fra due campi interi di cui una è UNSIGNED e l’altro no, il risultato sarà UNSIGNED7
NUMERI DECIMALI
La loro caratteristica è di essere meno precisi di quelli interi a causa degli arrotondamenti facciamone una breve rassegna
Tipo di dato Mysql | Occupazione in byte Valore Minimo | Valore Minimo | Valore Massimo |
FLOAT [M,D] | 4 BYTE | Minimo scluso zero +-1,17549351 e -38 | +- 3,40282366E38 |
DOUBLE M,D O DOUBLE PRECISION M, D | 8 BYTE | MINIMO ESCLUSO ZERO +- 2,225 10 -38 | +- 1,79,769 E 308 |
DECIMAL M,D | M+2byte | Dipendono dai valori di M e D |
Si lascia all’utente la possibilità di definire la lunghezza
I valori minimo e massimo rappresentabili in un campo di tipo decimal vengono calcolati in questo modo
M+2 è il totale complessivo delle cifre che fanno parte del numero, compreso segno, punto decismale e i decimali
D è il totale delle sole cifre decimali che devono gestire nel campo AD ESMPIO
DECIMAL (8,3)
Numero minimo = -9999999.99 che sono 8 + 2 cifre compreso uno di segno ossia 10
Numero massimo =999999.999 che sono 10 cifre in quanto il segno non è stato messo.
OPZIONI
Le opzioni applicabili ai tipi di dato numerico sono
- UNSIGNED evita che il cmpo assuma valori negativi
- ZEROFIL nel caso di dati interi fornisce l’allineamento con gli interi ossia 10, 100, 1000 e vale anche per i decimali
- AUTO_INCREMENT utilizzato per incrementare automaticamente di una unità il valore numerico del campo di cui è attributo, ogni volta che viene creato un nuovo record.
Spesso la chiave primaria o PRIMARY KEY viene impostata appunto come campo di tipo numerico auto:increment. Il suo effetto garantische che non possono esserci due campi con lo stesso valore, proprio perché per ogni nuovo record il contenuto del campo viene aumentato di 1.
TIPO DI TESTO E MULTIMEDIALI
Stringa gruppo di caratteri di tipo stringa ossia sono un insieme di caratteri char vediamo un attimo nel particolare
Un carattere è tipicamente una lettera dell’alfabeto oppure si tratta di una delle dieci cifre da 0-9 m anche un segno di interpunzione o uno dei caratteri definiti speciali come la tabulazione e/0 invio
- Fino a 255 caratteri MYSQL usa Char e Varchar dove var char arriva fino a 65535 mentre il char la metà
- Per le grandi dimensioni invece si utilizza Text o Blog
Dove la differenza fra Blog o Text consiste nel come vengono gestiti in modalità binaria i primi a differenze dei secondi
Vediamo adesso dei gruppi di stringhe predefinite
Questi campi possono contenere solo stringhe scelte tra un insieme di valori predefiniti. Prendono i nomi di Enum e Set vediamo piu’ in dettaglio
- Nome-vampo ENUM (“valore1” “valore2…..”Valore N] [NULL], se viene assegnato l’attributo di tipo null significa che il campo non contiene stati
- Nome campo SET (“valore1”, “valore2” , “Valore N”] [NULL]
La differenza consiste nel fatto che ENUM puo’ essere presente solamente uno dei valori presenti solamente in uno dei valori apparteenti all’insimee definito dall’utente, mentre nel caso di SET ci potrebbero essere anche piu’ valori, ma sempre naturalmente in quelli rappresentativi dell’insieme considerato.
DATA ora, TIMESTAMP
Per la definizione di campi per la gestione del tempo MYSQL mette a disposzione degli utenti piu’ di un formato che vengono classificati secondo la tipologia Che sono le potete vedere in tabella che vi abbiamo mostrato
Tipo di Campo | Occupazione byte | Visualizzazione | |
TIMESTAMP | 4 | AAA MMGGHHMMSS | |
DATETIME | 8 | AAA A-MM-GG-HH:MM:SS | |
TIMESTAMP inventato ai tempi di LUNUX fa riferimento a partire dal 1970 -01-01 dove a tale giorno si fa corrispondere l’ora 00:00:00. Facciamo qualche precisazione per rendere piu’ chiaro il tutto
DATETIME
In un campo DATE TIME possono essere memorizzati valori che appartengono a un ambito temporale che va
Dal minimo di 1000-01-01 00:00:00
Al massimo di 9999-12-31 23:59:58
Vediamo adesso qualche differenza nel valore
Valore della data immesso nel campo
1999-01-01. Date time la veredrebbe come 1999-01-01-01 00:00:00 mentre TIMESTAMP la vede come 1999010100000
Ed è per questo che Datetime viene utilizzato per la visualizzazione mentre Timestamp per lavorarci a livello numerico