- •127994, Гсп-4, Москва, ул. Образцова, д. 9, стр. 9. Типография мииТа. Оглавление
- •Введение
- •Содержание отчёта.
- •Теоретические сведения к работе.
- •Контрольные вопромы и задачи.
- •Содержание отчёта.
- •Insert (вставить) – добавить строки в таблицу;
- •Содержание отчёта.
- •Контрольные вопромы и задачи.
- •Порядок выполнения работы.
Insert (вставить) – добавить строки в таблицу;
UPDATE (обновить) – изменить значения полей в таблице;
DELETE (удалить) – удалить строки из таблицы.
Язык определения данных используется для создания (CREATE), изменения (ALTER), удаления (DROP) структуры базы данных и её составных частей. Основные команды языка определения данных:
CREATE TABLE – создать таблицу;
ALTER TABLE – модифицировать таблицу;
DROP TABLE – удалить таблицу;
Примеры использования языка SQL.
Например,
вывести все строки таблицы Трансформаторы:
SELECT *
FROM Трансформаторы
Операция селекции (выборки–) – это построение горизонтального подмножества, т.е. получение части строк, обладающих заданными свойствами. Операция выборки работает с одной таблицей и позволяет получить либо все, либо те строки таблицы, которые удовлетворяют заданному условию.
Рисунок 2. Графическое изображение операции селекция.
Например,
вывести все строки таблицы Трансформаторы, в которых мощность трансформаторов превышает 10000кВА:
SELECT *
FROM Трансформаторы
Where Sном > 10000
Операция проекции – это построение вертикального подмножества отношения, т.е. выделение подмножества столбцов таблицы. Операция проекции применяется к одной таблице и в качестве результата выдаёт таблицу, у которой оставлена только часть атрибутов и исключены строки-дубликаты.
Рисунок 2. Графическое изображение операции проекция.
Например,
вывести типы трансформаторов и напряжения короткого замыкания из таблицы Трансформаторы:
SELECT Тип_трансформатора, uкз
FROM Трансформаторы
На практике очень часто требуется получить подмножество столбцов и строк таблицы – выполнить комбинацию селекции и проекции. Для этого достаточно перечислить столбцы таблицы и наложить ограничения на строки.
Например,
получить информацию о типах трансформаторов и напряжения короткого замыкания только для трансформаторов, имеющих мощность свыше 10000кВА
SELECT Тип_трансформатора, uкз
FROM Трансформаторы
Where Sном > 10000
Декартово произведение R*S двух отношений (двух таблиц) определяет новое отношение, представляющее из себя совокупность всевозможных конкатенаций кортежей отношений, участвующих в операции декартово произведение (результат сцепления каждой записи из отношения R с каждой записью из отношения S).
Рисунок 3. Иллюстрация операции декартово произведение.
Например,
Выполнить операцию декартово произведение над двумя таблицами, содержащими информацию об электрических и механических характеристиках трансформаторов тяговых подстанций.
SELECT Трансформаторы_Эл.*, Трансформаторы_Мех.*
FROM Трансформаторы_Эл, Трансформаторы_Мех
Если в предложении FROM указано более одной таблицы, то эти таблицы соединяются. По умолчанию результирующая таблица представляет собой перекрёстное соединение (Cross Join) или декартово произведение.
Таблица 4. Электрические характеристики трансформаторов тяговых подстанций.
Имя таблицы «Трансформаторы_Эл».
Тип_трансформатора |
U1 |
Pxx |
Pкз |
uкз |
ТМТН-10000/110-67 |
115 |
23 |
80 |
10,5 |
ТДТН-16000/110-66 |
115 |
26 |
105 |
10,5 |
ТДТНЭ-20000/110-Б |
115 |
45 |
127 |
10,5 |
Таблица 5. Механические характеристики трансформаторов тяговых подстанций.
Имя таблицы «Трансформаторы_Мех».
Тип_трансформатора |
Масса |
Высота |
Длина |
Ширина |
ТМТН-10000/110-67 |
57100 |
5860 |
7150 |
3360 |
ТДТН-16000/110-66 |
67500 |
5665 |
7185 |
4470 |
ТДТНЭ-20000/110-Б |
68000 |
6460 |
7600 |
4440 |
Таблица 6. Результат операции декартово произведение над таблицами 5 и 6.
Трансформаторы_Эл.Тип_трансформатора |
U1 |
Pxx |
Pкз |
uкз |
Трансформаторы_Мех.Тип_трансформатора |
Масса |
Высота |
Длина |
Ширина |
ТМТН-10000/110-67 |
115 |
23 |
80 |
10,5 |
ТМТН-10000/110-67 |
57100 |
5860 |
7150 |
3360 |
ТДТН-16000/110-66 |
115 |
26 |
105 |
10,5 |
ТМТН-10000/110-67 |
57100 |
5860 |
7150 |
3360 |
ТДТНЭ-20000/110-Б |
115 |
45 |
127 |
10,5 |
ТМТН-10000/110-67 |
57100 |
5860 |
7150 |
3360 |
ТМТН-10000/110-67 |
115 |
23 |
80 |
10,5 |
ТДТН-16000/110-66 |
67500 |
5665 |
7185 |
4470 |
ТДТН-16000/110-66 |
115 |
26 |
105 |
10,5 |
ТДТН-16000/110-66 |
67500 |
5665 |
7185 |
4470 |
ТДТНЭ-20000/110-Б |
115 |
45 |
127 |
10,5 |
ТДТН-16000/110-66 |
67500 |
5665 |
7185 |
4470 |
ТМТН-10000/110-67 |
115 |
23 |
80 |
10,5 |
ТДТНЭ-20000/110-Б |
68000 |
6460 |
7600 |
4440 |
ТДТН-16000/110-66 |
115 |
26 |
105 |
10,5 |
ТДТНЭ-20000/110-Б |
68000 |
6460 |
7600 |
4440 |
ТДТНЭ-20000/110-Б |
115 |
45 |
127 |
10,5 |
ТДТНЭ-20000/110-Б |
68000 |
6460 |
7600 |
4440 |
Как правило, специалиста интересует только та часть записей декартова произведения, которая удовлетворяет некоторому условию, поэтому на основе декартова произведения строится одна из самых важных операций реляционной алгебры – операция соединения–.
Например,
Выполнить операцию соединение по эквивалентности над двумя таблицами, содержащими информацию об электрических и механических характеристиках трансформаторов тяговых подстанций при условии равенства ключевых полей (типов трансформаторов).
SELECT Трансформаторы_Эл.*, Трансформаторы_Мех.*
FROM Трансформаторы_Эл, Трансформаторы_Мех
Where Трансформаторы_Эл.Тип_трансформатора =
Трансформаторы_Мех.Тип_трансформатора
Таблица 7. Результат операции соединенея по эквивалентности над таблицами 5 и 6.
Трансформаторы_Эл.Тип_трансформатора |
U1 |
Pxx |
Pкз |
uкз |
Трансформаторы_Мех.Тип_трансформатора |
Масса |
Высота |
Длина |
Ширина |
ТМТН-10000/110-67 |
115 |
23 |
80 |
10,5 |
ТМТН-10000/110-67 |
57100 |
5860 |
7150 |
3360 |
ТДТН-16000/110-66 |
115 |
26 |
105 |
10,5 |
ТДТН-16000/110-66 |
67500 |
5665 |
7185 |
4470 |
ТДТНЭ-20000/110-Б |
115 |
45 |
127 |
10,5 |
ТДТНЭ-20000/110-Б |
68000 |
6460 |
7600 |
4440 |
Операция объединения ( UNION).
Результатом операции объединения двух отношений R1 и R1 является отношение, представляющее собой множество кортежей (строк), принадлежащих или отношению R1 или отношению R2. Таким образом, предложение UNION объединяет вывод двух или более SQL запросов в единый набор строк и столбцов. При этом результаты запросов должны быть совместимы, т. е. иметь одинаковое количество полей с совпадающими типами данных (быть совместимыми по объединению).
Рисунок 4. Графическое изображение операции объединение.
Например,
Выполнить операцию объединение над двумя таблицами (8 и 9), содержащими информацию об электрических характеристиках трансформаторов тяговых подстанций.
SELECT.*
FROM Трансформаторы_Эл1
Union
SELECT.*
FROM Трансформаторы_Эл2
Таблица 8. Электрические характеристики трансформаторов тяговых подстанций.
Имя таблицы «Трансформаторы_Эл1».
Тип_трансформатора |
Sном |
U1 |
Pxx |
Pкз |
uкз |
ТМТН-6300./110-65 |
6300 |
115 |
17 |
60 |
10,5 |
ТМТН-10000/110-67 |
10000 |
115 |
23 |
80 |
10,5 |
ТДТН-16000/110-66 |
16000 |
115 |
26 |
105 |
10,5 |
Таблица 9. Электрические характеристики трансформаторов тяговых подстанций.
Имя таблицы «Трансформаторы_Эл2».
Тип_трансформатора |
Sном |
U1 |
Pxx |
Pкз |
uкз |
ТМТН-10000/110-67 |
10000 |
115 |
23 |
80 |
10,5 |
ТДТН-16000/110-66 |
16000 |
115 |
26 |
105 |
10,5 |
ТДТНЭ-20000/110-Б |
20000 |
115 |
45 |
127 |
10,5 |
Таблица 10. Результат операции объединение над таблицами 8 и 9.
Тип_трансформатора |
Sном |
U1 |
Pxx |
Pкз |
uкз |
ТМТН-6300./110-65 |
6300 |
115 |
17 |
60 |
10,5 |
ТМТН-10000/110-67 |
10000 |
115 |
23 |
80 |
10,5 |
ТДТН-16000/110-66 |
16000 |
115 |
26 |
105 |
10,5 |
ТДТНЭ-20000/110-Б |
20000 |
115 |
45 |
127 |
10,5 |
Операция пересечение отношений R и S определяет отношение (таблицу), которое содержит записи, присутствующие как в R, так и в S. Отношения R и S должны быть совместимы по объединению. Таким образом, пересечением двух таблиц – R и S является таблица, содержащая все строки, присутствующие в обеих исходных таблицах одновременно.
Рисунок 5. Графическое изображение операции пересечение.
Например,
Выполнить операцию пересечение над двумя таблицами (8 и 9), содержащими информацию об электрических характеристиках трансформаторов тяговых подстанций.
SELECT.*
FROM Трансформаторы_Эл1
Where Exists
(SELECT.*
FROM Трансформаторы_Эл2
Where Трансформаторы_Эл2.Тип_трансформатора =
Трансформаторы_Эл1.Тип_трансформатора)
Пояснение. Текст запроса представляет собой структуру – запрос с подзапросом. Подзапрос подключается к внешнему запросу при помощи так называемого «квантора существования» – Exists (существует). В данном примере, в подзапросе проверяется существование совпадения значений ключевых полей.
Таблица 11. Результат операции пересечение над таблицами 8 и 9.
Тип_трансформатора |
Sном |
U1 |
Pxx |
Pкз |
uкз |
ТМТН-6300./110-65 |
6300 |
115 |
17 |
60 |
10,5 |
ТМТН-10000/110-67 |
10000 |
115 |
23 |
80 |
10,5 |
ТДТН-16000/110-66 |
16000 |
115 |
26 |
105 |
10,5 |
ТДТНЭ-20000/110-Б |
20000 |
115 |
45 |
127 |
10,5 |
Разность двух отношений R и S состоит из записей, которые имеются в отношении R, но отсутствуют в отношении S. Причём отношения R и S должны быть совместимы по объединению. Таким образом, разностью двух таблиц R и S является таблица, содержащая все строки, которые присутствуют в таблице R, но отсутствуют в таблице S.
Рисунок 6. Графическое изображение операции разность.
Например,
Выполнить операцию разность над двумя таблицами (8 и 9), содержащими информацию об электрических характеристиках трансформаторов тяговых подстанций.
SELECT.*
FROM Трансформаторы_Эл1
Where Not Exists
(SELECT.*
FROM Трансформаторы_Эл2
Where Трансформаторы_Эл2.Тип_трансформатора =
Трансформаторы_Эл1.Тип_трансформатора)
Пояснение. Текст запроса представляет собой структуру – запрос с подзапросом. Подзапрос подключается к внешнему запросу при помощи выражения–Not Exists (не существует). В данном примере, в подзапросе проверяется условие противоположное условию в операции пересечение.
Таблица 12. Результат операции разность над таблицами 8 и 9.
Тип_трансформатора |
Sном |
U1 |
Pxx |
Pкз |
Uкз |
ТМТН-6300./110-65 |
6300 |
115 |
17 |
60 |
10,5 |
Деление
Пусть отношение R , называемое делимым, содержит атрибуты (A1,A2,...,An). Отношение S - делитель содержит подмножество атрибутов A: (A1,A2,...,Ak) (k<n). Результирующее отношение C определено на атрибутах отношения R, которых нет в S, т.е. Ak+1,Ak+2,...,An. Кортежи включаются в результирующее отношение C только в том случае, если его декартово произведение с отношением S содержится в делимом R.
Рисунок 7. Графическое изображение операции деление.
Операция деления может быть выражена через выше описанные операции реляционной алгебры при помощи формулы:
Например,
Имеются таблицы R - «Остановки поездов на станциях» и S – «Номера поездов».
Таблица 13. Остановки поездов на станциях. Таблица 14. Номера поездов.
Название_станции |
Номер_Поезда |
Станция_1 |
351 |
Станция_1 |
370 |
Станция_1 |
235 |
Станция_2 |
351 |
Станция_3 |
370 |
Номер_Поезда |
351 |
370 |
235 |
Требуется определить имена станций из таблицы 13, на которых останавливаются все поезда из таблицы 14. Задача может быть решена применением реляционной операции деления и представлена в виде одного запроса с подзапросами на языке SQL.
Select Distinct R.Название_станции
From R
Where NOT Exists
(Select *
From S
Where NOT Exists
(Select *
From R R1
Where R1.Название_станции = R.Название_станции and
'R1.Номер_поезда = S.Номер_поезда))
Пояснение запроса.
Определить те станции из таблицы R, для которых не существует тех номеров поездов из таблицы R, для которых не существует записей об остановках в таблице R для этой станции и этого номера поезда.
Это выражение дословно переводится на язык SQL. При переводе выражения на язык SQL нужно учесть, что во внутреннем подзапросе таблица R должна быть переименована, для того чтобы отличать её от экземпляра этой же таблицы, используемой во внешнем запросе. Директива Distinct (несовпадающий) необходима для исключения дублирования строк в результирующем отношении.