Mi rendo conto che tinyint
è un intero di un singolo byte (a proposito, è firmato o non firmato?). Che cosa significa l'argomento (3)
? Ho cercato e non ho trovato la risposta.Che cosa significa tinyint (3) in SQL (SQLite)?
risposta
Vedere this blog page sulle definizioni del tipo di colonna MySQL.
Per i tipi numerici il modificatore di lunghezza è in realtà la larghezza di visualizzazione, che non ha nulla a che fare con ciò che può essere memorizzato nel campo. Sì, è così - sia TINYINT (1) che TINYINT (4) possono memorizzare valori nell'intervallo -128..127 (o per i valori non firmati 0..255) e sono tipi di dati assolutamente identici, con una piccola svolta (che riguarda la data recupero - vedi sotto). Ecco spiegazione di ciò che si intende per larghezza di visualizzazione, prelevata direttamente dalla fonte:
L'ampiezza del dispositivo non vincolare la gamma di valori che possono essere memorizzati nella colonna, né il numero di cifre che vengono visualizzati per valori con larghezza superiore a quella specificata per la colonna. Ad esempio, una colonna specificata come SMALLINT (3) presenta il solito intervallo SMALLINT da -32768 a 32767 e vengono visualizzati valori al di fuori dell'intervallo consentito da tre caratteri utilizzando più di tre caratteri.
La domanda riguardava SQLite, ma mi rendo conto che l'OP ha aggiunto questa precisione dopo aver risposto. L'altra risposta è più rilevante ora, non è sicuro del motivo per cui questo è accettato. – Benjamin
SQLite "utensileria finti" tipi di dati su colonne. Fondamentalmente, accetta la sintassi SQL standard, ma altrimenti la ignora. (Ma vedi tipo affinità e coercizione.)
Vedere Manifest Typing nella documentazione "differenze".
La maggior parte dei motori di database SQL utilizza la digitazione statica. Un tipo di dati è associato a ciascuna colonna in una tabella e solo i valori di quel particolare tipo di dati possono essere archiviati in quella colonna. SQLite rilassa questa restrizione utilizzando la digitazione manifest. Nella digitazione manifest, il tipo di dati è una proprietà del valore stesso, non della colonna in cui è memorizzato il valore. SQLite consente quindi all'utente di memorizzare qualsiasi valore di qualsiasi tipo di dati in qualsiasi colonna indipendentemente dal tipo dichiarato di tale colonna. (Ci sono alcune eccezioni a questa regola: una colonna integer PRIMARY KEY può solo numeri interi Store e tentativi SQLite per costringere valori nel tipo di dati dichiarato della colonna quando può..)
anche vedi Datatypes in SQLite Version 3 e tipo di affinità:
l'affinità di una colonna è determinato dal tipo dichiarato della colonna, in base alle seguenti regole nell'ordine indicato:
Se il tipo dichiarato contiene la stringa "INT", viene assegnata l'affinità INTEGER.
[altre regole omesse per brevità]
Per altri database, vedere la documentazione specifica del database appropriato :-)
- 1. Che cosa significa "WHERE 1" in SQL?
- 2. Cosa significa (+) in SQL?
- 3. mysql tinyint (1) vs tinyint (2) vs tinyint (3) vs tinyint (4)
- 4. Che cosa significa CultureInfo.InvariantCulture?
- 5. Che cosa significa "[questo]" significa in C++
- 6. Che cosa significa "1;" significa in Perl?
- 7. Che cosa significa "% .6d" significa in printf
- 8. Che cosa significa information_schema.TABLES.DATA_FREE significa in MySQL?
- 9. Che cosa significa?. significa in C#?
- 10. Che cosa significa%>% significa in R?
- 11. Che cosa significa %% in PL/pgSQL significa?
- 12. Che cosa significa varchar (-1)?
- 13. Che cosa significa "~~" in Perl?
- 14. Che cosa significa "& _" in VB?
- 15. In Mathematica, che cosa significa @@@?
- 16. Che cosa significa (== ""), in Haskell?
- 17. Che cosa significa lo stato di uscita di processo 3?
- 18. Che cosa significa "Data Massage"?
- 19. Che cosa significa "arricciatura"?
- 20. Che cosa significa new()?
- 21. Che cosa significa "javascript: //"?
- 22. Che cosa significa MEDIA_ERROR_SERVER_DIED?
- 23. cout - che cosa significa?
- 24. Che cosa significa "sys.argv"?
- 25. Che cosa significa 8badf00d?
- 26. Che cosa significa "log *"?
- 27. Che cosa significa scalabilità?
- 28. Che cosa significa [, elemento]?
- 29. Che cosa significa __FILE__?
- 30. Che cosa significa Opt.out?
sto usando SQLite e io don Non vedo alcuna differenza tra 'tinyint' e' tinyint (3) '. – mk12
@ Mk12 È perché SQLite "mock implementa" i tipi di dati (in pratica accetta la sintassi ma in caso contrario la ignora). Leggi il manuale fine. –