|
Программирование >> Формирование связанных подзапросов
поля пустым (ввести в поле NULL-значение) будут отвергнуты системой. Например, для того, чтобы в определении таблицы: STUDENT запретить использование NULL-значений для столбцов STUDENTID, SURNAME и NAME, можно записать следующее: CREATE TABLE STUDENT (STUDENT ID INTEGER NOT NULL, SURNAME CHAR (25) NOT NULL, NAME CHAR (10) NOT NULL, STIPEND INTEGER, KURS INTEGER, CITY CHAR (15), BIRTHDAY DATE, UNIV ID INTEGER) ; Важно помнить: если для столбца указано NOT NULL, то при использовании команды INSERT обязательно должно бгть указано конкретное значение, вводимое в это поле. При отсутствии ограничения NOT NULL в столбце значение может отсутствовать, если только не указано значение столбца по умолчанию (DEFAULT). Если при создании таблицы ограничение NOT NULL не было указано, то его можно указать позже, используя команду ALTER TABLE. Однако для того, чтобы для вновь вводимого с помощью команды ALTER TABLE столбца можно было задать ограничение NOT NULL, таблица, в которую добавляется столбец, должна бгть пустой. 4.5.2. Уникальность как ограничение на столбец Иногда требуется, чтобы все значения, введенные в столбец, отличались друг от друга. Например, этого требуют первичные ключи. Если при создании таблицы: для столбца указывается ограничение UNIQUE, то база данн:х отвергает любую попытку ввести в это поле какой-либо строки значение, уже содержащееся в том же поле другой строки. Это ограничение применимо только к тем полям, которые б:ли объявлены NOT NULL. Можно
Объявляя поле STUDENTID уникальным, можно бгть уве-ренн:м, что в таблице не появится записей для двух студентов с одинаков:ми идентификаторами. Столбцы, отличные от первичного ключа, для котор:х требуется поддержать уникальность значений, называются возможными ключами или уникальными ключами (CANDIDATE KEYS ИЛИ UNIQUE KEYS). 4.5.3. Уникальность как ограничение таблицы Можно сделать уникальными группу полей, указав UNIQUE в качестве ограничений таблицы. При объединении полей в группу важен порядок, в котором они указываются. Ограничение на таблицу UNIQUE является полезным, если требуется поддерживать уникальность группа: полей. Например, если в нашей базе данн:х не допускается, чтобы студент сдавал в один день больше одного экзамена, то можно в таблице объявить уникальной комбинацию значений полей STUDENT ID и EXAMDATE. Для этого следует создать таблицу EXAMMARKS следующим способом: CREATE TABLE EXAM MARKS (EXAM ID INTEGER NOT NULL, STUDENT ID INTEGER NOT NULL, SUBJ ID INTEGER NOT NULL, MARK CHAR [X), предложить следующее определение таблицы: STUDENT, использующее ограничение UNIQUE: CREATE TABLE STUDENT (STUDENT ID INTEGER NOT NULL UNIQUE, 4.5. Ограничения на множество допустимых значений данн1х 95 EXAM DATE DATE NOT NULL, UNIQUE (STUDENT ID, EXAM DATE)) ; Обратите внимание, что оба поля в ограничении таблицы UNIQUE все еще используют ограничение столбца - NOT NULL. Если бы использовалось ограничение столбца UNIQUE дя поля STUDENT ID, то такое ограничение таблицы было бы необязательным. -Если значение поля STUDENTID должно быть различным для каждой строки в таблице EXAMMARKS, это можно сделать, объявив UNIQUE как ограничение самого поля STUDENTID. В этом случае не будет и двух строк с идентичной комбинацией значений полей STUDENTID, EXAMDATE. Следовательно, указание UNIQUE как ограничение таблицы наиболее полезно использовать в случаях, когда не требуется уникальность индивидуальных полей, как это имеет место на самом деле в рассматриваемом примере. 4,5.4. Присвоение имен ограничениям Ограничениям таблиц можно присваивать уникальные имена. Преимущество явного задания имени ограничения состоит в том, что в этом случае при вхдаче системой сообщения о нарушении установленного ограничения будет указано его имя, что упрощает обнаружение ошибок. Для присвоения имени ограничению используется несколько измененнхй синтаксис команд CREATE TABLE и ALTER TABLE. Приведенный выше пример запроса изменяется следующим образом: CREATE TABLE EXAM MARKS (EXAM ID INTEGER NOT NULL, STUDENT ID INTEGER NOT NULL, SUBJ ID INTEGER NOT NULL, MARK CHAR d), EXAM DATE DATE NOT NULL, CONSTRAINT STUD SUBJ CONSTR UNIQUE (STUDENT ID, EXAM DATE);
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |