SlideShare a Scribd company logo
Системы управления
техническими данными
на предприятии
ЛАБОРАТОРНАЯ РАБОТА №7
Операторы языка DDL

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

Copyright © Avdeyev V.A. 2008
Лабораторная работа №7
Цель работы:
Знакомство с языком SQL и приобретение практических
навыков по использованию операторов CREATE TABLE,
ALTER TABLE и DROP
Содержание работы:
Выполнение упражнений по использованию операторов
CREATE TABLE, ALTER TABLE и DROP

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

Copyright © Avdeyev V.A. 2008
Команда создания таблицы (1/2)
Таблицы создаются командой CREATE TABLE. Эта команда
создает пустую таблицу — таблицу без строк. Значения
вводятся с помощью DML команды INSERT. Команда
CREATE TABLE в основном определяет имя таблицы, в виде
описания набора имен столбцов указанных в определенном
порядке. Она также определяет типы данных и размеры
столбцов. Каждая таблица должна иметь, по крайней мере,
один столбец.

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

Copyright © Avdeyev V.A. 2008
Команда создания таблицы (2/2)
Таблицы принадлежат пользователю, который их создал, и
имена всех таблиц, принадлежащих данному пользователю
должны отличаться друга от друга, как и имена всех
столбцов внутри данной таблицы. Отдельные таблицы
могут использовать одинаковые имена столбцов, даже если
они принадлежат одному и тому же пользователю

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

Copyright © Avdeyev V.A. 2008
Индексы в базах данных(1/2)
Индекс - это упорядоченный (буквенный или числовой) список
столбцов или групп столбцов в таблице
Индексы уменьшают время отклика команд, выполнение которых требует
считывания содержимого таблицы. Это означает, что все команды
SELECT, UPDATE и DELETE будут работать быстрее, если таблица имеет
подходящий индекс. Добавление индексов к таблице не ускоряет ввод данных
командами INSERT; фактически это дает обратный эффект.

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

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

Copyright © Avdeyev V.A. 2008
Индексы в базах данных(2/2)
Главным признаком индекса является его имя, поэтому он может
быть удален. Если вы хотите удалить индекс, вы должны знать
его имя.

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

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

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

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

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

Copyright © Avdeyev V.A. 2008
Удаление таблиц
Вы должны быть собственником (т.е. быть
создателем) таблицы, чтобы иметь возможность
удалить ее.

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

Copyright © Avdeyev V.A. 2008
Обеспечение целостности данных: Ограничения
Ограничения - это часть определения таблицы, которое
ограничивает значения, которые вы можете вводить в столбцы.
Когда введенная кем-либо команда INSERT или UPDATE
нарушает ограничение, СУБД прерывает ее выполнение,
производит откат и выдает сообщение об ошибке
Основные типы ограничений :
ограничение столбца

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

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

Тема 3 / лекция 8

Copyright © Avdeyev V.A. 2008
Объявление ограничений (1/5)
Вы вставляете ограничение столбца в конец имени столбца после
типа данных и перед запятой. Ограничение таблицы помещаются
в конец имени таблицы после последнего имени столбца, но перед
закрывающей круглой скобкой.

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

Copyright © Avdeyev V.A. 2008
Объявление ограничений (2/5)
Использование ограничений для исключения пустых указателей
Вы можете использовать команду CREATE TABLE, чтобы
предохранить поле от разрешения в нем пустых (NULL) указателей с
помощью ограничения NOT NULL.

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

Copyright © Avdeyev V.A. 2008
Объявление ограничений (3/5)
Ограничение первичных ключей
PRIMARY KEY может ограничивать таблицы или их столбцы. Это
ограничение работает так же, как и ограничение UNIQUE, за
исключением, когда только один первичный ключ (для любого числа
столбцов) может быть определен для данной таблицы.

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

Copyright © Avdeyev V.A. 2008
Объявление ограничений (4/5)
Проверка значений полей
SQL обеспечивает вас ограничением CHECK, которое позволяет вам
задать условие, которому должно удовлетворять значение, вводимое в
таблицу, прежде чем оно будет принято. Ограничение CHECK состоит
из ключевого слова CHECK сопровождаемого предложением предиката,
который использует указанное поле. Любая попытка модифицировать
или вставить значение поля, которое могло бы сделать этот предикат
неверным — будет отклонена.

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

Copyright © Avdeyev V.A. 2008
Объявление ограничений (5/5)
Ограничение FOREIGN KEY
SQL поддерживает справочную целостность с ограничением FOREIGN KEY.
Эта функция должна ограничивать значения, которые вы можете ввести в
вашу базу данных, чтобы заставить внешний ключ и родительский ключ
соответствовать принципу справочной целостности.
Одно из действий ограничения Внешнего Ключа — это отбрасывание значений
для полей, ограниченных как внешний ключ, который еще не представлен в
родительском ключе. Это ограничение также воздействует на вашу
способность изменять или удалять значения родительского ключа

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

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

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

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

Copyright © Avdeyev V.A. 2008
Управление транзакциями (1/3)
Когда вы вставляете, обновляете или удаляете данные, СУБД не
выполняет эти изменения немедленно. Кажется, что изменения
произошли тотчас же; если ввести команду SELECT, они будут
отражены в выходных данных. Однако на самом деле изменения
хранятся во временной области памяти и будут применены к таблице
только в ответ на одну из нескольких специальных команд.
ROLLBACK

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

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

Copyright © Avdeyev V.A. 2008
Управление транзакциями (2/3)
Возможности команды ROLLBACK не ограничиваются только одним
уровнем отмены. В сочетании с другой командой, SAVEPOINT, она
позволяет возвращаться в любую из предварительно установленных
точек.
SAVEPOINT

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

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

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

Copyright © Avdeyev V.A. 2008
Управление транзакциями (3/3)
Команда COMMIT (Завершить) приводит к записи всех ваших
изменений в таблицу базы данных (что делает невозможным откат),
все точки сохранения, установленные к
моменту завершения транзакции, сбрасываются.
COMMIT
Доступ к вашим изменениям станет возможен только после выдачи команды
COMMIT. Следовательно, вы можете вставить тысячу новых записей,
изменить тысячу существующих, еще тысячу удалить, но ни одно из этих
изменений не отразится в операторах SELECT других пользователей, пока вы
не завершите свою работу командой COMMIT.
Некоторые команды СУБД выполняют завершение предыдущих команд, не
дожидаясь ваших указаний, т.е. неявно. Говоря конкретнее, любые команды
DDL (например, CREATE TABLE или DROP TABLE) неявно завершают
изменение всех не сохраненных данных перед выполнением своих функций.
Лабораторная работа №7

Copyright © Avdeyev V.A. 2008
Упражнения
Напишите предложение CREATE TABLE, которое бы создало

нашу таблицу Оборудования.
Таблица технологических процессов создана. напишите запрос
по созданию уникальности по двум полям (если допустить что
все текущие значения уникальны).
Создайте таблицу технологических процессов так, чтобы
номер цеха каждой новой строки по умолчанию был 7, не
разрешались значения NULL в поле оборудование, чтобы поле
eq_id являлось внешним ключом.
Создайте первичные ключи для таблиц подразделения и
оборудование, для полей dep_id и eq_id соответственно.
Наложите проверку на ввод значений в поле dep_name. Для
ввода разрешить: «цех», «участок» и «отдел».
Лабораторная работа №7

Copyright © Avdeyev V.A. 2008

More Related Content

What's hot

Управление Данными. Лекция 8
Управление Данными. Лекция 8Управление Данными. Лекция 8
Управление Данными. Лекция 8
Dmitriy Krukov
 
0041
00410041
0041JIuc
 
презентация л.р. №5
презентация л.р. №5презентация л.р. №5
презентация л.р. №5student_kai
 
ВНЕСЕНИЕ ИЗМЕНЕНИЙ В АВТОМАТНЫЕ ПРОГРАММЫ
ВНЕСЕНИЕ ИЗМЕНЕНИЙ В АВТОМАТНЫЕ ПРОГРАММЫВНЕСЕНИЕ ИЗМЕНЕНИЙ В АВТОМАТНЫЕ ПРОГРАММЫ
ВНЕСЕНИЕ ИЗМЕНЕНИЙ В АВТОМАТНЫЕ ПРОГРАММЫ
ITMO University
 
презентация лекции №16
презентация лекции №16презентация лекции №16
презентация лекции №16student_kai
 
таблицы лаб 4
таблицы лаб 4таблицы лаб 4
таблицы лаб 4
Vladimir Burdaev
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Badoo Development
 
лабораторная работа №2
лабораторная работа №2лабораторная работа №2
лабораторная работа №2student_kai
 
Основные команды языка SQL
Основные команды языка SQLОсновные команды языка SQL
Основные команды языка SQL
Aimurat Adilbekov
 
лабораторная работа 3
лабораторная работа 3лабораторная работа 3
лабораторная работа 3student_kai
 
презентация лекции №5
презентация лекции №5презентация лекции №5
презентация лекции №5student_kai
 

What's hot (12)

Управление Данными. Лекция 8
Управление Данными. Лекция 8Управление Данными. Лекция 8
Управление Данными. Лекция 8
 
0041
00410041
0041
 
презентация л.р. №5
презентация л.р. №5презентация л.р. №5
презентация л.р. №5
 
ВНЕСЕНИЕ ИЗМЕНЕНИЙ В АВТОМАТНЫЕ ПРОГРАММЫ
ВНЕСЕНИЕ ИЗМЕНЕНИЙ В АВТОМАТНЫЕ ПРОГРАММЫВНЕСЕНИЕ ИЗМЕНЕНИЙ В АВТОМАТНЫЕ ПРОГРАММЫ
ВНЕСЕНИЕ ИЗМЕНЕНИЙ В АВТОМАТНЫЕ ПРОГРАММЫ
 
презентация лекции №16
презентация лекции №16презентация лекции №16
презентация лекции №16
 
My sql 0
My sql 0My sql 0
My sql 0
 
таблицы лаб 4
таблицы лаб 4таблицы лаб 4
таблицы лаб 4
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
 
лабораторная работа №2
лабораторная работа №2лабораторная работа №2
лабораторная работа №2
 
Основные команды языка SQL
Основные команды языка SQLОсновные команды языка SQL
Основные команды языка SQL
 
лабораторная работа 3
лабораторная работа 3лабораторная работа 3
лабораторная работа 3
 
презентация лекции №5
презентация лекции №5презентация лекции №5
презентация лекции №5
 

Viewers also liked

лаб. работа №2
лаб. работа №2лаб. работа №2
лаб. работа №2student_kai
 
презентация л.р. №3
презентация л.р. №3презентация л.р. №3
презентация л.р. №3student_kai
 
слайд №7б
слайд №7бслайд №7б
слайд №7бstudent_kai
 
лекция №17
лекция №17лекция №17
лекция №17student_kai
 
презентация лекции №10
презентация лекции №10презентация лекции №10
презентация лекции №10student_kai
 
занятие7. теорема об изменении кинетической энергии материальной системы
занятие7. теорема об изменении кинетической энергии материальной системызанятие7. теорема об изменении кинетической энергии материальной системы
занятие7. теорема об изменении кинетической энергии материальной системыstudent_kai
 
презентация л.р. №13
презентация л.р. №13презентация л.р. №13
презентация л.р. №13student_kai
 
презентация эуп9
презентация эуп9презентация эуп9
презентация эуп9student_kai
 
лекция №2
лекция №2лекция №2
лекция №2student_kai
 
лекция №8
лекция №8лекция №8
лекция №8student_kai
 
кин лекция 17
кин лекция 17кин лекция 17
кин лекция 17student_kai
 
лабораторная работа 6
лабораторная работа 6лабораторная работа 6
лабораторная работа 6student_kai
 
занятие2. скорость и ускорение движущейся точки
занятие2. скорость и ускорение движущейся точкизанятие2. скорость и ускорение движущейся точки
занятие2. скорость и ускорение движущейся точкиstudent_kai
 

Viewers also liked (20)

лекция30
лекция30лекция30
лекция30
 
лаб. работа №2
лаб. работа №2лаб. работа №2
лаб. работа №2
 
презентация л.р. №3
презентация л.р. №3презентация л.р. №3
презентация л.р. №3
 
слайд №7б
слайд №7бслайд №7б
слайд №7б
 
лекция №17
лекция №17лекция №17
лекция №17
 
лекция 11
лекция 11лекция 11
лекция 11
 
презентация лекции №10
презентация лекции №10презентация лекции №10
презентация лекции №10
 
занятие7. теорема об изменении кинетической энергии материальной системы
занятие7. теорема об изменении кинетической энергии материальной системызанятие7. теорема об изменении кинетической энергии материальной системы
занятие7. теорема об изменении кинетической энергии материальной системы
 
презентация л.р. №13
презентация л.р. №13презентация л.р. №13
презентация л.р. №13
 
презентация эуп9
презентация эуп9презентация эуп9
презентация эуп9
 
лекция №2
лекция №2лекция №2
лекция №2
 
лекция №8
лекция №8лекция №8
лекция №8
 
лаб1
лаб1лаб1
лаб1
 
лекция 2
лекция 2лекция 2
лекция 2
 
лекция 12
лекция 12лекция 12
лекция 12
 
кин лекция 17
кин лекция 17кин лекция 17
кин лекция 17
 
лабораторная работа 6
лабораторная работа 6лабораторная работа 6
лабораторная работа 6
 
занятие2. скорость и ускорение движущейся точки
занятие2. скорость и ускорение движущейся точкизанятие2. скорость и ускорение движущейся точки
занятие2. скорость и ускорение движущейся точки
 
лаб2
лаб2лаб2
лаб2
 
лекция 20
лекция 20лекция 20
лекция 20
 

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

0044
00440044
0044JIuc
 
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
mikhaelsmirnov
 
Управление Данными. Лекция 7
Управление Данными. Лекция 7Управление Данными. Лекция 7
Управление Данными. Лекция 7
Dmitriy Krukov
 
0039
00390039
0039JIuc
 
0040
00400040
0040JIuc
 
Access 04
Access 04Access 04
Access 04
Alexander Babich
 
Управление данными (sql)
Управление данными (sql)Управление данными (sql)
Базы данных лекция №7
Базы данных лекция №7Базы данных лекция №7
Базы данных лекция №7
Vitaliy Pak
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Tanya Denisyuk
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьТо, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
php-user-group-minsk
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...Ontico
 
16 - Базы данных. Правила целостности
16 - Базы данных. Правила целостности16 - Базы данных. Правила целостности
16 - Базы данных. Правила целостности
Roman Brovko
 

Similar to лабораторная работа 7 (16)

0044
00440044
0044
 
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
 
Управление Данными. Лекция 7
Управление Данными. Лекция 7Управление Данными. Лекция 7
Управление Данными. Лекция 7
 
0039
00390039
0039
 
0040
00400040
0040
 
Access 04
Access 04Access 04
Access 04
 
лек13 5
лек13 5лек13 5
лек13 5
 
Управление данными (sql)
Управление данными (sql)Управление данными (sql)
Управление данными (sql)
 
Базы данных лекция №7
Базы данных лекция №7Базы данных лекция №7
Базы данных лекция №7
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
лабраб 7
лабраб 7лабраб 7
лабраб 7
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьТо, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
 
16 - Базы данных. Правила целостности
16 - Базы данных. Правила целостности16 - Базы данных. Правила целостности
16 - Базы данных. Правила целостности
 

More from student_kai

презентация
презентацияпрезентация
презентацияstudent_kai
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкетаstudent_kai
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке Cstudent_kai
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работыstudent_kai
 
лекция№34
лекция№34лекция№34
лекция№34student_kai
 
лекция№32
лекция№32лекция№32
лекция№32student_kai
 
лекция№33
лекция№33лекция№33
лекция№33student_kai
 
лекция№31
лекция№31лекция№31
лекция№31student_kai
 
лекция№30
лекция№30лекция№30
лекция№30student_kai
 
лекция№29
лекция№29лекция№29
лекция№29student_kai
 
лекция№28
лекция№28лекция№28
лекция№28student_kai
 
лекция№27
лекция№27лекция№27
лекция№27student_kai
 
лекция№26
лекция№26лекция№26
лекция№26student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№24
лекция№24лекция№24
лекция№24student_kai
 
лекция№23
лекция№23лекция№23
лекция№23student_kai
 
лекция№22
лекция№22лекция№22
лекция№22student_kai
 
лекция№21
лекция№21лекция№21
лекция№21student_kai
 
лекция№20
лекция№20лекция№20
лекция№20student_kai
 

More from student_kai (20)

презентация
презентацияпрезентация
презентация
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкета
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке C
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работы
 
лекция№34
лекция№34лекция№34
лекция№34
 
лекция№32
лекция№32лекция№32
лекция№32
 
лекция№33
лекция№33лекция№33
лекция№33
 
лекция№31
лекция№31лекция№31
лекция№31
 
лекция№30
лекция№30лекция№30
лекция№30
 
лекция№29
лекция№29лекция№29
лекция№29
 
лекция№28
лекция№28лекция№28
лекция№28
 
лекция№27
лекция№27лекция№27
лекция№27
 
лекция№26
лекция№26лекция№26
лекция№26
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№24
лекция№24лекция№24
лекция№24
 
лекция№23
лекция№23лекция№23
лекция№23
 
лекция№22
лекция№22лекция№22
лекция№22
 
лекция№21
лекция№21лекция№21
лекция№21
 
лекция№20
лекция№20лекция№20
лекция№20
 

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

  • 1. Системы управления техническими данными на предприятии ЛАБОРАТОРНАЯ РАБОТА №7 Операторы языка DDL автор: Авдеев Владимир Александрович Copyright © Avdeyev V.A. 2008
  • 2. Лабораторная работа №7 Цель работы: Знакомство с языком SQL и приобретение практических навыков по использованию операторов CREATE TABLE, ALTER TABLE и DROP Содержание работы: Выполнение упражнений по использованию операторов CREATE TABLE, ALTER TABLE и DROP Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 3. Команда создания таблицы (1/2) Таблицы создаются командой CREATE TABLE. Эта команда создает пустую таблицу — таблицу без строк. Значения вводятся с помощью DML команды INSERT. Команда CREATE TABLE в основном определяет имя таблицы, в виде описания набора имен столбцов указанных в определенном порядке. Она также определяет типы данных и размеры столбцов. Каждая таблица должна иметь, по крайней мере, один столбец. Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 4. Команда создания таблицы (2/2) Таблицы принадлежат пользователю, который их создал, и имена всех таблиц, принадлежащих данному пользователю должны отличаться друга от друга, как и имена всех столбцов внутри данной таблицы. Отдельные таблицы могут использовать одинаковые имена столбцов, даже если они принадлежат одному и тому же пользователю Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 5. Индексы в базах данных(1/2) Индекс - это упорядоченный (буквенный или числовой) список столбцов или групп столбцов в таблице Индексы уменьшают время отклика команд, выполнение которых требует считывания содержимого таблицы. Это означает, что все команды SELECT, UPDATE и DELETE будут работать быстрее, если таблица имеет подходящий индекс. Добавление индексов к таблице не ускоряет ввод данных командами INSERT; фактически это дает обратный эффект. Используя ключевое слово UNIQUE перед ключевым словом INDEX поле станет уникальным индексом: Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 6. Индексы в базах данных(2/2) Главным признаком индекса является его имя, поэтому он может быть удален. Если вы хотите удалить индекс, вы должны знать его имя. Удаление индекса не воздействует на содержание полей Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 7. Изменение таблицы Команда ALTER TABLE используется, чтобы изменить определение существующей таблицы. Обычно, она добавляет столбцы к таблице. Иногда она может удалять столбцы или изменять их размеры. Столбец будет добавлен со значением NULL для всех строк таблицы. Новый столбец станет последним по порядку столбцом таблицы Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 8. Удаление таблиц Вы должны быть собственником (т.е. быть создателем) таблицы, чтобы иметь возможность удалить ее. Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 9. Обеспечение целостности данных: Ограничения Ограничения - это часть определения таблицы, которое ограничивает значения, которые вы можете вводить в столбцы. Когда введенная кем-либо команда INSERT или UPDATE нарушает ограничение, СУБД прерывает ее выполнение, производит откат и выдает сообщение об ошибке Основные типы ограничений : ограничение столбца применяется только к индивидуальным столбцам ограничение таблицы применяется к группам из одного и более столбцов Тема 3 / лекция 8 Copyright © Avdeyev V.A. 2008
  • 10. Объявление ограничений (1/5) Вы вставляете ограничение столбца в конец имени столбца после типа данных и перед запятой. Ограничение таблицы помещаются в конец имени таблицы после последнего имени столбца, но перед закрывающей круглой скобкой. Поля, данные в круглых скобках после ограничения таблицы — это поля к которым применено это ограничение. Ограничение столбца, естественно, применяется к столбцу, после имени столбца, за которым оно следует Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 11. Объявление ограничений (2/5) Использование ограничений для исключения пустых указателей Вы можете использовать команду CREATE TABLE, чтобы предохранить поле от разрешения в нем пустых (NULL) указателей с помощью ограничения NOT NULL. Уникальность как ограничение столбца Вы можете также определить группу полей как уникальную с помощью команды ограничения таблицы — UNIQUE. Объявление группы полей уникальной отличается от объявления уникальными индивидуальных полей, так как это комбинация значений, а не просто индивидуальное значение, которое обязано быть уникальным. Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 12. Объявление ограничений (3/5) Ограничение первичных ключей PRIMARY KEY может ограничивать таблицы или их столбцы. Это ограничение работает так же, как и ограничение UNIQUE, за исключением, когда только один первичный ключ (для любого числа столбцов) может быть определен для данной таблицы. Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 13. Объявление ограничений (4/5) Проверка значений полей SQL обеспечивает вас ограничением CHECK, которое позволяет вам задать условие, которому должно удовлетворять значение, вводимое в таблицу, прежде чем оно будет принято. Ограничение CHECK состоит из ключевого слова CHECK сопровождаемого предложением предиката, который использует указанное поле. Любая попытка модифицировать или вставить значение поля, которое могло бы сделать этот предикат неверным — будет отклонена. Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 14. Объявление ограничений (5/5) Ограничение FOREIGN KEY SQL поддерживает справочную целостность с ограничением FOREIGN KEY. Эта функция должна ограничивать значения, которые вы можете ввести в вашу базу данных, чтобы заставить внешний ключ и родительский ключ соответствовать принципу справочной целостности. Одно из действий ограничения Внешнего Ключа — это отбрасывание значений для полей, ограниченных как внешний ключ, который еще не представлен в родительском ключе. Это ограничение также воздействует на вашу способность изменять или удалять значения родительского ключа Первый список столбцов — это список из одного или более столбцов таблицы, которые отделены запятыми и будут созданы или изменены этой командой. Pktable — это таблица, содержащая родительский ключ Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 15. Управление транзакциями Когда вы вставляете, обновляете или удаляете данные, СУБД не выполняет эти изменения немедленно. Кажется, что изменения произошли тотчас же; если ввести команду SELECT, они будут отражены в выходных данных. Однако на самом деле изменения хранятся во временной области памяти и будут применены к таблице только в ответ на одну из нескольких специальных команд. ROLLBACK Отмена в СУБД выполняется с помощью команды ROLLBACK (Откат) Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 16. Управление транзакциями (1/3) Когда вы вставляете, обновляете или удаляете данные, СУБД не выполняет эти изменения немедленно. Кажется, что изменения произошли тотчас же; если ввести команду SELECT, они будут отражены в выходных данных. Однако на самом деле изменения хранятся во временной области памяти и будут применены к таблице только в ответ на одну из нескольких специальных команд. ROLLBACK Отмена в СУБД выполняется с помощью команды ROLLBACK (Откат) Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 17. Управление транзакциями (2/3) Возможности команды ROLLBACK не ограничиваются только одним уровнем отмены. В сочетании с другой командой, SAVEPOINT, она позволяет возвращаться в любую из предварительно установленных точек. SAVEPOINT имя_точки_сохранения При выполнении большого пакета команд можно устанавливать точки сохранения после каждой логической группы команд, и если следующая группа по какой-то причине даст неудовлетворительный результат, вы всегда сможете вернуться к последней точке и применить лишь те изменения, которые были выполнены до нее. Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 18. Управление транзакциями (3/3) Команда COMMIT (Завершить) приводит к записи всех ваших изменений в таблицу базы данных (что делает невозможным откат), все точки сохранения, установленные к моменту завершения транзакции, сбрасываются. COMMIT Доступ к вашим изменениям станет возможен только после выдачи команды COMMIT. Следовательно, вы можете вставить тысячу новых записей, изменить тысячу существующих, еще тысячу удалить, но ни одно из этих изменений не отразится в операторах SELECT других пользователей, пока вы не завершите свою работу командой COMMIT. Некоторые команды СУБД выполняют завершение предыдущих команд, не дожидаясь ваших указаний, т.е. неявно. Говоря конкретнее, любые команды DDL (например, CREATE TABLE или DROP TABLE) неявно завершают изменение всех не сохраненных данных перед выполнением своих функций. Лабораторная работа №7 Copyright © Avdeyev V.A. 2008
  • 19. Упражнения Напишите предложение CREATE TABLE, которое бы создало нашу таблицу Оборудования. Таблица технологических процессов создана. напишите запрос по созданию уникальности по двум полям (если допустить что все текущие значения уникальны). Создайте таблицу технологических процессов так, чтобы номер цеха каждой новой строки по умолчанию был 7, не разрешались значения NULL в поле оборудование, чтобы поле eq_id являлось внешним ключом. Создайте первичные ключи для таблиц подразделения и оборудование, для полей dep_id и eq_id соответственно. Наложите проверку на ввод значений в поле dep_name. Для ввода разрешить: «цех», «участок» и «отдел». Лабораторная работа №7 Copyright © Avdeyev V.A. 2008