SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.02.2010 19:44:49

enot
Участник
Зарегистрирован: 13.02.2010
Сообщений: 12

id int(11)- почему именно (11)?

Добрый день.
Сел изучать MySQL  ...
у меня есть вопрос...
создаем новую таблицу:

CREATE TABLE IF NOT EXISTS `admin` (
  `admid` int(11) unsigned NOT NULL auto_increment,
  `adlog` varchar(25) NOT NULL default '',
  `adpwd` varchar(32) default NULL,
  `admail` varchar(50) NOT NULL default '',
  `adlast` int(11) NOT NULL default '0',
  `permiss` text NOT NULL,
  PRIMARY KEY  (`admid`),
  KEY `adlog` (`adlog`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

все вроде понятно, кроме двух моментов:
admid` int(11) unsigned NOT NULL auto_increment   - здесь, почему именно (11) ???? что это?
и здесь
AUTO_INCREMENT=2 ; почему 2 ???

нигде не могу найти ответ(
Спасибо.

Отредактированно enot (13.02.2010 19:51:31)

Неактивен

 

#2 13.02.2010 20:01:37

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5831

Re: id int(11)- почему именно (11)?

В данном случае 11 это ширина поля при отображении.
11, наверное, пишут для того, чтобы не обрезалось любое значение, которое может принимать величина типа INT.

В вашем случае писать 11 совершенно не обязательно.

Для иллюстрации выполните следующий код:


CREATE TABLE test_table(a INT(11),b INT(11) zerofill);
INSERT INTO test_table VALUES(1,1);
SELECT * FROM test_table;

Неактивен

 

#3 13.02.2010 20:12:40

enot
Участник
Зарегистрирован: 13.02.2010
Сообщений: 12

Re: id int(11)- почему именно (11)?

Спасибо!
другими словами в этой таблице может быть 10^11 записей ? т.е. 10^11 различных ключей ?

а что значит AUTO_INCREMENT=2 ?

Неактивен

 

#4 13.02.2010 20:23:36

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5831

Re: id int(11)- почему именно (11)?

Нет, поле int требует для хранения 4 байта, значит 2^32 записей. А ширина в 11 символов достаточна, чтобы любое число из данного диапозона не обрезалось.

AUTO_INCREMENT=2 означает, что нумерация поля `admid` начнется с 2, если не будет явно указано другое значение при добавлении.

http://dev.mysql.com/doc/refman/5.0/en/ … table.html

Неактивен

 

#5 13.02.2010 20:27:30

enot
Участник
Зарегистрирован: 13.02.2010
Сообщений: 12

Re: id int(11)- почему именно (11)?

Понятно, спасибо !)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson