сделать поле уникальным sql
UNIQUE
Ограничение UNIQUE
Ограничение UNIQUE в SQL позволяет идентифицировать каждую запись в таблице.
Если помещается ограничение столбца UNIQUE в поле при создании таблицы, база данных отклонит любую попытку ввода в это поле для одной из строк, значения, которое уже представлено в другой строке. Это ограничение может применяться только к полям, которые были объявлены как непустые (NOT NULL), так как не имеет смысла позволить одной строке таблицы иметь значение NULL, а затем исключать другие строки с NULL значениями как дубликаты.
SQL Server / Oracle / Access
Пример создания таблицы SQL с ограничением UNIQUE:
CREATE TABLE Student
( Kod_stud integer NOT NULL UNIQUE,
Fam char (30) NOT NULL UNIQUE,
Когда обьявляется поле Fam уникальным, две Смирновых Марии могут быть введены различными способами — например, Смирнова Мария и Смирнова М. Столбцы (не первичные ключи), чьи значения требуют уникальности, называются ключами-кандидатами или уникальными ключами. Можно определить группу полей как уникальную с помощью команды ограничения таблицы — UNIQUE. Объявление группы полей уникальной, отличается от объявления уникальными индивидуальных полей, так как это комбинация значений, а не просто индивидуальное значение, которое обязано быть уникальным. Уникальность группы заключается в том, что пары строк со значениями столбцов «a», «b» и «b», «a» рассматривались отдельно одна от другой.
Если база данных определяет, что каждая специальность принадлежит одному и только одному факультету, то каждая комбинация кода факультета(Kod_f) и кода специальности(Kod_spec) в таблице Spec должна быть уникальной. Например:
CREATE TABLE Spec
( Kod_spec integer NOT NULL,
Kod_f integer NOT NULL,
Nazv_spec char (50) NOT NULL,
UNIQUE (Kod_spec, Kod_f));
Оба поля в ограничении таблицы UNIQUE все еще используют ограничение столбца — NOT NULL. Если бы использовалось ограничение столбца UNIQUE для поля Kod_spec, такое ограничение таблицы было бы необязательным. Если значения поля Kod_spec различно для каждой строки, то не может быть двух строк с идентичной комбинацией значений полей Kod_spec и Kod_f. Ограничение таблицы UNIQUE наиболее полезно, когда индивидуальные поля не обязательно должны быть уникальными.
MySQL UNIQUE
Пример создания таблицы Persons в MySQL с ограничением UNIQUE:
CREATE TABLE Persons (
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
);
Удалить ограничение UNIQUE
Если после создания ограничения UNIQUE и в том случае, когда ограничение UNIQUE не имеет смысла, UNIQUE можно удалить. Для этого используйте следующий SQL:
SQL Server / Oracle / MS Access:
ALTER TABLE table_name DROP CONSTRAINT uc_PersonID;
MySQL:
ALTER TABLE table_name DROP INDEX uc_PersonID;
Вы должны войти, чтобы оставить комментарий.
SQL-Урок 11. Выборка уникальных данных (SELECT DISTINCT)
Оператор SQL DISTINCT используется для указания на то, что следует работать только с уникальными значениями столбца.
Оператор SQL DISTINCT нашел широкое применение в операторе SQL SELECT, для выборки уникальных значений. Так же используется в агрегатных функциях.
Синтаксис
Примеры
Все примеры будут по этой таблице workers, если не сказано иное:
id | name | age | salary |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
4 | Коля | 30 | 1000 |
5 | Иван | 27 | 500 |
6 | Кирилл | 28 | 1000 |
Пример
Давайте выберем все уникальные значения зарплат из таблицы workers:
SQL запрос выберет следующие строки:
salary |
---|
400 |
500 |
1000 |
Пример
Давайте подсчитаем все уникальные значения зарплат из таблицы workers (их будет 3 штуки: 400, 500 и 1000):
SQL запрос выберет следующие строки:
Пример
Давайте подсчитаем одновременно все уникальные значения зарплат и уникальные значения возрастов и запишем их в разные поля:
SQL запрос выберет следующие строки:
salary_count | age_count |
---|---|
3 | 5 |
Пример
Давайте просуммируем все уникальные значения зарплат из таблицы workers:
SQL-Урок 11. Выборка уникальных данных (SELECT DISTINCT)
Оператор SQL DISTINCT используется для указания на то, что следует работать только с уникальными значениями столбца.
Оператор SQL DISTINCT нашел широкое применение в операторе SQL SELECT, для выборки уникальных значений. Так же используется в агрегатных функциях.
Синтаксис
Примеры
Все примеры будут по этой таблице workers, если не сказано иное:
id | name | age | salary |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
4 | Коля | 30 | 1000 |
5 | Иван | 27 | 500 |
6 | Кирилл | 28 | 1000 |
Пример
Давайте выберем все уникальные значения зарплат из таблицы workers:
SQL запрос выберет следующие строки:
salary |
---|
400 |
500 |
1000 |
Пример
Давайте подсчитаем все уникальные значения зарплат из таблицы workers (их будет 3 штуки: 400, 500 и 1000):
SQL запрос выберет следующие строки:
Пример
Давайте подсчитаем одновременно все уникальные значения зарплат и уникальные значения возрастов и запишем их в разные поля:
SQL запрос выберет следующие строки:
salary_count | age_count |
---|---|
3 | 5 |
Пример
Давайте просуммируем все уникальные значения зарплат из таблицы workers:
Как создать уникальное ограничение для столбца (SQL Server 2008 R2)?
У меня есть SQL Server 2008 R2, и я хочу установить уникальный столбец.
существует два способа сделать это:» уникальный индекс «и»уникальное ограничение». Они не сильно отличаются от того, что я понимаю, хотя уникальности рекомендуется, потому что вы также получите автоматически в индекс.
Как создать уникальное ограничение?
есть ли способ создать уникальное ограничение через среду SQL Server Management Studio?
4 ответов
чтобы создать эти ограничения через GUI, вам нужен диалог» индексы и ключи», а не ограничения проверки.
но в вашем случае вам просто нужно запустить фрагмент кода, который у вас уже есть. Его вообще не нужно вводить в диалог выражения.
установить столбец как уникальный в SQL Server из GUI:
они действительно заставляют вас бегать по сараю, чтобы сделать это с GUI:
перед началом работы убедитесь, что столбец не нарушает уникальное ограничение.
или установите столбец как уникальный из Окно SQL-запроса:
изменения вступают в силу немедленно:
вот еще один способ через GUI, который делает именно то, что делает ваш скрипт, даже если он проходит через индексы (а не ограничения) в обозревателе объектов.
одно не ясно рассказывается, что Microsoft SQL-это создание на фоне уникального индекса по добавленным ограничением
как добавить атрибут unique для столбца после его создания? sql
не могу найти как изменить или добавить атрибуты к столбцам, после их создание, то есть использовать ALTER TABLE но не могу найти продолжение к этому, какая команда для этого должна быть?
2 ответа 2
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
ALTER TABLE test_table MODIFY COLUMN id INT NOT NULL UNIQUE;
UNIQUE не есть атрибут столбца. Это всего лишь сокращённое указание на создание уникального индекса по этому столбцу.
UPDATE
В разных СУБД синтаксис может отличаться. Например в Firebird будет ALTER TABLE table_name ADD CONSTRAINT index_name UNIQUE (column_name) – Герман Борисов
Всё ещё ищете ответ? Посмотрите другие вопросы с метками sql или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.26.40573
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.