19
Copyright © Avdeyev V.A. 2008 Системы управления техническими данными на предприятии ЛАБОРАТОРНАЯ РАБОТА №7 Операторы языка DDL автор: Авдеев Владимир Александрович

лабораторная работа 7

Embed Size (px)

Citation preview

Page 1: лабораторная работа 7

Copyright © Avdeyev V.A. 2008

Системы управления техническими данными

на предприятииЛАБОРАТОРНАЯ РАБОТА №7

Операторы языка DDL

автор: Авдеев Владимир Александрович

Page 2: лабораторная работа 7

Лабораторная работа №7

Copyright © Avdeyev V.A. 2008

Цель работы:Знакомство с языком SQL и приобретение практических

навыков по использованию операторов CREATE TABLE, ALTER TABLE и DROP

Содержание работы:Выполнение упражнений по использованию операторов

CREATE TABLE, ALTER TABLE и DROP

Лабораторная работа №7

Page 3: лабораторная работа 7

Команда создания таблицы (1/2)

Copyright © Avdeyev V.A. 2008

Таблицы создаются командой CREATE TABLE. Эта команда создает пустую таблицу — таблицу без строк. Значения вводятся с помощью DML команды INSERT. Команда CREATE TABLE в основном определяет имя таблицы, в виде описания набора имен столбцов указанных в определенном порядке. Она также определяет типы данных и размеры столбцов. Каждая таблица должна иметь, по крайней мере, один столбец.

Лабораторная работа №7

Page 4: лабораторная работа 7

Команда создания таблицы (2/2)

Copyright © Avdeyev V.A. 2008

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

Лабораторная работа №7

Page 5: лабораторная работа 7

Индексы в базах данных(1/2)

Copyright © Avdeyev V.A. 2008

Индекс - это упорядоченный (буквенный или числовой) список столбцов или групп столбцов в таблице

Индексы уменьшают время отклика команд, выполнение которых требует считывания содержимого таблицы. Это означает, что все команды SELECT, UPDATE и DELETE будут работать быстрее, если таблица имеет подходящий индекс. Добавление индексов к таблице не ускоряет ввод данных командами INSERT; фактически это дает обратный эффект.

Используя ключевое слово UNIQUE перед ключевым словом INDEX поле станет уникальным индексом:

Лабораторная работа №7

Page 6: лабораторная работа 7

Индексы в базах данных(2/2)

Copyright © Avdeyev V.A. 2008

Главным признаком индекса является его имя, поэтому он может быть удален. Если вы хотите удалить индекс, вы должны знать его имя.

Удаление индекса не воздействует на содержание полей

Лабораторная работа №7

Page 7: лабораторная работа 7

Изменение таблицы

Copyright © Avdeyev V.A. 2008

Команда ALTER TABLE используется, чтобы изменить определение существующей таблицы. Обычно, она добавляет столбцы к таблице. Иногда она может удалять столбцы или изменять их размеры.

Столбец будет добавлен со значением NULL для всех строк таблицы. Новый столбец станет последним по порядку столбцом таблицы

Лабораторная работа №7

Page 8: лабораторная работа 7

Удаление таблиц

Copyright © Avdeyev V.A. 2008

Вы должны быть собственником (т.е. быть создателем) таблицы, чтобы иметь возможность удалить ее.

Лабораторная работа №7

Page 9: лабораторная работа 7

Обеспечение целостности данных: Ограничения

Copyright © Avdeyev V.A. 2008Тема 3 / лекция 8

Ограничения - это часть определения таблицы, которое ограничивает значения, которые вы можете вводить в столбцы. Когда введенная кем-либо команда INSERT или UPDATE нарушает ограничение, СУБД прерывает ее выполнение, производит откат и выдает сообщение об ошибке

Основные типы ограничений :ограничение столбца

применяется только к индивидуальным столбцам

ограничение таблицы

применяется к группам из одного и более столбцов

Page 10: лабораторная работа 7

Объявление ограничений (1/5)

Copyright © Avdeyev V.A. 2008

Вы вставляете ограничение столбца в конец имени столбца после типа данных и перед запятой. Ограничение таблицы помещаются в конец имени таблицы после последнего имени столбца, но перед закрывающей круглой скобкой.

Поля, данные в круглых скобках после ограничения таблицы — это поля к которым применено это ограничение. Ограничение столбца, естественно, применяется к столбцу, после имени столбца, за которым оно следует

Лабораторная работа №7

Page 11: лабораторная работа 7

Объявление ограничений (2/5)

Copyright © Avdeyev V.A. 2008

Использование ограничений для исключения пустых указателей

Вы можете использовать команду CREATE TABLE, чтобы предохранить поле от разрешения в нем пустых (NULL) указателей с помощью ограничения NOT NULL.

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

Вы можете также определить группу полей как уникальную с помощью команды ограничения таблицы — UNIQUE. Объявление группы полей уникальной отличается от объявления уникальными индивидуальных полей, так как это комбинация значений, а не просто индивидуальное значение, которое обязано быть уникальным.

Лабораторная работа №7

Page 12: лабораторная работа 7

Объявление ограничений (3/5)

Copyright © Avdeyev V.A. 2008

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

PRIMARY KEY может ограничивать таблицы или их столбцы. Это ограничение работает так же, как и ограничение UNIQUE, за исключением, когда только один первичный ключ (для любого числа столбцов) может быть определен для данной таблицы.

Лабораторная работа №7

Page 13: лабораторная работа 7

Объявление ограничений (4/5)

Copyright © Avdeyev V.A. 2008

Проверка значений полей

SQL обеспечивает вас ограничением CHECK, которое позволяет вам задать условие, которому должно удовлетворять значение, вводимое в таблицу, прежде чем оно будет принято. Ограничение CHECK состоит из ключевого слова CHECK сопровождаемого предложением предиката, который использует указанное поле. Любая попытка модифицировать или вставить значение поля, которое могло бы сделать этот предикат неверным — будет отклонена.

Лабораторная работа №7

Page 14: лабораторная работа 7

Объявление ограничений (5/5)

Copyright © Avdeyev V.A. 2008

Ограничение FOREIGN KEYSQL поддерживает справочную целостность с ограничением FOREIGN KEY. Эта функция должна ограничивать

значения, которые вы можете ввести в вашу базу данных, чтобы заставить внешний ключ и родительский ключ соответствовать принципу справочной целостности.

Одно из действий ограничения Внешнего Ключа — это отбрасывание значений для полей, ограниченных как внешний ключ, который еще не представлен в родительском ключе. Это ограничение также воздействует на вашу способность изменять или удалять значения родительского ключа

Лабораторная работа №7

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

Page 15: лабораторная работа 7

Управление транзакциями

Copyright © Avdeyev V.A. 2008

ROLLBACK

Когда вы вставляете, обновляете или удаляете данные, СУБД не выполняет эти изменения немедленно. Кажется, что изменения произошли тотчас же; если ввести команду SELECT, они будут отражены в выходных данных. Однако на самом деле изменения хранятся во временной области памяти и будут применены к таблице только в ответ на одну из нескольких специальных команд.

Отмена в СУБД выполняется с помощью команды ROLLBACK (Откат)

Лабораторная работа №7

Page 16: лабораторная работа 7

Управление транзакциями (1/3)

Copyright © Avdeyev V.A. 2008

ROLLBACK

Когда вы вставляете, обновляете или удаляете данные, СУБД не выполняет эти изменения немедленно. Кажется, что изменения произошли тотчас же; если ввести команду SELECT, они будут отражены в выходных данных. Однако на самом деле изменения хранятся во временной области памяти и будут применены к таблице только в ответ на одну из нескольких специальных команд.

Отмена в СУБД выполняется с помощью команды ROLLBACK (Откат)

Лабораторная работа №7

Page 17: лабораторная работа 7

Управление транзакциями (2/3)

Copyright © Avdeyev V.A. 2008

SAVEPOINT имя_точки_сохранения

Возможности команды ROLLBACK не ограничиваются только одним уровнем отмены. В сочетании с другой командой, SAVEPOINT, она позволяет возвращаться в любую из предварительно установленных точек.

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

Лабораторная работа №7

Page 18: лабораторная работа 7

Управление транзакциями (3/3)

Copyright © Avdeyev V.A. 2008

COMMIT

Команда COMMIT (Завершить) приводит к записи всех ваших изменений в таблицу базы данных (что делает невозможным откат), все точки сохранения, установленные кмоменту завершения транзакции, сбрасываются.

Доступ к вашим изменениям станет возможен только после выдачи команды COMMIT. Следовательно, вы можете вставить тысячу новых записей, изменить тысячу существующих, еще тысячу удалить, но ни одно из этих изменений не отразится в операторах SELECT других пользователей, пока вы не завершите свою работу командой COMMIT.

Некоторые команды СУБД выполняют завершение предыдущих команд, не дожидаясь ваших указаний, т.е. неявно. Говоря конкретнее, любые команды DDL (например, CREATE TABLE или DROP TABLE) неявно завершают изменение всех не сохраненных данных перед выполнением своих функций.

Лабораторная работа №7

Page 19: лабораторная работа 7

Упражнения

Copyright © Avdeyev V.A. 2008

Напишите предложение CREATE TABLE, которое бы создало нашу таблицу Оборудования.

Таблица технологических процессов создана. напишите запрос по созданию уникальности по двум полям (если допустить что все текущие значения уникальны).

Создайте таблицу технологических процессов так, чтобы номер цеха каждой новой строки по умолчанию был 7, не разрешались значения NULL в поле оборудование, чтобы поле eq_id являлось внешним ключом.

Создайте первичные ключи для таблиц подразделения и оборудование, для полей dep_id и eq_id соответственно.

Наложите проверку на ввод значений в поле dep_name. Для ввода разрешить: «цех», «участок» и «отдел».

Лабораторная работа №7