Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Ограничение первичных ключей




Изменение существующей таблицы

 

Добавление: ALTER TABLE <имя таблицы> ADD (<имя столбца> <тип данных> <размер>);

Модификация: ALTER TABLE <имя таблицы>

MODIFY <имя столбца> <тип данных> <размер/точность>;

Замечание.

ü изменение типа данных возможно только в том случае, если столбец пуст;

ü для незаполненного столбца можно изменять размер/точность, для заполненного столбца размер/точность можно увеличить, но нельзя понизить;

ü ограничение NOT NULL может быть установлено, если ни одно значение в столбце не содержит NULL (опцию NOT NULL всегда можно отменить);

ü разрешается изменять значения, установленные по умолчанию.

 

Удаление таблицы: DROP TABLE <имя таблицы>;

 

Замечание. Перед удалением таблица должна быть пуста.

Задание 1.

  1. Создать таблицы по образцу.
  2. Написать команду, которая позволит быстро выбрать данные о студентах по курсам, на которых они учатся.
  3. Создайте индекс, который позволит для каждого студента быстро осуществить поиск оценок, сгруппированных по датам.

Ограничение на множество допустимых значений

Ограничение NOT NULL

Пример. Создать таблицу СТУДЕНТ, запретив значение NULL- значений для столбцов STUDENT_ID, SURNAME, NAME:

CREATE TABLE STUDENT

(STUDENT_ID INTEGER NOT NULL,

SURNAME VARCHAR(60) NOT NULL,

NAME VARCHAR(60) NOT NULL,

STIPEND DOUBLE,

KURS INTEGER,

CITY VARCHAR(60),

BIRTHDAY DATE,

UNIV_ID INTEGER);

 

Уникальность как ограничение на столбец

Пример. Объявить поле STUDENT_ID уникальным:

CREATE TABLE STUDENT

(STUDENT_ID INTEGER NOT NULL UNIQUE,

SURNAME VARCHAR(60) NOT NULL,

NAME VARCHAR(60) NOT NULL,

STIPEND DOUBLE,

KURS INTEGER,

CITY VARCHAR(60),

BIRTHDAY DATE,

UNIV_ID INTEGER);

 

Уникальность как ограничение таблицы

Пример. Создать таблицу EXAM_MARKS с учетом того, что не допускается, чтобы студент сдавал в один день больше одного экзамена. Для этого объявляется уникальной комбинация значений полей STUDENT_ID и EXAM_DATE.

CREATE TABLE EXAM_MARKS

(EXAM_ID INTEGER NOT NULL,

STUDENT_ID INTEGER NOT NULL,

SUBJ_ID INTEGER NOT NULL,

MARK CHAR(1),

EXAM_DATE DATE NOT NULL,

UNIQUE (STUDENT_ID, EXAM_DATE));

 

Присвоение имен ограничениям

Ограничениям таблиц можно присваивать уникальные имена. Преимущество явного задания имени ограничения состоит в том, ч то в э том случае при выдаче системой сообщения о нарушении установленного ограничения будет указано его имя, что упрощает обнаружение ошибок.

 

Пример. Присвоить имя STUD_ SUBJ_CONSTR ограничению в предыдущем примере:

CREATE TABLE EXAM_MARKS

(EXAM_ID INTEGER NOT NULL,

STUDENT_ID INTEGER NOT NULL,

SUBJ_ID INTEGER NOT NULL,

MARK CHAR(1),

EXAM_DATE DATE NOT NULL,

CONSTRAINT STUD_ SUBJ_CONSTR

UNIQUE(STUDENT_ID, EXAM_DATE));

 

Ограничение первичных ключей

Первичные ключи таблицы – это специальные случаи комбинирования ограничений UNIQUE и NOT NULL. Первичные ключи имеют следующие особенности:

  • таблица может содержать только один первичный ключ;
  • внешние ключи по умолчанию ссылаются на первичный ключ таблицы;
  • первичный ключ является идентификатором строк таблицы (строки, однако, могут идентифицироваться и другими способами).

 

Пример. Создать таблицу STUDENT с первичным ключом по полю STUDENT_ID:

CREATE TABLE STUDENT

(STUDENT_ID INTEGER PRIMARY KEY,

SURNAME VARCHAR(60) NOT NULL,

NAME VARCHAR(60) NOT NULL,

STIPEND DOUBLE,

KURS INTEGER,

CITY VARCHAR(60),

BIRTHDAY DATE,

UNIV_ID INTEGER);

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...