Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену по БД (ВФ) / !Все ответы по БД v0.2.13.docx
Скачиваний:
189
Добавлен:
10.05.2014
Размер:
3.32 Mб
Скачать

22. Основные свойства sql, как языка программирования. Отличие от других языков программирования.

Свойства: • Результатом запроса SELECT всегда является таблица.

• Данные, возвращаемые запросом, содержат данные из таблиц БД, или результаты операций над ними.

• Как правило один и тот же набор результирующих данных может быть получен различными способами.

• Скорость двух эквивалентных с точки зрения результата запросов может различаться на порядок.

• Манипуляторная часть SQL является декларативным языком программирования (мы описываем результат, а не последовательность действий, приводящих к его получению).

• Процедурные возможности, как правило, являются СУБД зависимыми (т.е. представлены расширениями языка).

• Запросы могут быть объединены в хранимую процедуру для повторных вызовов.

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

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

23. Основы построения sql- запросов. Источники данных запроса. Условия выборки кортежей. Примеры.

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

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

SELECT [DISTINCT| ALL] {* ⎟ [<СПИСОК СТОЛБЦОВ>]}

FROM <СПИСОК ТАБЛИЦ>

[WHERE <предикат-условие выборки или соединения;>]

[GROUP BY <список полей результата>]

[HAVING <предикат-условие для группы>]

[ORDER BY <список полей, по которым требуется упорядочить ВЫВОД>]

Фраза SELECT:

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

• ключевое слово DISTINCT предназначено для приведения таблицы в соответствие с принципами теории отношений, где предполагается отсутствие дубликатов строк;

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

Во фразе FROM задается перечень исходных таблиц запроса. Тут могут указываться ссылки на таблицу, соединения таблиц или вложенного табличного выражения. Ссылки на таблицу – просто перечисление имён. Соединение таблиц – через JOIN: INNER JOIN (по умолчанию) – внутреннее соединение, OUTER JOIN – внешнее соединение. Вложенное табличное выражение – это подзапрос, за которым обязательно следует AS <имя>.

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

• сравнения " = , <>, >, <, >=, <=" — для сравнения результатов вычисления двух выражений; более сложные выражения строятся с помощью логических операторов AND, OR, NOT;

• BETWEEN А AND В — предикат истинен, когда вычисленное значение выражения попадает в заданный диапазон;

• IN — предикат истинен тогда, когда сравниваемое значение входит в множество заданных значений;

• LIKE и NOT LIKE — предикаты, смысл которых противоположен, требуют задания шаблона, с которым сравнивается заданное значение;

• IS NULL — предикат, применяющийся для выявления равенства значения некоторого атрибута неопределенному значению:

• EXIST и NOT EXIST, используемые во встроенных подзапросах.

Во фразе GROUP BY задается список полей группировки. Включается, в том числе, если в список вывода конструкции включается выражение, содержащее агрегатную функцию.

Во фразе HAVING задаются предикаты-условия, накладываемые на каждую группу.

Во фразе ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в

результирующей таблице

Пример 1. SELECT SN “Имя поставщика”

FROM S JOIN SP ON S.Sid = SP.Sid

WHERE Pid = ‘P1’

Пример 2. SELECT Emp_id emp, Name_dept Name

FROM dept d

WHERE d.dep_id IN

(SELECT e.dep_id

FROM emp e);

Пример 3. SELECT DeptID, SUM(Salary)

FROM Emp

GROUP BY DeptID

HAVING SUM(Salary) >100