MySql
Sintesi della sintassi
Indice
DDL (Data Description Language)........................................................................................................... 2 ALTER DATABASE........................................................................................................................... 2 ALTER TABLE................................................................................................................................... 2 CREATE DATABASE ...................................................................................................................... 2 CREATE INDEX ............................................................................................................................. 3 CREATE TABLE ............................................................................................................................. 3 DROP DATABASE............................................................................................................................. 4 DROP INDEX ..................................................................................................................................... 5 DROP TABLE.................................................................................................................................. 5 RENAME TABLE ............................................................................................................................. 5 DML (Data Manipulation Language) ....................................................................................................... 6 DELETE .............................................................................................................................................. 6 DO ....................................................................................................................................................... 6 HANDLER .......................................................................................................................................... 6 INSERT ............................................................................................................................................... 7 LOAD DATA INFILE ......................................................................................................................... 7 REPLACE ........................................................................................................................................... 7 TRUNCATE ........................................................................................................................................ 8 UPDATE ............................................................................................................................................. 8 DQL (Data Query Language) ................................................................................................................... 9 SELECT .............................................................................................................................................. 9 JOIN .................................................................................................................................................... 9 UNION .............................................................................................................................................. 10 Funzioni di aggregazione................................................................................................................ 10 Comandi di Amministrazione Database.................................................................................................. 12 CREATE USER................................................................................................................................. 12 DROP USER ..................................................................................................................................... 12 GRANT ............................................................................................................................................. 12 RENAME USER ............................................................................................................................... 12 REVOKE ........................................................................................................................................... 13 SET PASSWORD.............................................................................................................................. 13 MySQL Transactional e Comandi di Locking ........................................................................................ 14 START TRANSACTION, COMMIT, and ROLLBACK ................................................................... 14 LOCK TABLES and UNLOCK TABLES.......................................................................................... 14 SET TRANSACTION........................................................................................................................ 14 Tipi di dato in MySql...15
-1-
ALTER DATABASE
ALTER {DATABASE | SCHEMA} [db_name] alter_specification [, alter_specification] ... alter_specification: [DEFAULT] CHARACTER SET charset_name
ALTER TABLE
ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ... alter_specification: ADD ADD ADD ADD ADD [COLUMN] column_definition [FIRST | AFTER col_name ] [COLUMN] (column_definition,...) {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [CONSTRAINT [symbol]]PRIMARY KEY [index_type] (index_col_name,...) [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...) ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...)[reference_definition] ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name] MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] DROP [COLUMN] col_name DROP PRIMARY KEY DROP {INDEX|KEY} index_name DROP FOREIGN KEY fk_symbol DISABLE KEYS ENABLE KEYS RENAME [TO] new_tbl_name ORDER BY col_name CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] DISCARD TABLESPACE IMPORT TABLESPACE table_option ...
| | | | | | | | | | | | | | | | | | | | | |
CREATE DATABASE
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name
-2-
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH}
CREATE TABLE
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option ...]
Oppure:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_option ...] select_statement
Oppure:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) } create_definition: column_definition | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) | {INDEX|KEY} [index_name] [index_type] (index_col_name,...) | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] | CHECK (expr) column_definition: col_name data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] [reference_definition] index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH} reference_definition: REFERENCES tbl_name [(index_col_name,...)] [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option]
-3-
reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION select_statement: [IGNORE | REPLACE] [AS] SELECT ... (una forma del comando Select) data_type: BIT[(length)] | TINYINT[(length)] [UNSIGNED] [ZEROFILL] | SMALLINT[(length)] [UNSIGNED] [ZEROFILL] | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] | INT[(length)] [UNSIGNED] [ZEROFILL] | INTEGER[(length)] [UNSIGNED] [ZEROFILL] | BIGINT[(length)] [UNSIGNED] [ZEROFILL] | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] | DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL] | NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL] | DATE | TIME | TIMESTAMP | DATETIME | YEAR | CHAR(length)[CHARACTER SET charset_name] [COLLATE collation_name] | VARCHAR(length)[CHARACTER SET charset_name] [COLLATE collation_name] | BINARY(length) | VARBINARY(length) | TINYBLOB | BLOB | MEDIUMBLOB | LONGBLOB | TINYTEXT [BINARY][CHARACTER SET charset_name] [COLLATE collation_name] | TEXT [BINARY][CHARACTER SET charset_name] [COLLATE collation_name] | MEDIUMTEXT [BINARY][CHARACTER SET charset_name] [COLLATE collation_name] | LONGTEXT [BINARY][CHARACTER SET charset_name] [COLLATE collation_name] | ENUM(value1,value2,value3,...)[CHARACTER SET charset_name][COLLATE collation_name] | SET(value1,value2,value3,...)[CHARACTER SET charset_name][COLLATE collation_name] | spatial_type
table_option: {ENGINE|TYPE} [=] engine_name | AUTO_INCREMENT [=] value | AVG_ROW_LENGTH [=] value | [DEFAULT] CHARACTER SET charset_name | CHECKSUM [=] {0 | 1} | COLLATE collation_name | COMMENT [=] 'string' | CONNECTION [=] 'connect_string' | DATA DIRECTORY [=] 'absolute path to directory' | DELAY_KEY_WRITE [=] {0 | 1} | INDEX DIRECTORY [=] 'absolute path to directory' | INSERT_METHOD [=] { NO | FIRST | LAST } | MAX_ROWS [=] value | MIN_ROWS [=] value | PACK_KEYS [=] {0 | 1 | DEFAULT} | PASSWORD [=] 'string' | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} | UNION [=] (tbl_name[,tbl_name]...)
DROP DATABASE
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name A cura della Prof.ssa Capone Maria
-4-
DROP INDEX
DROP INDEX index_name ON tbl_name
DROP TABLE
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]
RENAME TABLE
RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ...
-5-
Sintassi per tabella multipla: Con questa sintassi , DELETE cancella da ogni tbl_name le righe che soddisfano le condizioni; in questo caso non si possono usare ORDER BY e LIMIT.
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name[.*] [, tbl_name[.*]] ... FROM table_references [WHERE where_condition]
Oppure:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name[.*] [, tbl_name[.*]] ... USING table_references [WHERE where_condition]
DO
DO esegue le
espressioni ma non restituisce alcun risultato; utile principalmente con funzioni che hanno effetti collaterali, come RELEASE_LOCK().
HANDLER Il comando HANDLER fornisce un accesso diretto allinterfaccia dellengine della memorizzazione della tabella; disponibile per MyISAM e InnoDB.
HANDLER tbl_name OPEN [ AS alias ] HANDLER tbl_name READ index_name { = | >= | <= | < } (value1,value2,...) [ WHERE where_condition ] [LIMIT ... ] HANDLER tbl_name READ index_name {FIRST|NEXT|PREV|LAST}[WHERE where_condition ] [LIMIT ... ] HANDLER tbl_name READ { FIRST | NEXT }[ WHERE where_condition ] [LIMIT ... ] HANDLER tbl_name CLOSE
-6-
INSERT INSERT inserisce nuove righe in una tabella esistente. La forma INSERT ... VALUES e INSERT ... SET inserisce righe su una specificazione esplicita dei valori. La forma INSERT ... SELECT inserisce righe selezionate da unaltra tabella o tabelle.
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE][INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Oppure:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE][INTO] tbl_name SET col_name={expr | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Oppure:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE][INTO] tbl_name [(col_name,...)] SELECT ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
LOAD DATA INFILE Il comando LOAD DATA INFILE inserisce righe da un file di testo in una tabella in modo molto veloce. Il nome del file deve essere una costante di tipo stringa.
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number LINES] [(col_name_or_user_var,...)] [SET col_name = expr,...)]
REPLACE REPLACE lavora esattamente come INSERT, escluso il caso in cui una vecchia riga nella tabella ha lo stesso valore di una nuova riga per una PRIMARY KEY o un indice UNIQUE; in questo caso la vecchia riga cancellata prima che sia inserita la nuova riga.
REPLACE [LOW_PRIORITY | DELAYED][INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),...
Oppure:
A cura della Prof.ssa Capone Maria
-7-
Oppure:
REPLACE [LOW_PRIORITY | DELAYED][INTO] tbl_name [(col_name,...)] SELECT ... REPLACE
TRUNCATE
TRUNCATE TABLE comando DELETE
svuota completamente una tabella. Dal punto di vista logico equivalente ad un che cancella tutte le righe, ma vi sono in alcune circostanze alcune differenze pratiche.
UPDATE Sintassi per tabella singola: In questo caso il comando UPDATE aggiorna le colonne di righe esistenti in tbl_name con nuove valori. La clausola SET indica quali colonne modificare e i valori che devono assumere. La clausola WHERE, se c, specifica le condizioni che identificano quali righe aggiornare; se non c sono aggiornate tutte. La clausola LIMIT pone un limite al numero di righe che si possono aggiornare.
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
Sintassi per tabella multipla: In questo caso UPDATE aggiorna le righe in ogni tabella indicata in table_references che soddisfa le condizioni. ORDER BY e LIMIT non possono essere usati.
UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_condition]
-8-
SELECT
SELECT
usato per selezionare righe da una o pi tabelle e pu includere comandi UNION e sottoquery
SELECT [ALL | DISTINCT | DISTINCTROW ][HIGH_PRIORITY][STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr, ... [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position}[ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position}[ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name' | INTO @var_name [, @var_name]] [FOR UPDATE | LOCK IN SHARE MODE]]
JOIN MySQL supporta la seguente sintassi di JOIN per la parte table_references del comando SELECT e per i comandi a tabella multipla DELETE e UPDATE:
table_references: table_reference [, table_reference] ... table_reference: table_factor | join_table table_factor: tbl_name [[AS] alias][{USE|IGNORE|FORCE} INDEX (key_list)] | ( table_references ) | { table_reference LEFT OUTER JOIN table_reference ON conditional_expr } join_table: table_reference table_reference table_reference table_reference table_reference table_reference table_reference [INNER | CROSS] JOIN table_factor [join_condition] STRAIGHT_JOIN table_factor STRAIGHT_JOIN table_factor ON condition LEFT [OUTER] JOIN table_reference join_condition NATURAL [LEFT [OUTER]] JOIN table_factor RIGHT [OUTER] JOIN table_reference join_condition NATURAL [RIGHT [OUTER]] JOIN table_factor
| | | | | |
-9-
UNION UNION usato per combinare il risultato di comandi SELECT multipli in un solo insieme risultato
SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | DISTINCT] SELECT ...]
Funzioni di aggregazione
AVG([DISTINCT] expr)
Restituisce il valore medio di expr. Lopzione DISTINCT pu essere usato per restituire la media dei valori distinti di expr. Restituisce NULL se non sono state trovate righe.
mysql> SELECT student_name, AVG(test_score) -> FROM student -> GROUP BY student_name; BIT_AND(expr)
Restituisce lAND bit a bit fra tutti i bits inexpr. Il calcolo realizzato con la precisione di 64-bit (BIGINT). Restituisce il valore 18446744073709551615 se non sono state trovate righe (valore di un unsigned BIGINT con tutti i bits settati a 1)
BIT_OR(expr)
Restituisce lOR bit a bit di tutti i bits in expr. Il calcolo realizzato con la precisione di 64-bit (BIGINT). Restituisce 0 se non sono state trovate righe.
BIT_XOR(expr)
Restituisce lo XOR bit a bit fra tutti i bits in expr. Il calcolo realizzato con la precisione di 64-bit (BIGINT). Restituisce il valore 0 se non sono state trovate righe.
COUNT(expr)
Restituisce il numero di valori non-NULL nelle righe selezionate con un comando SELECT. Il risultato un valore BIGINT. COUNT() restituisce 0 se non sono state individuate righe.
mysql> SELECT student.student_name,COUNT(*) -> FROM student,course -> WHERE student.student_id=course.student_id -> GROUP BY student_name;
COUNT(DISTINCT expr,[expr...])
Restituisce il numero di valori diversi non-NULL. COUNT(DISTINCT) restituisce 0 se non sono state trovate righe.
mysql> SELECT COUNT(DISTINCT results) FROM student; A cura della Prof.ssa Capone Maria
- 10 -
Questa funzione restituisce un stringa che il risultato della concatenazione di valori non-NULL da un gruppo. Restituisce NULL se non vi sono valori non-NULL. L sintassi completa :
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])
mysql> SELECT student_name, -> GROUP_CONCAT(test_score) -> FROM student -> GROUP BY student_name;
Oppure
Restituiscono il valore minimo o maximum value of expr. MIN() and MAX() possono avere una stringa come parametro. Restituiscono NULL se non ci sono righe selezionate.
mysql> SELECT student_name, MIN(test_score), MAX(test_score) -> FROM student -> GROUP BY student_name; STD(expr) STDDEV(expr)
Restituiscono lo scarto quadratico medio di expr; estensione dello standard SQL. Restituisce NULL se non ci sono righe selezionate.
STDDEV_POP(expr)
Restituisce lo scarto quadratico medio di expr (la radice quadrata di VAR_POP()). STDDEV_POP() restituisce NULL se non ci sono righe selezionate.
STDDEV_SAMP(expr)
Restituisce la somma di expr. Se linsieme restituito non ha righe, SUM() ritorna NULL. La parola chiave DISTINCT pu essere usata in MySQL 5.0 per sommare solo i valori distinti di expr.
VAR_POP(expr)
Restituisce la varianza standard di expr. Considera le righe come lintero campione in modo che il numero di righe compare al denominatore. Questa funzione stata inserita in MySQL 5.0.3. Prima di 5.0.3, si pu usare VARIANCE(), che equivalente ma non standard SQL.
A cura della Prof.ssa Capone Maria
- 11 -
Restituisce la varianza campione di expr, cio il denominatore il numero di righe meno 1. Questa funzione stata aggiunta in MySQL 5.0.3.
VARIANCE(expr)
DROP USER
Il comando DROP USER rimuove uno o pi accounts MySQL. DROP USER user [, user] ...
GRANT Il comando GRANT consente agli amministratori di sistema di creare account utente MySQL e di concedere permessi agli account
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.*} TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ... [REQUIRE NONE | [{SSL| X509}][CIPHER 'cipher' [AND]] [ISSUER 'issuer' [AND]] [SUBJECT 'subject']] [WITH with_option [with_option] ...] object_type = TABLE | FUNCTION
| PROCEDURE
with_option = GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count
- 12 -
REVOKE Il comando REVOKE consente agli amministratori del sistema di revocare i privilegi ad accounts di MySQL
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.*} FROM user [, user] ... REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
SET PASSWORD Questo comando consente di assegnare una password ad un account utente MySQL esistente.
SET PASSWORD [FOR user] = PASSWORD('some password')
priv_type
per i comandi GRANT e REVOKE Privilege Meaning Sets all simple privileges except GRANT OPTION Enables use of ALTER TABLE Enables stored routines to be altered or dropped Enables use of CREATE TABLE Enables creation of stored routines Enables use of CREATE TEMPORARY TABLE Enables use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES. Enables use of CREATE VIEW Enables use of DELETE Enables use of DROP TABLE Enables the user to run stored routines Enables use of SELECT ... INTO OUTFILE and LOAD DATA INFILE Enables use of CREATE INDEX and DROP INDEX Enables use of INSERT Enables use of LOCK TABLES on tables for which you have the SELECT privilege Enables use of SHOW FULL PROCESSLIST Not implemented Enables use of FLUSH Enables the user to ask where slave or master servers are Needed for replication slaves (to read binary log events from the master) Enables use of SELECT
SHOW DATABASES
ALL [PRIVILEGES] ALTER ALTER ROUTINE CREATE CREATE ROUTINE CREATE TEMPORARY TABLES CREATE USER CREATE VIEW DELETE DROP EXECUTE FILE INDEX INSERT LOCK TABLES PROCESS REFERENCES RELOAD REPLICATION CLIENT REPLICATION SLAVE SELECT SHOW DATABASES SHOW VIEW
Enables use of mysqladmin shutdown Enables use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET GLOBAL statements, the mysqladmin debug command; allows you to connect (once) even if max_connections is reached Enables use of UPDATE Synonym for no privileges Enables privileges to be granted
LOCK TABLES and UNLOCK TABLES LOCK TABLES blocca le tabelle (ma non le viste) per il thread corrente. Se qualche tabella bloccata da altri threads, essa blocca fino a che tutti i locks possono essere acquisiti. UNLOCK TABLES rilascia tutti i locks mantenuti dal thread corrente
LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ... UNLOCK TABLES
SET TRANSACTION Questo comando setta il livello di isolamento della transazione per la successiva transazione, globalmente o per la sessione corrente
SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
- 14 -
Descrizione
Un tipo campo di bit. M indica il numero di bits per valore, da 1 a 64. Il valore di default 1 se M omesso. Questo tipo di dato stato aggiunto in MySQL 5.0.3 per MyISAM, e esteso in 5.0.5 a MEMORY, InnoDB, e BDB. Prima di 5.0.3, BIT un sinonimo di TINYINT(1). Very small integer (1 Byte) Questi tipi sono sinonimi per TINYINT(1). Un valore zero considerato false; valori nonzero sono considerati true Un intero small (2 Byte) Un intero medium-size (3 Byte) Un intero normal-size (4 Byte) Questo tipo un sinonimo di INT. A large integer (8 Byte)
Campo di variabilit
-32768 32767 Unsigned: 0 65535 -8388608 8388607 Unsigned: 0 16777215 -2147483648 2147483647 Unsigned: 0 4294967295
FLOAT[(M,D)] [ZEROFILL]
A single-precision floating-point number (4 Byte) M il numero totale di cifre decimali D il numero di cifre che seguono il punto decimale. Se M e D sono omessi, i valori sono memorizzati secondo i limiti consentiti dallhardware. Un numero floating-point single-precision ha una precisione di 7 posti decimali.
- 15 -
Campo di variabilit
-1.7976931348623157E+308 -2.2250738585072014E-308 FLOAT senza argomento o con un argumento <= 24 sta per un numero floating-point a precisione singola FLOAT(X) dove 25 <= X <= 53 sta per un numero floating-point a precisione doppia
FLOAT(precision) [ZEROFILL]
Il range massimo dei valori DECIMAL lo stesso dei DOUBLE Ad es. stipendio DECIMAL (9,2) 9 il numero di cifre che saranno memorizzate 2 il numero di cifre che saranno memorizzate dopo il punto decimale, quindi con il campo di variabilit: -9999999.99 9999999.99 DECIMAL (p) DECIMAL(p,0) equivalente a
DECIMAL[(M[,D])] [ZEROFILL]
- 16 -
TIPI DATA E ORA I tipi data e ora sono DATETIME, DATE, TIME e YEAR. Ognuno di questi ha un range di valori legali, cos come un valore zero che usato quando si specifica una valore realmente illegale. NOTA MySQL consente di memorizzare valori di data non legali (es 1999-11-31), secondo il principio che responsabilit dellapplicazione gestire il controllo delle date e non del server SQL. MySQL controlla solo che il mese sia nel range 0 12 e il giorno sia nel range 0 31. Linclusione di 0 nel campo di variabilit di mese e giorno sono utili quando ad es. necessario memorizzare una data di nascita per la quale non si conosce la data esatta. Quando MySQL incontra un valore fuori dal range o illegale per il tipo, lo converte al valore zero per quel tipo. MySQL automaticamente converte un valore di tipo data o time in un numerico se il valore usato in un contesto numerico e viceversa. . Identificatore Descrizione di tipo
DATE
Campo di variabilit
Il range supportato '1000-01-01' a '9999-12-31' Valore zero: ' 0000 00 - 00' '1000-01-01 00:00:00' a '9999-12-31 23:59:59' Valore zero: '0000 00 00 00:00:00'
DATETIME
TIMESTAMP[(M)]
TIME
Una data MySQL visualizza i valori DATE nel formato 'YYYY-MM-DD' , ma consente di assegnare valori alle colonne DATE usando sia stringhe che numeri. Una combinazione di data e tempo MySQL visualizza i valori DATETIME nel formato 'YYYY-MM-DD HH:MM:SS', ma consente di assegnare valori nelle colonne DATETIME usando sia stringhe che numeri Un timestamp Una colonna TIMESTAMP utile per registrare la data e il tempo di una operazione di un INSERT o UPDATE perch automaticamente settata alla data e al tempo delloperazione pi recente se non gli si d un valore preciso. Gli si pu pure settare il valore corrente di data e ora assegnandogli il valore NULL. MySQL visualizza i valori TIMESTAMP nel formato YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, o YYMMDD, a seconda se M 14 (o manca), 12, 8, o 6, ma consente di assegnare valori sia usando stinghe che numeri. Es. TIMESTAMP(4) YYMM TIMESTAMP(2) YY Un TIMESTAMP memorizzato sempre in 4 bytes Un tempo MySQL visualizza valori TIME nel formato 'HH:MM:SS', ma consente di assegnare valori alle colonne TIME usando sia stringhe che numeri
Il range da '1970-01-01 00:00:00' a qualche data nellanno 2037 Valore zero: 0000000000000000 (la lunghezza dipende dalla dimensione di visualizzazione)
YEAR[(2|4)]
I valori disponibili sono dal 1901 al 2155, 0000 nel Un anno nel formato 2 - or 4 - cifre format (default 4-cifre) formato anno a 4-cifre, e 1970-2069 se si usa il formato a MySQL visualizza i valori YEAR nel formato YYYY, ma consente di assegnare valori alle colonne YEAR 2-cifre (70-69) usando sia stringhe o numeri. Valore zero: 0000
- 17 -
Sintesi della sintassi di MySql TIPI STRINGA I tipi stringa sono: CHAR, VARCHAR, BLOB, TEXT, ENUM, and SET. Identificatore di tipo Descrizione
Campo di variabilit
Una stringa a lunghezza fissa che sempre completata con spazi fino alla lunghezza specificata quando memorizzata. NATIONAL CHAR il modo ANSI SQL di definire che una colonna CHAR deve usare linsieme di default CHARACTER. In MySQL il default. CHAR una forma breve di CHARACTER. MySQL consente di [NATIONAL] CHAR(M) [BINARY] (M Byte) creare una colonna di tipo CHAR(0), utile quando si vuole avere compatibilit con alcune applicazioni vecchie che dipendono dallesistenza di una colonna ma non usano pi quel valore. Inoltre utile quando necessaria una colonna che assume solo 2 valori: un CHAR(0), che non definito come NOT NULL, occuper solo un bit e pu assumere solo 2 valori: NULL or "" Una stringa a lunghezza variabile [NATIONAL] VARCHAR(M) [BINARY] I valori VARCHAR sono ordinati e confrontati in modo case-insensitive a meno che non sia data la (M+1 Byte) parola chiave BINARY. BINARY non influenza come la colonna sia memorizzata o letta. Una colonna BLOB o TEXT Un BLOB un grande oggetto binario che pu contenere una quantit variabile di dati. BLOB (M+2 Byte) La sola differenza fra i tipi BLOB e TEXT che lordinamento e il confronto realizzato in case-sensitive TEXT (M+2 Byte) per i valori BLOB e case-insensitive per valori TEXT. In altre parole, un TEXT un BLOB caseinsensitive. TINYBLOB (M+2 Byte) A BLOB or TEXT column TINYTEXT (M+1 Byte) MEDIUMBLOB (M+3 Byte) MEDIUMTEXT (M+3 Byte) LONGBLOB (M+4 Byte) LONGTEXT (M+4 Byte) Una enumerazione Un oggetto string ache pu avere solo un valore, scelto da una lista di valori 'value1', 'value2', ..., NULL o il valore speciale error ""e. ENUM('value1','value2',...) Se un ENUM dichiarato NULL, NULL pure un valore legale per la colonna, e il valore di default NULL. Se un ENUM dichiarato NOT NULL, il valore di default il primo elemento della lista di valori consentiti. Un set. Un oggetto stringa che pu avere zero o pi valori, ognuno dei quali pu essere scelto da una lista di valori SET('value1','value2',...) 'value1', 'value2', ... A BLOB or TEXT column
Lunghezza massima di 255 (2^8 - 1) caratteri Lunghezza massima di 16777215 (2^24 - 1) caratteri (1.6 MB) Lunghezza massima di 4294967295 (2^32 - 1) caratteri (4.2 MB)
Es. Un campo dichiarato come SET(uno,due) NOT NULL pu avere solo questi valori: uno due uno,due Un SET pu avere un massimo di 64 membri.
- 18 -