Как сделать поле в mysql уникальным

HTML форум > Web-программирование и базы данных > Базы данных > Уникальное поле в таблице

PDA

Просмотр полной версии : Уникальное поле в таблице


Licoric

04.09.2009, 02:08

создал таблицу (простую):
id email pass name icq
Хочу уже после сделать поле email уникальным. Нажимаю на "создать индекс". Выбираю поле почты, ставлю "уникальное". Есть еще поле "размер". Но для чего оно - я не знаю.
Для чего? Ключик уникальности какой?

Mike

04.09.2009, 04:59

Бывают индексы разных видов. Давно не имел с ними дело, поэтому выскажу другую мысль.
Зачем стоить индекс, если нужно просто сделать поле уникальным? Это две разных вещи, можно обойтись и без индекса вообще.

Webmaster

04.09.2009, 09:40

Зачем стоить индекс, если нужно просто сделать поле уникальным? Это две разных вещи, можно обойтись и без индекса вообще.
+1
индексы нужны только для индексирования, а это в свою очередь нужно для ускорения обработки результатов выборки из базы
а уникальность - это совсем другое, просто при добавлении новой записи с таким же значением поля, MySQL выдаст ошибку

Licoric

04.09.2009, 10:11

Ну а как сделать поле уникальным?
Даже если создавать таблицу заново, то там есть "точка" поле "уникальный". Ее кликаешь. Нужно в поле размер вводить дополнительно что-то, иначе таблица не создастся.

Nitrex

05.09.2009, 16:36

А просто перед добавлением проверку на нахождение такого значения поля в таблице нельзя сделать?

Ворон

05.09.2009, 16:52

Ну а как сделать поле уникальным?
CREATE UNIQUE INDEX index_name On table_name (field_name)
rtfm (http://dev.mysql.com/doc/refman/5.0/en/create-index.html)

Mike

06.09.2009, 02:18

CREATE UNIQUE INDEX index_name On table_name (field_name)
rtfm (http://dev.mysql.com/doc/refman/5.0/en/create-index.html)
Опять же, это - индекс. UNIQUE и INDEX - два совершенно разных понятия, как было сказано выше несколько раз.
Чтобы сделать поле уникальным, нужно выполнить такую команду:
ALTER TABLE table_name ADD UNIQUE (column_name)

Licoric

06.09.2009, 02:48

ALTER TABLE table_name ADD UNIQUE (column_name)
Получил:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Mike

06.09.2009, 02:58

table_name нужно заменить на название таблицы, column_name на название колонки.
Только что еще раз попробовал, все работает без проблем.

Licoric

06.09.2009, 03:04

table_name нужно заменить на название таблицы, column_name на название колонки.
Только что еще раз попробовал, все работает без проблем.
все поменял еще в первый раз (хоть что-то, но я понимаю):
SQL-запрос:
ALTER TABLE aci_user ADD UNIQUE (email
)
Ответ MySQL: http://myadmin.fbsolutions.ru/themes/original/img/b_help.png (http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html)
#1170 - BLOB/TEXT column 'email' used in key specification without a key length

Mike

06.09.2009, 03:21

Эта ошибка связана с типом данных, blob/text. Насколько я помню, строки этого типа нельзя сравнивать между собой, т.е. нельзя проверить их на уникальность. Поэтому нужно указать длину, которая будет служить границей. Если длина 100, то будут сравниваться только первые 100 символов. Это я рассуждаю логически, исходя из опыта работы с TEXT.
Решение: указаль длину в запросе.
ALTER TABLE table_name ADD UNIQUE (column_name(length))Использование TEXT или BLOB для имейл это плохо. Лучше обойтись VARCHAR(50), например.

Licoric

06.09.2009, 14:16

тогда в таблицах что ставить? varchar?

HTMLandPHP

06.09.2009, 15:23

Целые числа
Тип Описание
TINYINT Может хранить числа от -128 до 127
SMALLINT Диапазон от -32768 до 32767
MEDIUMINT Диапазон от -8388608 до 8388607
INT Диапазон от -2147483648 до 2147483647
BIGINT Диапазон от -9223372036854775808 до 9223372036854775807
Дробные числа
Тип Описание
FLOAT Число с плавающей точкой небольшой точности
DOUBLE Число с плавающей точкой двойной точности
REAL Синоним для DOUBLE
DECIMAL Дробное число хранящееся в виде строки
NUMERIC Синоним для DECIMAL
Строки (символьные данные)
Тип Описание
VARCHAR Может хранить не более 255 символов
TINYTEXT Может хранить не более 255 символов
TEXT Может хранить не более 65 535 символов
MEDIUMTEXT Может хранить не более 16 777 215 символов
LONGTEXT Может хранить не более 4 294 967 295 символов
Бинарные данные(учитываеться регистр символов)
Тип Описание
TINYBLOB Может хранить не более 255 символов
BLOB Может хранить не более 65 535 символов
MEDIUMBLOB Может хранить не более 16 777 215 символов
LONGBLOB Может хранить не более 4 294 967 295 символов
Дата и время
Тип Описание
DATE Дата в формате ГГГГ-ММ-ДД
TIME Время в формате ЧЧ:ММ:СС
DATETIME Дата и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС
TIMESTAMP Дата и время в формате ГГГГММДДЧЧММСС
мини табличка
выбирай или varchar или tinytext
для своих нужд
а вообще смотри чтобы максимально возможное число хранимых символов
было приближено к максимально возможному числу вводимых данных

ZhukV

23.12.2009, 10:45

Если нужно вытащить из поле из другой таблицы, пишы
table.pole
table-таблица
pole-поле

Powered by vBulletin™ Version 4.1.3 Copyright © 2017 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot


Источник: http://www.html.by/archive/index.php/t-7388.html



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Как использовать уникальные индексы в MySQL и других базах данных MySQL Афоризмы про бывает


Mysql - Как вывести поля с уникальными значениями? - Stack Overflow на Как задать уникальное значение для поля - MySQL - Киберфорум Форумы портала : создание таблицы с уникальными полями Обработка уникальных полей в MySQL - SEO форум вебмастеров Уникальное поле mySQL - Старейший форум о заработке Решение: Как сделать уникальные пары полей? - MySQL Уникальное значение поля в таблице MySQL Форум Как сделать unique для текстового столбца MySQL? Уникальное поле в таблице Архив - HTML форум

Похожие новости