
ЛК_3PresentationDDL_Stud_2013_11_28.pptx
- Количество слайдов: 28
Бази даних та інформаційні системи Data Definition Language (DDL)– язык определения данных Лекція 13
План лекции Введение. 1. Создание таблиц (CREATE TABLE) - Типы данных - Обобщенная запись оператора CREATE TABLE - Определения столбца - Ограничения столбца (с использованием имен ограничений и без) - Ограничения таблицы 2. Модификация таблиц (ALTER TABLE) 3. Удаление таблиц (DROP TABLE) Заключение 2 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Цель лекции: 3 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Введение Язык Data Definition Language (DDL) не работает с данными, а работает с объектами базы данных Для создания объектов используется оператор: CREATE Для модификации объектов используется оператор: ALTER Для удаления объектов используется оператор: DROP 4 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE Типы данных 5 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц: CREATE TABLE Приступая к созданию таблицы, необходимо иметь ответы на следующие вопросы: 1. Как будет называться таблица? 2. Как будут называться столбцы (поля) таблицы? 3. Какие типы данных будут закреплены за каждым столбцом? 4. Какой размер памяти должен быть выделен для хранения каждого столбца? 5. Какие столбцы таблицы требуют обязательного ввода? 6. Из каких столбцов будет состоять первичный ключ? 7. Какие колонки станут внешними ключами? 8. Какие типы ограничений должны использоваться? Имена таблиц 1. Имя должно начинаться с буквы, a-z 2. Могут содержать буквы, цифры и знак подчеркивания 3. Длина имени не должна превышать 18 знаков (стандарт SQL) 4. В базе данных не должно быть объектов с одинаковыми именами 5. В качестве имен не должны быть использованы зарезервированные слова 6 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Запись SQL - операторов Язык, в терминах которого дается описание языка SQL, называется метаязыком. Синтаксические определения обычно задают с помощью специальной металингвистической символики, называемой Бэкуса-Наура формулами (БНФ). Прописные буквы используются для записи зарезервированных слов. Строчные буквы употребляются для записи слов, определяемых пользователем. Применяемые в нотации БНФ символы и их обозначения показаны в таблице: Символ : : = | {…} […] Обозначение Равно по определению Необходимость выбора одного из нескольких приведенных значений Обязательный выбор некоторой конструкции из списка Необязательная возможность повторения конструкции от нуля до нескольких раз. Отдельные вхождения элемента разделяются запятыми Необязательная возможность повторения конструкции от нуля до нескольких [ …n] раз. Отдельные вхождения элемента разделяются пробелами В < …> находится название синтаксического блока. Данное обозначение <синтаксический блок> используется для группировки или маркировки частей синтаксиса [, …n] 7 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц: CREATE TABLE Для создания объектов используется оператор CREATE Создание БД: CREATE DATABASE Создание таблицы CREATE TABLE Обобщённая запись оператора CREATE TABLE имя_таблицы ( {<определение столбца>} [, …n] [ <ограничения таблицы> [, …n] ]) Определение столбца содержит: имя столбца; тип данных или AS <выражения для вычисления>; наличие счетчика (IDENTITY (SQL Server) или COUNTER (Access)); обязательность значений (NULL | NOT NULL ); ограничения столбца: значение по умолчанию (DEFAULT); уникальность значений (PRIMARY KEY | UNIQUE ) (целостность сущностей) ссылающееся значение (REFERENCES) (ссылочная целостность) ограничение, заданное логическим выражением (CHECK) (ограничение домена, корпоративные ограничения) 8 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE <определение столбца> : : = {имя_столбца тип_данных} [ IDENTITY [ (начало, приращение) ] [ NULL | NOT NULL ] ] [<ограничение_столбца> [ …n] ] <ограничение_столбца> : : = [ CONSTRAINT имя_ограничения ] { [DEFAULT <выражение_константа>] (Access не поддерживает) | [PRIMARY KEY | UNIQUE ] | [ [ FOREING KEY ] REFERENCES имя_род_таблицы [имя_столбца_род_таблицы] [ ON UPDATE {CASCADE | SET NULL | SET DEFAULT | NO ACTION} ] [ ON DELETE {CASCADE | SET NULL | SET DEFAULT | NO ACTION} ] | CHECK (<логическое выражение>) } 9 ХНУРЕ кафедра Інформатики доц. Яковлева О. В. (Access не поддерживает)
Создание таблиц : CREATE TABLE Рисунок 1. 1 – Схема данных (Access) БД «Торговля» Пример 1. 1 Создание таблицы Товар без использования ограничений CREATE TABLE Товар (Код. Товара INT IDENTITY(1, 1), Название VARCHAR(50), Тип VARCHAR(30), Сорт VARCHAR(20), Цена MONEY, Город. Товара INT) 10 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE Рисунок 1. 1 – Схема данных (Access) БД «Торговля» Пример 2. 1 Создание таблицы Город с использованием ограничений столбца, но без использования названий ограничений (CONSTRAINT) CREATE TABLE Город (Код. Города INT PRIMARY KEY, Название VARCHAR(40) NOT NULL); Пример 1. 2 (MS SQL Server) Создание таблицы Товар с использованием ограничений столбца, но без использования названий ограничений (CONSTRAINT) CREATE TABLE Товар (Код. Товара INT IDENTITY(1, 1) PRIMARY KEY, Название VARCHAR(50) UNIQUE, Тип VARCHAR(30) NOT NULL DEFAULT 'мебель', Сорт VARCHAR(20) CHECK (Сорт IN (‘высший', ‘первый', ‘второй')), Цена MONEY, Город. Товара INT REFERENCES Город (Код. Города) ON UPDATE CASCADE ON DELETE CASCADE) 11 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE Рисунок 1. 1 – Схема данных (Access) БД «Торговля» Пример 1. 3 (MS Access) Создание таблицы Товар с использованием ограничений столбца, но без использования названий ограничений (CONSTRAINT) CREATE TABLE Товар (Код. Товара COUNTER PRIMARY KEY, Название VARCHAR(50) UNIQUE, Тип VARCHAR(30) NOT NULL , Сорт VARCHAR(20), Цена MONEY, Город. Товара INT REFERENCES Город (Код. Города)) Замечание! Для задания в MS Access режима каскадного обносления/удаления нажмите Ctrl+G, в появившемся окне "Immediate window" выполните: Current. Project. Connection. Execute “CREATE TABLE Товар (Код. Товара COUNTER PRIMARY KEY, Название VARCHAR(50) UNIQUE, Тип VARCHAR(30) NOT NULL, Сорт VARCHAR(20), Цена MONEY, Город. Товара INT REFERENCES Город (Код. Города) ON UPDATE CASCADE ON DELETE CASCADE)” 12 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE Пояснения: (IDENTITY (SQL Server) или COUNTER (Access)) - для таблицы может быть только один столбец-счетчик; - если шаг и приращение не указаны, то по умолчанию они равны 1 NULL | NOT NULL - по умолчанию используется NULL; DEFAULT <выражение_константа> - используется для задания значения по умолчанию, если значение NULL запрещено; PRIMARY KEY - предложение PRIMARY KEY в пределах таблицы может использоваться только один - раз, не может принимать значение NULL; СУБД автоматически создает уникальный индекс для столбцов, входящих в первичный ключ UNIQUE - используется для обеспечения уникальности значений (альтернативных ключей), - рекомендуется использовать с NOT NULL ; значение NULL может использоваться для столбца с UNIQUE, но только 1 раз) 13 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE Пояснения: [ FOREING KEY ] REFERENCES имя_род_таблицы [имя_столбца_род_таблицы] - СУБД отклонит выполнение операторов INSERT или UPDATE если значение внешнего - ключа не соответствует значению потенциального ключа родительской таблицы предложение [ FOREING KEY ] REFERENCES в пределах таблицы может использоваться произвольное количество раз; CHECK (<логическое выражение>) - допускается применение нескольких ограничений к одному и тому же столбцу; - используется практически со всеми операторами, которые применяются для задания условий в строке WHERE оператора SELECT: Сравнение = , <, >, <=, >=, <> ; Диапазон - BETWEEN / NOT BETWEEN; Принадлежность множеству IN/NOT IN; Соответствие шаблону LIKE / NOT LIKE; - подзапросы в CHECK не применяются. 14 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE ВЫЧИСЛЯЕМЫЕ ПОЛЯ (Access не поддерживает) <определение столбца> : : = {имя_столбца <выражение>} <Выражение> задает значение для вычисляемого столбца; Вычисляемые столбцы - это виртуальные столбцы, т. е. физически в таблице они не хранятся и вычисляются с использованием значений столбцов той же таблицы; В выражении для вычисляемого столбца могут присутствовать имена обычных столбцов, константы и функции, связанные одним или несколькими операторами. Подзапросы в таком выражении участвовать не могут. Ограничения использования вычисляемых полей: не могут входить во внешний ключ; для них не используются значения по умолчанию; не могут участвовать в операциях INSERT и UPDATE. Пример. create table t 1 (col 1 int primary key, col 2 int, col 3 as col 1+col 2); (Access вычисляемые поля не поддерживает) Нельзя! Update t 1 set col 3= col 3*2 where col 1=1; 15 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE Рисунок 1. 1 – Схема данных (Access) БД «Торговля» Пример 3. 1 (MS SQL Server) Создание таблицы Клиент с использованием ограничений столбца, но без использования названий ограничений (CONSTRAINT) 16 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE Именованные ограничения CONSTRAINT Фраза CONSTRAINT позволяет задать уникальное имя ограничению в пределах БД, что позволит впоследствии отменить то или иное ограничение с помощью оператора ALTER TABLE Пример 3. 2 (MS SQL Server) Создание таблицы Клиент с использованием именованных ограничений столбца(CONSTRAINT) CREATE TABLE Клиент (Код. Клиента INT IDENTITY(1, 1) CONSTRAINT PK_Client PRIMARY KEY, Фамилия VARCHAR(50) NOT NULL, Имя VARCHAR(30) NOT NULL, Отчество VARCHAR(20), Фирма VARCHAR(20), Город. Клиента INT CONSTRAINT FK_Client. City REFERENCES Город (Код. Города) ON UPDATE CASCADE ON DELETE CASCADE, Телефон CHAR(10)); или с использованием слова FOREIGN KEY (Access не поддерживает) Город. Клиента INT CONSTRAINT FOREIGN KEY FK_Client. City REFERENCES Город (Код. Города) ON UPDATE CASCADE ON DELETE CASCADE или без указание поля ПК, на кот. идет ссылка) Город. Клиента INT CONSTRAINT FOREIGN KEY FK_Client. City REFERENCES Город ON UPDATE CASCADE ON DELETE CASCADE 17 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE. Именованные ограничения CONSTRAINT Рисунок 1. 1 – Схема данных (Access) БД «Торговля» Пример 2. 2 Создание таблицы Город с использованием CONSTRAINT Пример 1. 4 (MS SQL Server) Создание таблицы Товар с использованием CONSTRAINT CREATE TABLE Товар (Код. Товара INT IDENTITY(1, 1) CONSTRAINT PK_Tovar PRIMARY KEY, Название VARCHAR(50) CONSTRAINT U_Tovar. Name UNIQUE, Тип VARCHAR(30) NOT NULL CONSTRAINT D_Type DEFAULT 'мебель', Сорт VARCHAR(20) CONSTRAINT Ch_Sort CHECK (Сорт IN (‘высший', ‘первый', ‘второй')), Цена MONEY, Город. Товара INT CONSTRAINT FK_Tovat. Coty REFERENCES Город (Код. Города) ON UPDATE CASCADE ON DELETE CASCADE); 18 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц: CREATE TABLE ОГРАНИЧЕНИЯ ТАБЛИЦЫ CREATE TABLE имя_таблицы ( {<определение столбца>} [, …n] [ <ограничения таблицы> [, …n] ]) Определение таблицы содержит ограничения, которые накладываются сразу на несколько столбцов: уникальность значений (PRIMARY KEY | UNIQUE ) (целостность сущностей) ссылающееся значение (REFERENCES) (ссылочная целостность) ограничение, заданное логическим выражением (CHECK) (ограничение домена, корпоративные ограничения) <ограничение_таблицы> : : = [ CONSTRAINT имя_ограничения ] {[PRIMARY KEY | UNIQUE (имя_столбца [, …n])] | [ FOREING KEY (имя_столбца [, …n]) REFERENCES имя_род_таблицы [(имя_столбца_род_таблицы [, …n])] [ ON UPDATE {CASCADE | SET NULL | SET DEFAULT | NO ACTION} ] [ ON DELETE {CASCADE | SET NULL | SET DEFAULT | NO ACTION} ] | CHECK (<логическое выражение>) } 19 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE. Именованные ограничения CONSTRAINT Рисунок 1. 1 – Схема данных (Access) БД «Торговля» Пример 2. 3 Создание таблицы Город с использованием ограничений на таблицу (без CONSTRAINT) CREATE TABLE Город (Код. Города INT, Название VARCHAR(40) NOT NULL, PRIMARY KEY (Код. Города) ); Пример 2. 4 Создание таблицы Город с использованием ограничений на таблицу (с CONSTRAINT) 20 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE. Именованные ограничения CONSTRAINT Рисунок 1. 1 – Схема данных (Access) БД «Торговля» Пример 4 (MS SQL Server) Создание таблицы Сделка (с CONSTRAINT) CREATE TABLE Сделка (Дата Date, Код. Товара INT CONSTRAINT FK_Sdelka. Tovat REFERENCES Товар(Код. Товара), Код. Клиента INT CONSTRAINT FK_Sdelka. Client REFERENCES Клиент(Код. Клиента), Кол_во INT, CONSTRAINT PK_Sdelka PRIMARY KEY(Код. Товара, Код. Клиента, Дата)); 21 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : DROP TABLE. Удаление таблицы с заданным именем. DROP TABLE имя_таблицы; 22 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : ALTER TABLE. Применяется для модификации структуры таблицы. Пусть существует таблица Test. My, заданная скриптом CREATE TABLE Test. My (сol 1 INT NOT NULL, сol 2 INT); Ниже приведены примеры использования оператора ALTER TABLE Добавление колонки ALTER TABLE Test. My ADD COLUMN col 3 INT; // Access ALTER TABLE Test. My ADD col 3 INT; //SQL Server, Access ALTER TABLE Test. My ADD col 3 INT, col 4 INT; //SQL Server, Access ALTER TABLE Test. My ADD col 3 INT, col 4 as col 3*0. 1; // SQL Server Access вычисляемые поля (col 4 as col 3*0. 1) не поддерживает Удаление колонки ALTER TABLE Test. My DROP COLUMN col 3; //SQL Server, Access ALTER TABLE Test. My DROP col 3; //Access Редактирование свойств поля(SQL Server, Access) ALTER TABLE Test. My ALTER COLUMN col 3 VARCHAR(10) NOT NULL; //SQL Server, Access ALTER TABLE Test. My ALTER col 3 VARCHAR(10) NOT NULL; // Access 23 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : ALTER TABLE. Добавление ограничения (SQL Server, Access) ALTER TABLE Test. My ADD CONSTRAINT PK_Test. My PRIMARY KEY (сol 1); // (если сol 1 NOT NULL) ALTER TABLE Test. My ADD CONSTRAINT FK_Test. My_TM FOREIGN KEY (col 2) REFERENCES Test. My 2(col 2); ALTER TABLE Test. My ADD CONSTRAINT CH_Test. My CHECK (col 3 IN(‘первый’, ‘второй’, ‘третий’)); // SQL Server Добавление поля вместе с ограничением (SQL Server, Access) ALTER TABLE Test. My ADD col 2 VARCHAR(20) CONSTRAINT c_col 2 Unique NOT NULL; Удаление ограничения (SQL Server, Access) ALTER TABLE Test. My DROP CONSTRAINT c_col 2; 24 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE (примеры) Рисунок 1. 1 – Схема БД «Аренда объектов недвижимости» 25 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE (примеры) Рисунок 1. 2 – Схема БД «Гонки» 26 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Создание таблиц : CREATE TABLE (примеры) Рисунок 1. 3 – Схема БД «Туристическая фирма» 27 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
Вопросы 28 ХНУРЕ кафедра Інформатики доц. Яковлева О. В.
ЛК_3PresentationDDL_Stud_2013_11_28.pptx