Mysql
 sql >> база данни >  >> RDS >> Mysql

tinyint(размер), varchar(размер):обяснение на размера

Вашето решение за объркване е-

В Mysql int(6) не означава, че могат да съхраняват до 6 цифри. не повече от 999999.

Въпреки това CHAR(6) Това означава колона със знаци с максимална дължина от 6 знака, като тези думи:

къщи

Ако се опитам да съхраня думата „специален“ в тази колона, MySQL ще нареже стойността на „specia“, тъй като оригиналната дума има 7 знака.

Както и да е, всички колони с цели числа имат предварително зададен диапазон от разрешени стойности. Числото в скоби показва само ширината на дисплея.

Това вероятно все още е объркващо, така че нека обясня допълнително...

Ширината на дисплея е число от 1 до 255. Можете да зададете ширината на дисплея, ако искате всичките ви целочислени стойности да се „показват“ по подобен начин:

TINYINT[(M)] [НЕПОДПИСАНО] [ZEROFILL]

M показва максималната ширина на дисплея за целочислени типове. Максималната ширина на дисплея е 255. Ширината на дисплея не е свързана с диапазона от стойности, които типът може да съдържа, . За типовете с плаваща запетая и фиксирана запетая, M е общият брой цифри, които могат да бъдат съхранени.

Ако посочите ZEROFILL за числова колона, MySQL автоматично добавя атрибута UNSIGNED към колоната.

Така че отговорът на вашия въпрос е

create table foo
(
col2 tinyint(2) unsigned zerofill, col4 tinyint(4) unsigned zerofill, col5notzerofill        tinyint(5)  
)engine=innodb;

insert into foo values (1,2,3),(11,12,14),(123,123,156),(1234,1234,12756);
select * from foo;

OUTPUT :-
+------+------+-----------------+
| col2 | col4 | col5notzerofill |
+------+------+-----------------+
|   01 | 0002 |               3 |
|   11 | 0012 |              14 |
|  123 | 0123 |             127 |
|  255 | 0255 |             127 |
+------+------+-----------------+

*Така че разберете, в Mysql ширината на дисплея работи само с нула запълване.

*ако използвате, не използвайте zerofill, това не е ефективно.

И ако използвате zerofill, тогава mysql ще провери ширината на дисплея, а ако не зададете, тогава mysql автоматично ще присвои ширина на дисплея на тази колона. *




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. свързване на таблици и транспониране на колони и редове

  2. TO_SECONDS() Примери – MySQL

  3. Symfony:Доктрина за данни:как да се справя с голям csv файл?

  4. Външните ключове трябва да са индексни в mySQL?

  5. Как да получите UTC на поле за дата и час?