Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические_указания_Информатика_IIс.docx
Скачиваний:
12
Добавлен:
09.06.2015
Размер:
2.28 Mб
Скачать

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 (несовпадающий) необходима для исключения дублирования строк в результирующем отношении.