Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен БДиСУБД.doc
Скачиваний:
17
Добавлен:
25.11.2018
Размер:
583.17 Кб
Скачать

7. Напишите, как вы понимаете контроль целостности связей. Опишите действие контроля целостности при манипулировании данными в таблицах на примере связи 1:м.

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

Правила обеспечения целостности можно разделить на 3-и группы:

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

2. Целостность по ссылкам (связям) – каждому значению внешнего ключа должны соответствовать строки в связываемых отношениях.

3. Целостность определяемая пользователем – пользователь контролирует: а) Уникальность тех или иных атрибутов; б) диапазон вводимых значений; в) принадлежность на набор значений;

П ри образовании связи вида 1:М одна запись главной таблицы оказывается связанной с несколькими записями дополнительной и имеет место схема

Контроль целостности связей вида 1:М означает анализ содержимого двух таблиц на соблюдение следующих правил:

• каждой записи основной таблицы соответствует нуль или более записей дополнительной таблицы;

• в дополнительной таблице нет записей, которые не имеют родительских записей в основной таблице;

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

Опишем действие контроля целостности при манипулировании данными в таблицах. Рассмотрим три основные операции над данными двух таблиц:

    1. Ввод новых записей.

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

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

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

Редактирование поля связи основной таблицы разумно подчинить одному из следующих правил:

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

    2. изменения в полях связи основной записи мгновенно передавать во все поля связи всех записей дополнительной таблицы (каскадное обновление).

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

Удаление записей основной таблицы логично подчинить одному из следующих правил:

    1. удалять можно запись, которая не имеет подчиненных записей;

    2. запретить (блокировать) удаление записи при наличии подчиненных записей, либо удалять ее вместе со всеми подчиненными записями (каскадное удаление).

8. Назовите основную цель проектирования базы данных. Раскройте смысл следующих понятий: декомпозиция и нормализация отношений, функциональная зависимость, полная функциональная зависимость, первая нормальная форма, вторая нормальная форма, третья нормальная форма.

Цели проектирования баз данных:

  1. Обеспечить возможность хранения в базе данных всех необходимых данных.

  2. Исключить избыточность данных.

  3. Свести к минимуму количество хранимых в базе данных отношений.

  4. Нормализовать отношения для упрощения проблем, связанных с модификацией данных.

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

Нормализация – формальная процедура разбиения некоторой реляционной таблицы на 2 или более с целью получения такого проекта БД, в котором исключена избыточность информации. Это, кроме экономии памяти, исключает возможную противоречивость хранимых данных и создания структуры, в которой предусмотрена возможность ее будущих изменений, и влияние этих изменений на приложения, использующих информацию в БД, минимально.

В отношении R атрибут Y функционально зависит от атрибута X (X и Y могут быть составными) в том и только в том случае, если каждому значению X соответствует в точности одно значение Y. Обозначается: R.X (r) R.Y.

В отношении R атрибут Y находится в полной функциональной зависимости от составного атрибута X, если он функционально зависит от X и не зависит функционально от любого подмножества атрибута X.

Таблица находится в первой нормальной форме (1НФ) тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.

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

Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.

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

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

Таблица находится в третьей нормальной форме (3НФ), если она удовлетворяет определению 2НФ и не одно из ее не ключевых полей не зависит функционально от любого другого не ключевого поля.

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

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

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

Реляционная алгебра состоит из 8 реляционных операторов, объединенных в две группы:

  • Теоретико-множественные операторы: объединение, пересечение, вычитание, декартово произведение

  • Специальные реляционные операторы: выборка, проекция, соединение, деление.

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

Отношения называют совместимыми по типу, если они имеют идентичные заголовки, а именно,

  • Отношения имеют одно и то же множество имен атрибутов, т.е. для любого атрибута в одном отношении найдется атрибут с таким же наименованием в другом отношении,

  • Атрибуты с одинаковыми именами определены на одних и тех же доменах.

Объединением двух совместимых по типу отношений A и B называется отношение с тем же заголовком, что и у отношений A и B, телом, состоящим из кортежей, принадлежащих или A, или B, или обоим отношениям. В результирующем отношении порядок следования кортежей не существенен, но повторяющихся кортежей быть не должно. Обозначается АВ.

ФИО_Учен.

ФИО_Родит.

Адрес

Телефон

Ромашка А.А.

Ромашка А.П.

Савецкая, 9

8763444

Шишков Р.Л.

Шишков Л.Д.

Ленина, 33

2567485

Дудкин Е.Ю.

Дудкин Ю.Н.

Гоголя, 54

8976535

Орлова Т.А.

Орлов А.П.

Ленина,45

7658900

Денисова О.Л.

Денисов Л.Г.

Гоголя, 89

2347866

ФИО_Учен.

ФИО_Родит.

Адрес

Телефон

Орлова Т.А.

Орлов А.П.

Ленина,45

7658900

Норкин А.Л.

Норкин Л.Ю.

Савецкая, 5

2457890

Павлова Д.Д.

Павлов Д.Г.

Буденого, 4

6783434

Шишков Р.Л.

Шишков Л.Д.

Ленина, 33

2567485

Кирилов Е.Р.

Кирилов Р.О.

Гоголя, 9

7865453

Н апример, даны отношения «Группа_пианино» и «Группа_скрипка»

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

ФИО_Учен.

ФИО_Родит.

Адрес

Телефон

Орлова Т.А.

Орлов А.П.

Ленина,45

7658900

Норкин А.Л.

Норкин Л.Ю.

Савецкая, 5

2457890

Павлова Д.Д.

Павлов Д.Г.

Буденого, 4

6783434

Шишков Р.Л.

Шишков Л.Д.

Ленина, 33

2567485

Кирилов Е.Р.

Кирилов Р.О.

Гоголя, 9

7865453

Ромашка А.А.

Ромашка А.П.

Савецкая, 9

8763444

Дудкин Е.Ю.

Дудкин Ю.Н.

Гоголя, 54

8976535

Денисова О.Л.

Денисов Л.Г.

Гоголя, 89

2347866

Пересечением двух совместимых по типу отношений и называется отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям A и B. Обозначается АВ.

Например, пересечением двух отношений предыдущего примера будет отношение в котором будут сведенья о учениках, которые учатся играть и на скрипке, и на пианино

ФИО_Учен.

ФИО_Родит.

Адрес

Телефон

Шишков Р.Л.

Шишков Л.Д.

Ленина, 33

2567485

Орлова Т.А.

Орлов А.П.

Ленина,45

7658900


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

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

Реляционная алгебра состоит из 8 реляционных операторов, объединенных в две группы:

  • Теоретико-множественные операторы: объединение, пересечение, вычитание, декартово произведение

  • Специальные реляционные операторы: выборка, проекция, соединение, деление.

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

Отношения называют совместимыми по типу, если они имеют идентичные заголовки, а именно,

  • Отношения имеют одно и то же множество имен атрибутов, т.е. для любого атрибута в одном отношении найдется атрибут с таким же наименованием в другом отношении,

  • Атрибуты с одинаковыми именами определены на одних и тех же доменах.

Вычитанием двух совместимых по типу отношений A и B называется отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих отношению A и не принадлежащих отношению B. Обозначается A­–B. Разность отношений А–В ≠ В–А.

тов

НазТ

Стоимость

145

Шоколад

4500

845

Молоко

1700

234

Гречка

2900

123

Рис

6570

459

Манка

2800

267

Мука

3250

Например, даны отношения «Склад» и «Товар_в_магазине»

тов

НазТ

Стоимость

145

Шоколад

4500

234

Гречка

2900

123

Рис

6570

156

Соль

1550

267

Мука

3250


тов

НазТ

Стоимость

845

Молоко

1700

459

Манка

2800

В результате разности отношений «Товар_в_магазине» – «Склад», получим наименование товара, которого нет на складе

Декартово произведение отношения A степени к1 и отношения B степени к2, которые не имеют одинаковых имен атрибутов, есть такое отношение R степени (к12), заголовок которого представляет сцепление заголовков отношений A и B, а тело имеет кортежи такие, что первые к1 элементов кортежей принадлежат множеству A, а последние к2 элементов — множеству B. Обозначается A×B.

Произведение

A

B

R

a

x

a

x

b

y

a

y

c

b

x

b

y

c

x

c

y

Например, даны отношения «Студенты» и «Предметы»

зач

ФИО

145

Шокин Р.О.

234

Ролен Д.П.

123

Цукина Н.О.

267

Леткин Е.Р.

Назв.предмета

Преподаватель

СУБД

Лоткин Р.А.

ОАиП

Каприн С.Р.



 

В результате декартова произведения «Студенты» × «Предметы» получим новое отношение

зач

ФИО

Назв.предмета

Преподаватель

145

Шокин Р.О.

СУБД

Лоткин Р.А.

145

Шокин Р.О.

ОАиП

Каприн С.Р.

234

Ролен Д.П.

СУБД

Лоткин Р.А.

234

Ролен Д.П.

ОАиП

Каприн С.Р.

123

Цукина Н.О.

СУБД

Лоткин Р.А.

123

Цукина Н.О.

ОАиП

Каприн С.Р.

267

Леткин Е.Р.

СУБД

Лоткин Р.А.

267

Леткин Е.Р.

ОАиП

Каприн С.Р.

11. Раскройте сущность следующих понятий: реляционная алгебра, отношения совместимые по типу. Перечислите специальные операторы реляционной алгебры. Дайте характеристику операторам: выборка, проекция. Приведите примеры.

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

Реляционная алгебра состоит из 8 реляционных операторов, объединенных в две группы:

  • Теоретико-множественные операторы: объединение, пересечение, вычитание, декартово произведение

  • Специальные реляционные операторы: выборка, проекция, соединение, деление.

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

Отношения называют совместимыми по типу, если они имеют идентичные заголовки, а именно,

  • Отношения имеют одно и то же множество имен атрибутов, т.е. для любого атрибута в одном отношении найдется атрибут с таким же наименованием в другом отношении,

  • Атрибуты с одинаковыми именами определены на одних и тех же доменах.

Выборкой на отношении A с условием D называется отношение с тем же заголовком, что и у отношения A, и телом, состоящем из кортежей, значения атрибутов которых при подстановке в условие D дают значение ИСТИНА. Условие D представляет собой логическое выражение, в которое могут входить атрибуты отношения A и (или) скалярные выражения.

Например, дано отношение «Работники»

Таб №

ФИО

Должность

Телефон

568745

Крид М.В.

Инженер

7589564

458763

Ладник Т.Д.

Бухгалтер

6589746

954842

Беглов Д.А.

Инженер

5699869

548965

Олешник Л.Н.

Программист

5896387

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

Таб №

ФИО

Должность

Телефон

568745

Крид М.В.

Инженер

7589564

954842

Беглов Д.А.

Инженер

5699869

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

Например, дано отношение «Работники». Нужно вывести только наименование всех должностей. В результате получим новое отношение

Должность

Инженер

Бухгалтер

Программист

12. Раскройте сущность следующих понятий: реляционная алгебра, отношения совместимые по типу. Перечислите специальные операторы реляционной алгебры. Дайте характеристику операторам: соединение, деление. Приведите примеры.

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

Реляционная алгебра состоит из 8 реляционных операторов, объединенных в две группы:

  • Теоретико-множественные операторы: объединение, пересечение, вычитание, декартово произведение

  • Специальные реляционные операторы: выборка, проекция, соединение, деление.

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

Отношения называют совместимыми по типу, если они имеют идентичные заголовки, а именно,

  • Отношения имеют одно и то же множество имен атрибутов, т.е. для любого атрибута в одном отношении найдется атрибут с таким же наименованием в другом отношении,

  • Атрибуты с одинаковыми именами определены на одних и тех же доменах.

Пусть даны отношения A(X1,X2,…,Xn,Y1,Y2,…,Ym) и B(Y1,Y2,…,Ym), причем атрибуты Y1,Y2,…,Ym - общие для двух отношений. Делением отношений A на B называется отношение с заголовком (X1,X2,…,Xn) и телом, содержащим множество кортежей (x1,x2,…,xn), таких, что для всех кортежей (y1,y2,…,ym) из B в отношении A найдется кортеж (x1,x2,…,xn,y1,y2,…,ym).

Отношение A выступает в роли делимого, отношение B выступает в роли делителя. Деление отношений аналогично делению чисел с остатком.

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

Пилот

Тип_самолета

Иванов

707

Иванов

727

Иванов

747

Петров

707

Петров

727

Сидоров

707

Сидоров

727

Сидоров

747

Сидоров

1011

Макаров

727

Право q

Тип_самолета

707

727

747


Тогда в результате получим отношение

Пилот

Иванов

Сидоров

Право ÷ q

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

При соединении отношений А и В по условию производится сцепление строк отношений А и В, и проверка полученной строки на соответствии заданному условию. Если условие выполнено, то полученная строка включается в результирующее отношение. Условие представляет собой логическое выражение, в которое могут входить атрибуты отношений A и B и (или) скалярные выражения. Т.о., операция соединения по условию есть результат последовательного применения операций декартового произведения и выборки.

Пусть даны отношения A(A1,A2,...,An,X1,X2,...Xn) и B(X1,X2,...Xn,B1,B2,...,Bn), причем атрибуты X1,X2,...Xn‑ общие для двух отношений. Тогда естественным соединением отношений A и B называется отношение с заголовком (A1,A2,...,An, X1,X2,...Xn,B1,B2,...,Bm) и телом, содержащим множество кортежей (a1,a2,...,an,x1,x2,...,xn,b1, ,b2,...,bn), таких, что (a1,a2,...,an,x1,x2,...,xn) из A и (x1,x2,...,xn,b1,b2,...,bn) из B.

Естественное соединение производится по всем одинаковым атрибутам.

Например требуется соединить отношения Студенты и Оценки, для которой общим атрибутом является Ном_зач_книжки.

Студенты Оценки

ФИО

Дата_рожд

Ном_зач_книжки

Белков Ю.Г.

06.08.86

2346

Романов О.Р.

12.04.90

2568

Шариков А.И.

21.09.88

2478

Код_дисциплины

Ном_зач_книжки

Оценки

4

2346

6

4

2568

5

7

2346

8

2

2568

6

3

2478

9


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

ФИО

Дата_рожд

Ном_зач_книжки

Код_дисциплины

Оценки

Белков Ю.Г.

06.08.86

2346

4

6

Белков Ю.Г.

06.08.86

2346

7

8

Романов О.Р.

12.04.90

2568

4

5

Романов О.Р.

12.04.90

2568

2

6

Шариков А.И.

21.09.88

2478

3

9

13. Перечислите основные отличия SQL от процедурных языков программирования. Назовите существующие формы языка SQL. Охарактеризуйте основные категории команд языка SQL (DDL, DML, DQL, DCL и др.), основные достоинства языка SQL.

Структурированный язык запросов SQL был разработан в 1970 г. корпорацией IBM как язык управления реляционных баз данных. Существует две формы SQL: Интерактивный и Вложенный. Как правило, обе формы работают одинаково, но используются различно.

Вложенный SQL состоит из команд SQL помещенных внутри программ, которые обычно написаны на некотором другом языке (Си, Delphi и др.). Это делает эти программы более мощными и эффективными.

Интерактивный SQL используется непосредственно в базе данных для осуществления к ней запросов пользователей. В этой форме SQL команда выполняется непосредственно после ее ввода, так что можно увидеть результат немедленно.

Отличие SQL от процедурных языков программирования

SQL относится к классу непроцедурных языков программирования. В отличие от универсальных процедурных языков, которые также могут быть использованы для работы с базами данных, SQL ориентирован не на записи, а на множества. Это означает следующее: в качестве входной информации для формулируемого на языке SQL запроса к базе данных используется множество записей одной или нескольких таблиц. В результате выполнения запроса также образуется множество записей результирующей таблицы. Другими словами, в SQL результатом любой операции над отношениями также является отношение. Запрос SQL задает не процедуру, то есть последовательность действий, необходимых для получения результата, а условия, которым должны удовлетворять записи результирующего таблицы, сформулированные в терминах входного (или входных) отношения.

Основные категории команд языка SQL:

  • DDL-язык определения данных, позволяет создавать и изменять структуру объектов базы данных, например, создавать и удалять таблицы;

  • DML – язык манипулирования данными, используется для манипулирования информацией внутри объектов реляционной базы данных посредством трех основных команд: INSERT(вставка), UPDATE(изменения), DELETE (удаление);

  • DQL – язык запросов, его основная команда SELECT, которая вместе со своими многочисленными опциями и предложениями используется для формирования запросов к реляционной БД;

  • DCL – язык управления данными. Команды управления данными позволяют управлять доступом к информации, находящейся внутри БД. Они используются для создания объектов, связанных с доступом к данным, а также служат для контроля над распределением привилегий между пользователями;

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

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

Основные достоинства языка SQL:

  • стандартность;

  • независимость от конкретных СУБД – все распространенные СУБД используют SQL, т.к. реляционную базу данных можно перенести с одной СУБД на другую с минимальными доработками;

  • возможность переноса с одной вычислительной системы на другую – СУБД может быть ориентирована на различные вычислительные системы;

  • реляционная основа языка – SQL является языком реляционных БД. Табличная структура реляционной БД понятна, а потому язык SQL прост для изучения;

  • возможность создания интерактивных запросов–SQL обеспечивает пользователям немедленный доступ к данным, при этом в интерактивном режиме можно получить результат запроса за очень короткое время без написания сложной программы;

  • возможность программного доступа к БД–язык SQL легко использовать в приложениях, которым необходимо обращаться к базам данных;

  • обеспечение различного представления данных – с помощью SQL можно представить такую структуру данных, что тот или иной пользователь будет видеть различные их представления;

  • возможность динамического изменения и расширения структуры БД – язык SQL позволяет манипулировать структурой БД, тем самым обеспечивая гибкость с точки зрения приспособленности БД к изменяющимся требованиям предметной области;

  • поддержка архитектуры клиент-сервер. SQL служит связующим звеном между взаимодействующей с пользователем клиентской системой и серверной системой, управляющей БД, позволяя каждой из них сосредоточиться на выполнении своих функций.

14. Опишите назначение оператора SELECT. Запишите синтаксис оператора SELECT в общем виде. Опишите назначение ключевого слова FROM. Приведите примеры использования оператора SELECT с ключевым словом FROM. Опишите назначение аргумента DISTINCT и приветите пример.

Оператор SELECT предназначен для выборки информации из таблиц базы данных.

Синтаксис оператора SELECT:

SELECT [[ALL]|DISTINCT] <список атрибутов>

FROM <список таблиц>;

В квадратных скобках указаны элементы, которые могут отсутствовать в запросе. Ключевое слово SELECT сообщает базе данных, что данное предложение является запросом на извлечение информации. После слова SELECT через запятую перечисляются наименования полей (список атрибутов), содержимое которых запрашивается. Обязательным ключевым словом, которое вместе с SELECT должно обязательно присутствовать в запросе является слово FROM (из). За слово FROM указывается список имен таблиц разделенных запятыми, из которых извлекается информация. Любой SQL-запрос должен заканчиваться символом «;» (точка с запятой). Точка с запятой используется, чтобы сообщать БД что запрос сформирован и готов к выполнению.

Например, нужно вывести авторов всех книг, которые имеются в книжном магазине.

SELECT Автор

FROM КНИГИ;

Результатом данного запроса будет таблица

Автор

Набоков

Пушкин

Булгаков

Зощенко

Пушкин

……..

В результате получили таблицу с повторяющимися строками. Для того чтобы исключить дублирующиеся строки из таблицы необходимо дополнить запрос ключевым словом DISTINCT (отличный). Если запрос SELECT извлекает множество полей, то DISTINCT исключает дубликаты строк, в которых значения всех выбранных полей идентичны. Ключевое слово ALL (все), в отличие от DISTINCT, оказывает противоположное действие, т.е. при его использовании повторяющиеся строки включаются в состав выходных данных. Режим, задаваемый ключевым словом ALL, действует по умолчанию.

Предыдущий запрос можно записать в следующем виде:

SELECT DISTINCT Автор

FROM КНИГИ;

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

Автор

Набоков

Пушкин

Булгаков

Зощенко

……..

Если необходимо вывести значения всех, столбцов таблицы, то можно вместо перечисления их имен использовать символ «*» (звездочка).

SELECT *

FROM КНИГИ;

В данном случае результатом выполнения запроса будет вся таблица КНИГИ.

Оператор SELECT может содержаться не только перечень столбцов таблицы или символ *, но и выражения, а также отдельные числовые или текстовые константы. Текстовые константы должны заключаться в одинарные кавычки.

Например

SELECT ’Книга’ ,Наз_Кн, Ст_Кн AS Старая_Цена, Ст_Кн*1.5 AS Нов_Цена

FROM КНИГИ;

В результате получим

Книга

Наз_Кн

Старая_Цена

Нов_Цена

Книга

Крестоносцы

12000

18000

Книга

Доктор Живаго

15000

22500

Книга

Мастер и Маргарита

19000

28500

Книга

Молодая гвардия

11000

16500

….

….

….

….

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

Предложение WHERE определяет, какие строки указанных таблиц должны быть выбраны. Использование в операторе SELECT предложения, определяемого ключевым словом WHERE (где), позволяет задавать выражение условия, принимающее значение истина или ложь для некоторой строки таблицы. В таблицу, являющуюся результатом запроса, включаются только те строки, для которых условие, указанное в предложении WHERE, принимает значение истина.

В синтаксисе в предложении WHERE для отбора нужных строк таблицы можно использовать операторы сравнения = (равно), <> (не равно), <(меньше), <= (меньше или равно), > (больше), >=(больше или равно).

Также можно использовать несколько условий, соединенных логическими операторами:

AND - когда должны удовлетворяться оба разделяемых с помощью AND условия;

OR - когда должно удовлетворяться одно из разделяемых с помощью OR условий;

AND NOT - когда должно удовлетворяться первое условие и не должно второе;

OR NOT - когда или должно удовлетворяться первое условие или не должно удовлетворяться второе.

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

SELECT *

FROM Студенты

WHERE Город=‘Кобрин’ OR Город=‘Жабинка’ OR Город=‘Пинск’;

При задании логического условия в предложении WHERE могут быть использованы операторы IN, BETWEEN, LIKE, IS NULL.

Оператор BETWEEN ... AND ... (находится в интервале от ... до ...) обеспечивает выборку строк, в которых значение какого-либо столбца находятся в заданном диапазоне. Оператор NOT BETWEEN … AND … наоборот обеспечивает выборку строк, значения которых находятся за пределами заданного диапазона. Первое значение в предложении c BETWEEN должно предшествовать второму в смысле алфавитной или числовой упорядоченности.

Например, выдать сведенья о картинах, стоимость которых находится в пределах от 80000 до 150000.

SELECT *

FROM Картины

WHERE Цена BETWEEN 80000 AND 150000;

В результате получим таблицу:

Наз_картины

Художник

Цена

Домовой

Зирок Д.Л.

84600

Закат

Литов Д.Е.

145900

Отражение

Катов Л.А.

118000

Оператор IN определяет принадлежность данного значения к некоторому множеству. Оператор NOT IN наоборот делает выборку значений, которые не принадлежат заданному множеству. Например, запрос выдающий сведенья о студентах проживающих в г. Кобрине или Жабинка или Пинске:

SELECT *

FROM Студенты

WHERE Город IN (‘Кобрин’, ‘Жабинка’, ‘Пинск’);

Оператор LIKE применим только к символьным полям, в которых требуется находить подстроки. Оператор NOT LIKE - обеспечивает выборку строк, поля которых не содержат указанную подстроку.

Для выборки строковых значений по заданному образцу подстроки можно применять шаблон искомого образца строки, использующий символы: • символ подчеркивания «_»заменяет один любой символ. Например, 'б_к' будет соответствовать словам 'бык', 'бок' или 'бак';

• знак процента «%»замещает последовательность любого числа символов. Например 'р%' будет соответствовать словам 'рак' или 'рубашка' и т.д.

Например, чтобы получить список книг, в названии которых есть подстрока «Delphi», надо записать

SELECT Код_книги, Название, Автор

FROM Книги

WHERE Название LIKE ‘%Delphi%’;

Если при загрузке данных не введено значение в какое-либо поле таблицы, то СУБД поместит в него NULL-значение. Обнаружить эти значения можно с помощью IS NULL. Оператор IS NOT NULL наоборот обеспечивает выборку только тех строк, поля которых имеют определенные значения данных.

Например, запрос, приведенный ниже, возвратит строки из таблицы Поставщики, в которых отсутствуют сведения в столбцах Адрес или Телефон:

SELECT *

FROM Поставщики

WHERE Адрес IS NULL OR Телефон IS NULL;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]