Для модификации существующего столбца служит ключевое слово ALTER COLUMN. Изменение столбца невозможно, если:
• столбец участвует в ограничениях PRIMARY KEY или FOREGIG KEY; • на столбец наложены ограничения целостности CHECK или UNIQUE (исключение – столбцы, имеющие тип данных переменной длины, т.е. типы данных, начинающиеся на var); • со столбцом связано значение по умолчанию.
Определяя для столбца новый тип данных, следует помнить о том, что старый тип данных должен конвертироваться в новый.
ALTER TABLE Студенты ALTER COLUMN Номер_группы CHAR(6) NOT NULL 3. Удаление столбца.
Нельзя удалять столбцы с ограничением целостности CHECK, FOREIGN KEY, UNIQUE или PRIMARY KEY, а также столбцы, для которых определены значения по умолчанию. ALTER TABLE Студенты DROP COLUMN Год_поступления
Добавление внешних ключей в таблицу «Учебный план» (создание связи с именем FK_Дисциплина и связи с именем FK_Кадровый_состав_): ALTER TABLE Ученый план ADD CONSTRAINT FK_Дисциплина FOREIGN KEY (ID_Дисциплина) REFERRNCES Дисциплины ALTER TABLE Ученый план ADD CONSTRAINT FK_Кадровый_состав FOREIGN KEY (ID_Преподаватель) REFERRNCES Кадровый_состав. С помощью конструкции ADD CONSTRAINT создается поименованное ограничение. Необходимо отметить, что удаление любого ограничения на уровне таблицы происходит только по его имени, поэтому ограничение должно быть поименовано (чтобы его можно было удалить). Добавление значения по умолчанию для столбца Номер_группы: ALTER TABLE Студент ADD CONSTRAINT DEF_Номер_группы DEFAULT 1 FOR Номер_группы. На уровне таблицы будет создано ограничение целостности с именем DEF_Номер_группы. 5. Удаление ограничений.
ALtER TABLE Учебный_план DROP CONStRAINT FK_Дисциплина ALTER TABLE Студент DROP CONSTRAINT DEF_Номер_группы.
Невозможно удалить таблицу, если та нее с помощью ограничения целостности FOREIGN KEY ссылается другая таблица: попытка удаления таблицы «Дисциплины» вызовет сообщение об ошибке, так как на таблицу «Дисциплины» ссылается таблица «Учебный_план»: DROP TABLE Дисциплины.
SQL. Ограничения целостности.
Ограничения целостности Первичный ключ таблицы Если в первичный ключ входит более одного столбца, значения в пределах одного столбца могут дублироваться, но любая совокупность значений всех столбцов первичного ключа при этом должна быть уникальна. Таблица может иметь только один первичный ключ, причем никакой столбец, входящий в первичный ключ, не может хранить значение NULL 1. ID_Дисциплина INTEGER NOT NULL PRIMARY KEY 2. PRIMARY KEY (ID_Дисциплина, ID_Студент) Внешний ключ таблицы Внешний ключ может ссылаться либо на столбец (или столбцы) с ограничением целостности PRIMARY KEY, либо на столбец (столбцы) с ограничением целостности UNIQUE. В зависимую таблицу нельзя вставить строку, если внешний ключ не имеет соответствующего значения в главной таблице, а из главной таблицы нельзя удалить строку, если значение первичного ключа используется в зависимой таблице. Синтаксис: FOREIGN KEY (<список столбцов внешнего ключа>) REFERENCES <имя родительской таблицы> [ [<список столбцов родительской таблицы> ] [ ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}] [ ON UPDATE {NO ACTION | CASCADE | SET DEFAAULT | SET NULL}] Параметры ON DELETE, ON UPDATE задают способы изменения подчиненных записей дочерней таблицы при удалении или изменении поля связи в записи родительской таблицы. NO ACTION – запрещает удаление/изменение родительской записи при наличии подчиненных записей в дочерней таблице; CASCADE – при удалении/изменении записи родительской происходит удаление/изменение на то же значение всех подчиненных записей в дочерне таблице; SET DEFAULT – в поле внешнего ключа записей дочерней таблицы заносится значение этого поля по умолчанию, указанное при определении поля (параметр DEFAULT); SET NULL – в поле внешнего ключа записей дочерней таблицы заносится значение NULL. Пример: ALTER TABLE Сводная_ведомость ADD FOREIGN KEY (ID_План) REFERENCES Учебный_план ON UPDATE CASCADE Определение уникального столбца Ограничение целостности UNIQUE предназначено для того, чтобы обеспечить уникальность значений в столбце (или нескольких столбцах). Допускает существование значения NULL. При этом к значению NULL также предъявляется требование уникальности. Используется, когда столбец не входит в состав первичного ключа, но его значение всегда должно быть уникально. CREATE TABLE Дисциплины (ID_Дисциплина INTEGER NOT NULL PRIMARY KEY, Наименование VARCHAR(20) NOT NULL UNIQUE) Уникальность может быть определена и на уровне таблицы: CREATE TABLE Дисциплины (ID_Дисциплина INTEGER NOT NULL, Наименование VARCHAR(20) NOT NULL, PRIMARY KEY (ID_Дисциплина), UNIQUE (Наименование)) Определение проверочных ограничений Ограничение целостности CHEKR задает диапазон возможных значений для столбца. Преимущество – возможность определения для одного столбца множества правил контроля значений. В основе лежит проверка логического выражения, которое возвращает значение TRUE либо FALSE. TRUE – ограничение выполняется, FALSE – операции изменения или вставки данных отменяются. ((Семестр >=1) OR (Семестр <=10)) На уровне столбца: Семестр INTEGER NOT NULL CHECK ((Семестр >=1) OR (Семестр <=10)) Определение значения по умолчанию Определение для столбца значения по умолчанию гарантирует автоматическую подстановку этого значения, если при вставке новых строк значение для столбца не указано. Основные понятия и компоненты Инструкции и имена Инструкция SQL начинается с команды – ключевого слова, описывающего действие, выполняемое инструкцией. Типичными являются команды CREATE, INSERT, SELECT, DELETE. Следом за командой указывается одно или несколько предложений. Предложение описывает данные, с которыми должна работать инструкция, или уточняет действие, выполняемое инструкцией. Предложения в инструкции делятся на обязательные и необязательные. Каждое предложение начинается с ключевого слова, например, WHERE, FROM, INTO. У каждого объекта в базе данных есть уникальное имя. Имена используются в инструкциях SQL и указывают, над каким объектом базы данных инструкция должна выполнить действие. В рамках одной таблицы не может быть определено двух столбцов с одинаковыми именами, но в разных таблицах это возможно. Типы данных Целые числа (INT, SMALLINT), десятичные числа (NUMERIC, DECIMAL), числа с плавающей запятой (REAL, FLOAT), строки символов постоянной длины (CHAR), строки символов переменной длины (VARCHAR), дата и время (DATETIME,SMALLDATETIME), булевы величины (BIT). Встроенные функции Основной особенностью этих функций является возможность их использования при построении выражений. Встроенные функции, доступные при работе с SQL, можно условно разделить на следующие группы: математические функции; строковые функции; функции для работы с величинами типа дата-время; функции конфигурирования; системные функции; функции системы безопасности; функции управления метаданными; статистические функции. ABS(число), ROUND(число, точность), POWER(число, степень), SQRT(число), SIN(угол), COS(угол) <в радианах>, EXP(число), LOG(число), LOWER(строка), UPPER(строка),STR(число), GETDATE(). Значения NULL SQL поддерживает обработку не определенных (не заданных) данных с помощью использования отсутствующего значения (NULL). Это значение показывает, что в конкретной строке конкретный элемент данных отсутствует. При этом NULL не является значением данных и в связи с этим не имеет определенного типа.