Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 17.11.2017, 16:18   #1
gryllus
Форумчанин
 
Регистрация: 27.08.2017
Адрес: город Пермь
Сообщений: 99
Репутация: 60
По умолчанию AUTO_INCREMENT или ...

Доброго времени суток!

Изучаю MySQL и соответственно постоянно сталкиваюсь с вопросами, что конечно естественно и вот сейчас вопрос))):

Создавая таблицу в базе данных в самом начале столкнулся с таким при создании колонки с ID часто ставят атрибут AUTO_INCREMENT

Код:

CREATE  TABLE person
-> (person_id AUTO_INCREMENT

который каждый следующий ID увеличивает на один.

И гуляя по просторам интернета встретился с такой записью

Код:

CREATE TABLE person
-> (person_id SMALLINT UNSIGNED

где диапазон без знаковых чисел.

Для чего так? Ведь в первом и втором случае каждый ID будет уникальным или нет?


"Если человек не понимает твои мечты – он не твой человек."

Дмитрий Гринберг
gryllus вне форума   Ответить с цитированием
Старый 17.11.2017, 16:26   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,780
Репутация: 2126
По умолчанию

Почему оно будет уникальный? AUTO_INCREMENT и UNSIGNED не гарантируют такого. AUTO_INCREMENT - просто удобен, когда вам для ИДа достаточен простой номер записи.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 17.11.2017, 16:42   #3
gryllus
Форумчанин
 
Регистрация: 27.08.2017
Адрес: город Пермь
Сообщений: 99
Репутация: 60
По умолчанию

Спасибо!

[QUOTEПочему оно будет уникальный?][/QUOTE]
...но ведь при внесении новой записи с указание существующего номера ID MySQL будет ругаться(у меня в теории)))).

Цитата:
AUTO_INCREMENT - просто удобен, когда вам для ИДа достаточен простой номер записи.
...значит UNSIGNED когда надо какое-то другое значение, например: 1001? И это число не будет меняться автоматом?
gryllus вне форума   Ответить с цитированием
Старый 17.11.2017, 16:54   #4
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,780
Репутация: 2126
По умолчанию

Цитата:
но ведь при внесении новой записи с указание существующего номера ID MySQL будет ругаться(у меня в теории)))).
Если на поле не весит ограничение на уникальность, то не будет. Ни AUTO_INCREMENT, ни ID в имени не делает это автоматически.

Цитата:
значит UNSIGNED когда надо какое-то другое значение, например: 1001?
Нет. Это значит, только беззнаковость поля.

Цитата:
И это число не будет меняться автоматом?
Если вы не укажите AUTO_INCREMENT для этого поля, не повесите тригер или ... то да, автоматом меняться не будет.

AUTO_INCREMENT и UNSIGNED это не об одном и том же, это не взаимозаменяемы/взаимопротивопоставляемые вещи.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 17.11.2017, 17:14   #5
gryllus
Форумчанин
 
Регистрация: 27.08.2017
Адрес: город Пермь
Сообщений: 99
Репутация: 60
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Если на поле не весит ограничение на уникальность, то не будет. Ни AUTO_INCREMENT, ни ID в имени не делает это автоматически.
...ограничение на уникальность - это первичный ключ?

Цитата:
Нет. Это значит, только беззнаковость поля.
...во втором случае у меня в примере не просто UNSIGNED стоит, а SMALLINT UNSIGNED))) или это ни чего не меняет?

Цитата:
AUTO_INCREMENT и UNSIGNED это не об одном и том же, это не взаимозаменяемы/взаимопротивопоставляемые вещи.
...AUTO_INCREMENT и SMALLINT UNSIGNED то же противопоставляемые вещи?

Спасибо!
gryllus вне форума   Ответить с цитированием
Старый 17.11.2017, 17:32   #6
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,780
Репутация: 2126
По умолчанию

Цитата:
ограничение на уникальность - это первичный ключ?
https://www.w3schools.com/sql/sql_unique.asp

Цитата:
во втором случае у меня в примере не просто UNSIGNED стоит, а SMALLINT UNSIGNED))) или это ни чего не меняет?
Угу, диапазон значений.

Цитата:
AUTO_INCREMENT и SMALLINT UNSIGNED то же противопоставляемые вещи?
Вы читать разучились или не знаете, что значит "НЕ"?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 17.11.2017, 18:05   #7
gryllus
Форумчанин
 
Регистрация: 27.08.2017
Адрес: город Пермь
Сообщений: 99
Репутация: 60
По умолчанию

Цитата:
ограничение на уникальность - это первичный ключ?
Цитата:
Уникальное ограничение SQL
Ограничение Unique гарантирует, что все значения в столбце различны.

Ограничения уникального и первичного ключей обеспечивают гарантию уникальности столбца или набора столбцов.

Ограничение первичного ключа автоматически имеет уникальное ограничение.

Тем не менее можно иметь много уникальных ограничений для каждой таблицы, но только одно ограничение первичного ключа для каждой таблицы.
Спасибо!)))

Цитата:
Угу, диапазон значений.
Без знаковый диапазон значений - здесь имеется ввиду, что числа в данном поле не могут быть отрицательными и можно задать любое значение в рамках диапазона?

Цитата:
Вы читать разучились или не знаете, что значит "НЕ"?
...извините за мылился взор)))!

Цитата:
AUTO_INCREMENT и SMALLINT UNSIGNED
AUTO_INCREMENT понятно (вы объяснили), а SMALLINT UNSIGNED именно в ID зачем? Зачем нужен такой большой диапазон в ID?

"Работай над очищением твоих мыслей. Если у тебя не будет дурных мыслей, не будет и дурных поступков."

Конфуций
gryllus вне форума   Ответить с цитированием
Старый 17.11.2017, 18:45   #8
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,380
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от gryllus Посмотреть сообщение
а SMALLINT UNSIGNED именно в ID зачем? Зачем нужен такой большой диапазон в ID?
UNSIGNED потому что обычно ID не отрицательные.
А где вы увидели большой непонятно, скорее наоборот. Если это список сотрудников в компании, то наверно хватит. А если например список клиентов магазина — то не факт.
https://dev.mysql.com/doc/refman/5.7...ger-types.html
Alex11223 вне форума   Ответить с цитированием
Старый 17.11.2017, 18:49   #9
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,613
Репутация: 5352
По умолчанию

Цитата:
Сообщение от gryllus Посмотреть сообщение
а SMALLINT UNSIGNED именно в ID зачем? Зачем нужен такой большой диапазон в ID?
Это шутка?

тип SMALLINT Unsigned (см. доку)
от 0 до 65535

поверьте мне, 65 тысяч - это мелочь для реальных задач.
ну, чтобы не быть голословным. вот в этой теме человек выложил XLS файл с транзакциями по продажам. за 10 дней там >51 тысячи записей.
Вот теперь и прикиньте, сколько записей будет за 1 месяц, за 1 год, за несколько лет...

или возьмите данный форум.
Вот ваша тема имеет идентификатор 1708581
значит, в БД должно быть ID соответствующего размера.

Последний раз редактировалось Serge_Bliznykov; 17.11.2017 в 18:54.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 17.11.2017, 19:33   #10
gryllus
Форумчанин
 
Регистрация: 27.08.2017
Адрес: город Пермь
Сообщений: 99
Репутация: 60
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А где вы увидели большой непонятно, скорее наоборот. Если это список сотрудников в компании, то наверно хватит. А если например список клиентов магазина — то не факт.
...я видел эти диапазоны))), но не думал, что на столько))).

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вот ваша тема имеет идентификатор 1708581
значит, в БД должно быть ID соответствующего размера.
...понял, спасибо?

Вот теперь предельно ясно для чего нужны задаваемые диапазоны чисел SMALLINT и остальные другие в ID.

Спасибо большое во многом меня просветили в этой теме даже между строк.

"Невозможно победить того, кто не сдается."
gryllus вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
auto_increment kilogram SQL, базы данных 8 28.06.2012 09:54
MySQL, dbExpress, auto_increment davidoff_pk БД в Delphi 5 25.01.2012 11:01
Не работает auto_increment SwiP SQL, базы данных 4 06.05.2011 20:41
Не работает auto_increment insense PHP 14 18.06.2010 19:18
Auto_Increment D-Snaker PHP 1 21.08.2009 20:34


03:08.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru