Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

merged

.pdf
Скачиваний:
10
Добавлен:
01.03.2016
Размер:
10.39 Mб
Скачать

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

Особую роль играет обработка NULL -значений, когда при слиянии, например, двух таблиц — главной (англ. master) и подчинённой (англ. detail) — имеются или отсутствуют соответствия между записями таблиц, участвующих в слиянии. Для решения этой задачи используются механизмы внутреннего (англ. inner) и внешнего (англ. outer) слияния.

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

SELECT * FROM table_name

SELECT name, id FROM table_name WHERE id = 1

SELECT * FROM table_name ORDER BY name DESC

ПСЕВДОНИМЫ

Допустим, что у нас есть пользователь SAM с таблицей BIRTHDAYS, где содержатся дни рождения наших работников.

Тогда запрос вида:

SELECT SALESREPS.NAME, QUOTA, SAM.BIRTHDAYS.BIRTH_DAY FROM SALESREPS, BIRTHDAYS

WHERE SALESREPS.NAME = SAM.BIRTHDAYS.NAME

/

Должен выполниться и вывести то, что мы ожидаем, но при написании мы видим, что получаются слишком длинные имена для столбцов и таблиц выборки. Вот здесь могут пригодиться "ПСЕВДОНИМЫ ТАБЛИЦ". Общий синтаксис записи псевдонимов строится следующим образом:

------ FROM ----------

имя таблицы --------

------- псевдоним таблицы -----,

-------------------------------

 

, ----------------------------------

-

 

 

Перепишем наш предыдущий запрос используя псевдонимы таблиц:

SELECT S.NAME, S.QUOTA, B.BIRTHDAYS.BIRTH_DAY FROM SALESREPS S, SAM.BIRTHDAYS B WHERE S.NAME = B.NAME

/

Теперь наглядно видно, что запись вида SAM.BIRTHDAYS B, где B и есть псевдоним таблицы, получается гораздо компактнее, и не нужно повторять сложные и трудно запоминаемые имена таблиц и столбцов. В некоторых SQLсерверах допускается запись вида - SAM.BIRTHDAYS AS B, но в нашем случае достаточно записи SAM.BIRTHDAYS B. Вот теперь, надеюсь, понятно, как избежать излишней писанины с помощью псевдонимов таблиц. Можете пробовать сами для закрепления материала! :)

Билет №8

1. Вимоги до СКБД.

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

Банк даних повинен відповідати таким вимогам:

1.Мати можливість оновлення, поповнення та розширення БД.

2.Забезпечити високу надійність зберігання інформації.

3.Видавати повну та вірогідну інформацію на запити.

Мати засоби, що забезпечують захист БД від несанкціонованого доступу.

2. Операція вибірки SELECT. Перевірка на відповідність шаблону.

SELECT (англ., означает «выбрать») — оператор DML языка SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию.

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

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

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

Особую роль играет обработка NULL -значений, когда при слиянии, например, двух таблиц — главной (англ. master) и подчинённой (англ. detail) — имеются или отсутствуют соответствия между записями таблиц, участвующих в слиянии. Для решения этой задачи используются механизмы внутреннего (англ. inner) и внешнего (англ. outer) слияния.

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

SELECT * FROM table_name

SELECT name, id FROM table_name WHERE id = 1

SELECT * FROM table_name ORDER BY name DESC

ПРОВЕРКА НА ЧЛЕНСТВО В МНОЖЕСТВЕ (IN)

ПРОВЕРКА НА ПРИНАДЛЕЖНОСТЬ ДИАПАЗОНУ ЗНАЧЕНИЙ (BETWEEN)

Задается предложением BETWEEN нижняя_граница ANDверхняя_граница

При проверке на принадлежность диапазону верхний и нижний пределы считаются частью диапазона.

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

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

С помощью формы not in можно убедиться в том, что значение данных не является членом заданного множества. Проверяемое выражение в проверке in может быть любым допустимым выражением, однако обычно оно представляет собой короткое имя столбца, как в предыдущих примерах. Если результатом проверяемого выражения является значение null, то проверка INтакже возвращает значение null. Все значения в списке заданных значений должны иметь один и тот же тип данных, который должен быть сравним с типом данных проверяемого выражения.

Как и проверка between, проверка in не добавляет в возможности SQL ничего нового, поскольку условие поиска

Х IN (А, В, С)

полностью эквивалентно условиям

(X = A) OR (X = В) OR (X = С)

Однако проверка in предлагает гораздо более эффективный способ выражения условия поиска, особенно если множество содержит большое число элементов. В стандарте ANSI/ISO не определено максимальное количество элементов множества, и в большинстве коммерческих реализаций не задано явного верхнего предела. По соображениям переносимости лучше избегать множеств, содержащих один элемент, наподобие такого:

CITY IN ('New York')

Их следует заменять на следующее простое сравнение:

CITY = 'New York'

Для чтения строк, в которых содержимое некоторого текстового столбца совпадает с заданным текстом, можно использовать простое сравнение/

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

ПОДСТАНОВОЧНЫЕ ЗНАКИ

Подстановочный знак % совпадает с любой последовательностью из нуля или более символов.

Подстановочный знак "_" (символ подчеркивания) совпадает с любым отдельным символом.

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

С помощью формы not like можно находить строки, которые несоответствуют шаблону. Проверку like можно применять только к столбцам, имеющим строковый тип данных. Если в столбце содержится значение null, то результатом проверки like будет значение null.

СИМВОЛЫ ПРОПУСКА *

При проверке строк на соответствие шаблону может оказаться, что подстановочные знаки входят в строку символов в качестве литералов. Например, нельзя проверить, содержится ли знак процента в строке, просто включив его в шаблон, поскольку SQL будет считать этот знак подстановочным. Как правило, это не вызывает серьезных проблем, поскольку подстановочные знаки довольно редко встречаются в именах, названиях товаров и других текстовых данных, которые обычно хранятся в базе данных.

В стандарте ANSI/ISO определен способ проверки наличия в строке литералов, использующихся в качестве подстановочных знаков. Для этого применяются символы пропуска. Когда в шаблоне встречается такой символ, то символ, следующий непосредственно за ним, считается не подстановочным знаком, а литералом. (Происходитпропусксимвола.) Непосредственно за символом пропуска может следовать либо один из двух подстановочных знаков, либо сам символ пропуска, поскольку он тоже приобретает в шаблоне особое значение.

Символ пропуска определяется в виде строки, состоящей из одного символа, и предложения escape

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

Символы пропуска часто используются при проверке на соответствие шаблону; именно поэтому они были включены в стандарт ANSI/ISO. Однако они не входили в первые реализации SQLи поэтому не очень распространены. Для обеспечения переносимости приложений предложения escape использовать не следует.

ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ № 9

1. Структура реляційної СКБД.

Супервизор

Ядpо СУБД, постоянно находящееся в ОП.

обеспечивает взаимодействие всех программных модулей. Язык запросов

Для выполнения опеpаций с БД (выбоpка, изменение, добавление, удаление) использу-ется язык манипулиpования данными (ЯМД).

С помощью языка определения данных (ЯОД) создается схема БД.

Язык запросов может быть как самостоятельным языком конкpетной СУБД, так и

подмножеством любого языка пpогpаммиpования (PL/1, C). Транслятор

Пpедназначен для анализа исходного пpогpаммного модуля и выбоpок из него запpосов к БД, так как в общем случае исходный модуль содеpжит кpоме запpосов к БД обычные опеpатоpы языка (IF,WHILE,GOTO).

Пpоцесс анализа исходного модуля может осуществляться как интеpпpетатоpом, так и компилятоpом. Компиляция имеет пpеимущества с точки зpения пpоизводительности, но она пpиводит к снижению независимости пpогpамм от данных.

Генератор прикладных задач

Функция заключается в пpеобpазовании запpосов ЯМД в оптимизиpованные пpогpаммы в объектном коде. Оптимизация заключается в выбоpе для каждого пpедложения ЯМД оптимальной стpатегии его pеализациии.

Пpи использовании непpоцедуpного ЯМД (для SQL ─ это опеpатоp SELECT...FROM...WHERE) пользователь указывает то, что он хочет получить из БД, не указывая как это сделать.

Программа управления хранимыми данными

Выполняет все функции по доступу к физическим данным: поддержание индекса, поиск, выборка, обновление.

Системный каталог

Системная БД, содержащая информацию относительно различных объектов СУБД (метаданные).

Структура всех таблиц БД, представления отдельных пользователей (внешние схемы, существующие индексы, пpава доступа пользователей).

Этой инфоpмацией по меpе необходимости пользуются все пpогpаммные модули.

2.Операція вибірки SELECT. Використання фраз BETWEEN, IN.

Проверка на принадлежность диапазону значений (BETWEEN)

проверяемое_выражение [NOT] BETWEEN минимум AND максимум

Пример. Получить список студентов, получающих стипендию в диапазоне от 650 до 1100 грн. ( Кортеж входит в выборку, если значение указанного поля попадают в промежуток заданый в BETWEEN)

SELECT stName, stStipend FROM Students

WHERE stStipend BETWEEN 650 AND 1100;

Проверка на принадлежность множеству (IN)

 

проверяемое_выражение [NOT] IN (набор_констант)

 

Пример. Получить список студентов, получающих стипендию 650

или 730, или 900

грн. ( Кортеж входит в выборку, если значение указанного поля

поля попадают в масив

заданый в IN)

 

SELECT stName, stStipend

 

FROM Students

 

WHERE stStipend IN (650, 730, 900);

 

3. 3адача.

 

ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ № 10

1.Переваги використання моделей даних.

Модели данных характеризуются тремя компонентами:

1)допустимая организация данных (структуры данных) - иерархии (деревья), сети (графы), таблицы (отношения);

2)множество операций, допустимых над объектами – низкоуровневые операции доступа (поиск, вставка, удаление), математические операции реляционной алгебры;

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

2.Застосування агрегатних функцій для виконання підрахунків у запитах вибірки

SELECT.

Агрегатна функція — функція, яка повертає одинарне значення з колекції вхідних значень такої як множина, мультимножина або список. В SQL агрегатні функції повертають одинарне значення, обчислене зі значень в стовпці. * AVG() - Повертає середнє значення * COUNT() - Повертає кількість рядків

*MAX() - Повертає найбільше значення

*MIN() - Повертає найменше значення

*SUM() - Повертає суму

SELECT student_name, AVG(test_score) FROM student GROUP BY student_name; SELECT student.student_name,COUNT(*) FROM student,course WHERE student.student_id=course.student_id GROUP BY student_name;

SELECT student_name, MIN(test_score), MAX(test_score) FROM student GROUP BY

student_name;

 

SELECT cate_id,SUM(total_cost) FROM purchase

GROUP BY cate_id

3.3адача.

ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ № 11

1. Адміністрування БД.

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

Администрирование базы данных представляет собой общее управление базой данных и подразумевает использование команд всех уровней.

2. Операція вибірки SELECT. Фрази GROUP BY, HAVING, ORDER BY.

Строки результатов запроса, как и строки таблицы БД, не имеют определенного порядка. Результаты запроса можно отсортировать, включив в оператор SELECT предложение ORDER BY. Это предложение состоит из ключевых слов ORDER BY, за которыми следует список имен столбцов, разделенных запятыми. В предложении ORDER BY можно выбрать возрастающий (ASC) или убывающий (DESC) порядок сортировки. По умолчанию, данные сортируются в порядке возрастания. Чтобы сортировать их по убыванию, следует включить в предложение сортировки ключевое слово DESC.

Запросы с группировкой. Предложение GROUP BY.

Итоговые запросы, о которых до сих пор шла речь рассчитывают итоговые результаты на основании всех записей в таблице. Однако чаще бывает необходимо получать промежуточные итоги на основании отдельных групп записей в таблице. Эту возможность предоставляет предложение GROUP BY оператора SELECT.

Запрос, включающий в себя предложение GROUP BY, называется запросом с группировкой, поскольку он объединяет строки исходных таблиц в группы и для каждой группы строк генерирует одну строку таблицы результатов запроса. Столбцы, указанные в

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

Пример 2. Получить список студентов и их средний балл.

SELECT StName, AVG(Mark) AS AvgMark FROM Students, Marks

WHERE Students.StNo = Marks.StNo GROUP BY StName

В этом запросе в склеенной таблице по каждому студенту образуется своя группа и для этой группы подсчитывается средняя оценка.

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

Точно так же, как предложение WHERE используется для отбора отдельных строк, участвующих в запросе, предложение HAVING применяется для отбора групп строк. Его формат соответствует формату предложения WHERE. Предложение HAVING состоит из ключевого слова HAVING, за которым следует условие поиска. Это условие поиска позволяет отбирать допустимые записи, участвующие в поиске (аналог оператора WHERE), и группы, участвующие в поиске.

Примечание 1. Важной особенностью HAVING, отличающей его от WHERE, является то, что в HAVING можно использовать агрегатные функции. Это позволяет отбирать группы по ограничению на результаты агрегатных функций, применяемых к элементам группы.

Примечание 2. В одном запросе могут встретиться как условия отбора строк в разделе WHERE, так и условия отбора групп в разделе HAVING. Условия отбора групп нельзя перенести из раздела HAVING в раздел WHERE. Аналогично и условия отбора строк нельзя перенести из раздела WHERE в раздел HAVING,

Запишите себе примеры:

Пример 1. Получить список групп специальности КИ, в которых число студентов меньше 15.

SELECT grName, COUNT(*) AS CntStudents FROM Students, Groups

WHERE Students.gtNum = Groups.grNum AND Groups.grName LIKE ‘КИ*’

GROUP BY grName

HAVING COUNT(*) < 15

ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ № 12

1.Iнформаційне моделювання предметних середовищ.

ВПО объекты находятся в определенных взаимосвязях друг с другом. Существует 3 вида взаимосвязей : ассоциация, обобщение и агрегация.

Ассоциация обозначает наличие логической связи между объектами. С каждой ассоциацией связано понятие мощности, которое может принимать одно из следующих значений: 1:1, 1:М (М:1)

иM:N. Мощность обозначает количество объектов определенного типа, которые будут участвовать в связи.

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

И агрегация - целое/часть, например, лепесток является частью цветка (неотъемлемой), двигатель частью автомобиля и т.д.

Ассоциация 1:1 имеет место, когда каждому экземпляру первого объекта (А) соответствует только один экземпляр второго объекта (В)и наоборот, каждому экземпляру второго объекта (В) соответствует только один экземпляр первого объекта (А). Следует заметить, что такие объекты легко могут быть объединены в один, структура которого образуется объединением реквизитов обоих исходных объектов, а ключевым реквизитом может быть выбран любой из альтернативных ключей, т.е. ключей исходных объектов.

Для представления связи 1:1 в схеме реляционной БД создаются две таблицы для каждого из объектов предметной области и первичный ключ одного из них (по выбору) добавляется к списку атрибутов другого объекта:

Ассоциация 1:М - это такая связь, когда экземпляру одного объекта (А) может соответствовать несколько экземпляров другого объекта (В), а каждому экземпляра второго объекта (В) может соответствовать только один экземпляр первого объекта (А). Примером связи 1 – М являются подразделения – сотрудники, кафедра – преподаватель, группа студент и т.п.

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

Для реализации связи 1:М (М:1) в схеме реляционной БД первичный ключ объекта со стороны «1» добавляется к списку атрибутов объекта со стороны «М»:

Ассоциация M:N - это когда каждому экземпляру одного объекта (А) могут соответствовать несколько экземпляров второго объекта (В) и наоборот, каждому экземпляру второго объекта (В) может соответствовать тоже несколько экземпляров первого объекта (А)

Для реализации связи М:N в схеме реляционной БД необходимо создать дополнительную таблицу, первичный ключ которой будет составным и представлять собой сочетание первичных ключей объектов, участвующих в связи:

2.Операція вибірки SELECT. Запити до багатьох таблиць.

Здесь наверное нужно сказать о том, что для работы с несколькими таблицами можно написать FROM table1, table2, table3. Таким образом мы получаем доступ ко всем полям из таблиц table1, table2, table3.

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

SELECT [ALL | DISTINCT] список_возвращаемых_столбцов|* FROM список_имен_таблиц

[WHERE условие_поиска]

[GROUP BY список_имен_столбцов] [HAVING условие_поиска]

[ORDER BY имя_столбца [ASC | DESC],…]

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