
- •Контрольные вопросы для проведения экзамена по дисциплине «Базы данных»
- •1. Понятие информации и данных. Экономические показатели. Опреде-ление и структура показателя.
- •2. Структурирование данных. Классификация данных по степени структурированности.
- •3. Приведите следующие определения: предметная область, структурирование, база данных, субд, банк данных, целостность бд, транзакция.
- •4. Функции субд.
- •5. Классификация субд и бд.
- •6. Этапы развития бд.
- •7. Перспективы развития субд и бд.
- •8. Понятие модели данных. Охарактеризуйте иерархическую модель данных. Недостатки иерархической модели.
- •9. Понятие модели данных. Сетевые модели бд: особенности, преимущества, недостатки.
- •10. Реляционные модели данных: особенности, преимущества, недостатки.
- •11. Постреляционные модели данных: особенности, преимущества, недостатки.
- •12. Охарактеризуйте объектно-ориентированную модель данных (оомд). Достоинства и недостатки оомд.
- •13. Многомерные модели данных: особенности, преимущества, недостатки.
- •14. Основные понятия реляционной модели данных: реляционная база данных, отношение, схема отношения, сущность, атрибут, домен, кортеж, первичный ключ.
- •15. Реляционные модели. Понятие и свойства отношений.
- •16. Проектирование реляционных бд на основе принципов нормализации. Цель нормализации. Нормальные формы отношений.
- •17. Понятие ключа отношения. Необходимость задания ключей. Виды ключей. Свойства ключа.
- •18. Реляционная алгебра как формальная система манипулирования отношениями в реляционной модели данных. Свойство замкнутости. Краткий обзор операций реляционной алгебры.
- •19. Унарные операции реляционной алгебры: описание, примеры.
- •20. Бинарные операции реляционной алгебры: описание, примеры.
- •21. Этапы проектирования баз данных. Состав работ, выполняемых на стадии инфологического проектирования. Технологическая сеть проектирования.
- •24. Нотации er-моделирования: понятие, виды, отличительные особен-ности, примеры отображения элементов в различных нотациях.
- •25. Цель нормализации. Нормальные формы er-схем.
- •26. Алгоритм преобразования er-модели в схему реляционной бд.
- •27. Case-средства проектирования бд: назначение, базовые функцио-нальные возможности, примеры современных case-средств.
- •Тема 5. Проектирование баз данных – логическое и физическое моделирование
- •28. Состав работ, выполняемых на стадии логического проектирования бд.
- •30. Ограничения целостности: понятие и классификация.
- •31. Понятие ссылочной целостности (целостности связи). Стратегии поддержания ссылочной целостности.
- •32. Языки запросов: понятие, классификация.
- •34. Язык sql. Общая характеристика, стандарты, подмножества языка sql.
- •35. Основные типы данных (на примере конкретной(ых) субд).
- •36. Какие команды относятся к категории ddl? Опишите общий вид синтаксиса команд ddl, приведите пример(ы) каждой команды.
- •37. Задание ограничений целостности на языке sql. Примеры.
- •38. Какие команды относятся к категории dml? Опишите способы добавления строк в таблицу (общий вид синтаксиса команд добавления строк в таблицу, примеры).
- •39. Команда изменения данных таблицы: общий вид синтаксиса, примеры.
- •40. Команда удаления строк из таблицы: общий вид синтаксиса, примеры.
- •41. Команда изменения структуры таблицы: общий вид синтаксиса, примеры.
- •48. Вложенные запросы в sql: типы, примеры по каждому из типов.
- •49. Создание и использование представлений в sql. Примеры.
- •50. Оператор case: синтаксические формы записи, примеры использова-ния.
- •51. Курсоры: понятие курсора, общий синтаксис, пример использования.
- •52. Понятие и классификация экранных форм.
- •53. Понятие и классификация отчётов.
- •Тема 12. Безопасность данных
- •Тема 13. Распределённые базы данных
38. Какие команды относятся к категории dml? Опишите способы добавления строк в таблицу (общий вид синтаксиса команд добавления строк в таблицу, примеры).
39. Команда изменения данных таблицы: общий вид синтаксиса, примеры.
40. Команда удаления строк из таблицы: общий вид синтаксиса, примеры.
41. Команда изменения структуры таблицы: общий вид синтаксиса, примеры.
42. Общий синтаксис и алгоритм выполнения команды Select языка SQL.
Наиболее часто при проектировании запроса используется команда языка запросов SELECT. С ее помощью можно извлекать данные, хранящиеся в таблицах баз данных, соответствующих определенным критериям поиска. Такой запрос называется запросом на выборку. Синтаксис данной команды приведен ниже:
SELECT [ALL |DISTINCT |TOP n]
<что выводится (поля базы данных)> AS <поля-псевдонимы>
FROM <откуда (таблица-источник1)> INTO <куда (таблица-получатель)>
[INNER JOIN (таблица-источник2) ON поле_таблицы-источник1= поле_таблицы-источник2]
WHERE <условия отбора полей>
GROUP BY <поля, по которым выполняется группирование записей>
ORDER BY <порядок сортировки данных [ASC|DESC]>;
Рассмотрим значения аргументов:
– ALL – при указании данного ключевого слова в результат запроса разрешается включение дублирующих записей. Параметр ALL включен по умолчанию.
– DISTINCT – запрет на появление в результате дублирующих строк.
– TOP n – вывод в результат запроса только n первых строк.
– <поля базы данных> AS <поля-псевдонимы> – список полей, перечисляемых через «,», которые необходимо включить в результат запроса (синтаксис: название_таблицы.название_поля). Если необходимо включить все поля таблицы, используется символ «*». Поля, включаемые в запрос, могут быть переименованы указанием ключевого слова ASи списка псевдонимов.
– FROM – указывается таблица или представление, которые используются в качестве источника исходной информации. В случае, когда источником являются связанные таблицы, после параметра FROM указывается таблица со стороны «один».
43. Формирование списка вывода в команде Select: общий синтаксис, примеры. Использование псевдонимов в SQL. Упорядочение резуль-тата в ответе. Привести примеры.
Тот же ответ (как в 42 вопросе)
Пример. На основании таблицы Spisok получить таблицу со всеми записями следующего вида:
Фамилия Стипендия
Подается команда:
SELECT fio, stip FROM Spisok;
Результат выполнения команды приведен на рисунке.
fio stip
Рыбкина 3000
Уткина 2000
Пшеничко 2000
Собачкина 2000
Яичко 3500
Select- ключевое слово, которое «сообщает» СУБД о том, что команда является запросом;
fio, stip- список имен полей (столбцов), по которым должна выбираться информация и нормироваться новая таблица
FROM Spisok; FROM-ключевое слово , должно быть в каждом запросе; Spisik- имя таблицы –источника данных для запроса;
Символ точка с запятой (;) признак окончания команды и готовности к её выполнению.
После ключевого слова SELECT следует пробел. Далее через запятую перечисляются имена полей(столбцов) выборки.
Для вывода всех столбцов таблицы базы данных список полей можно не перечислять, заменив его символом «звездочка» (*). Столбцы выводятся в соответствии со структурой таблицы-источника
SELECT * FROM Spisok;
Командой SELECT можно выводить столбцы в любой последовательности, отличной от упорядоченной по определению структуры таблицы-источника. Эта последовательность задается перечнем имен столбцов в команде SELECT. Пример переупорядоченных столбцов в выходной таблице
SELECT kurs, gruppa, fio FROM Spisok;
44. Формирование условия выбора записей в команде Select. Использова-ние логических операторов и операторов сравнения. Примеры.
С помощью WHERE – параметра пользователь определяет, какие блоки данных из приведенных в списке FROMтаблиц появятся в результате запроса. За ключевым словом WHERE! следует перечень условий поиска, определяющих те строки, которые должны быть выбраны при выполнении запроса. Существует пять основных типов условий поиска (или предикатов):
- сравнение, сравниваются результаты вычисления одного выражения с результатами вычисления другого.
- диапазон: проверяется, попадает ли результат вычисления выражения в заданный диапазон значений.
- принадлежность множеству, проверяется, принадлежит ли результат вычислений выражения заданному множеству значений.
- соответствие шаблону, проверяется, отвечает ли некоторое строковое значение заданному шаблону.
- значение NULL: проверяется, содержит ли данный столбец определитель NULL(неизвестное значение).
Пример 6. Отобразить студентов с ФИО Петров.
SELECT Fam, Imy FROM Student WHERE Fam = "Петров";
Сравнение
В языке SQL можно использовать следующие операторы сравнения: = – равенство; < – меньше; > – больше; <= – меньше или равно; >= – больше или равно; <> – не равно.
Пример 8. Показать все операции отпуска товаров объемом больше 20.
SELECT *
FROM Sdelka
WHERE Kolichestvo>20
Более сложные предикаты могут быть построены с помощью логических операторов AND, OR или NOT, а также скобок, используемых для определения порядка вычисления выражения. Вычисление выражения в условиях выполняется по следующим правилам.
- Выражение вычисляется слева направо.
- Первыми вычисляются подвыражения в скобках.
- Операторы NOT выполняются до выполнения операторов AND и OR.
- Операторы AND выполняются до выполнения операторов OR.
Для устранения любой возможной неоднозначности рекомендуется использовать скобки.
Пример 9. Вывести список товаров, цена которых больше или равна 100 и меньше или равна 150.
SELECT Nazvanie,Cena
FROM Tovar
WHERE Cena>=100 And Cena<=150
Диапазон
Оператор BETWEEN используется для поиска значения внутри некоторого интервала, определяемого своими минимальным и максимальным значениями. При этом указанные значенья включаются в условие поиска.
BETWEEN <выражение 1> AND <выражение 2>
Пример 11. Вывести список товаров, цена которых лежит в диапазоне от 100 до 150.
SELECT Nazvanie, Cena
FROM Tovar
WHERE Cena Between 100 And 150
Значение NULL
Оператор IS NULL используется для сравнения текущего значения со значением NULL – специальным значением, указывающим на отсутствие любого значения. NULL – это не то же самое, что знак пробела (пробел – допустимый символ) или ноль (0 – допустимое число). NULL отличается и от строки нулевой длины (пустой строки).
Пример 26. Найти сотрудников, у которых нет телефона (поле Телефон не содержит никакого значения).
SELECT Familiya, Telefon
FROM Klient
WHERE Telefon Is Null
45. Использование предикатов в команде Select: общий синтаксис, при-меры использования (для каждого из предикатов).
В выражениях SELECT можно использовать несколько предикатов, приведенных ниже.
• ALL
• DISTINCT
• DISTINCTROW
• TOP
Эти предикаты служат для ограничения количества возвращаемых записей. В SQL-выражении их можно использовать с командой WHERE.
Предикат ALL назначен по умолчанию. Он выбирает все записи, которые в выражении SQL удовлетворяет условию WHERE. Указывать его необязательно, поскольку он назначен по умолчанию. Предикат DISTINCT необходимо включать, когда из запроса следует исключить одинаковые записи (рассматриваются только поля, включенные в запрос). Например, при создании запроса, выводящего идентификатор покупателя и день, в который он сделал заказ, нужно использовать следующее SELECT DISTINCT [CustomerlD], [OrderDate]
Если в таблицу Orders помещено два заказа одного покупателя за один день, то в результирующей таблице будет содержаться только одна запись. Предикат DISTINCT указывает Access, что, если отобранные поля содержат одинаковые значения, нужно выводить только одну запись. Даже если на самом деле в таблице Orders есть две различные записи, то отображена будет только одна из них. Предикат DISTINCT проверяет дублирование только для полей, указанных для просмотра.
Предикат DISTINCT предназначен для исключения записей, которые содержат повторяющиеся значения в отобранных полях. Для того чтобы запись была включена в результат выполнения запроса, значения в каждом поле, включенном в инструкцию SELECT, должны быть уникальными.
DISTINCTROW— это предикат, существующий только в Access. Он работает подобно предикату DISTINCT, но с одним большим отличием: DISTINCTROW проверят совпадение в таблице или таблицах всех полей, а не только выбранных. Предикат DISTINCTROW используется для исключения записей, повторяющихся полностью. Он влияет на результат только в том случае, если в запрос включены не все поля из анализируемых таблиц. Предикат DISTINCTROW игнорируется, если запрос содержит только одну таблицу.
Если, например, какому-либо покупателю в таблице Orders соответствуют две различные записи, то при использовании в предыдущем SQL-выражении distinctrow вместо DISTINCT будут выведены обе записи. Предикат DISTINCTROW проверяет совпадение всех полей в таблицах Customers и Orders. Если содержимое каких-либо полей различно (в данном случае — идентификатор заказа), то будут выведены обе записи.
Предикат ТОР, который также характерен только для Access, ограничивает число выводимых записей, удовлетворяющих условию WHERE. Предикат TOP предназначен для возврата определенного числа записей, находящихся в начале или в конце диапазона, описанного с помощью предложения ORDER BY. Например, ТОР 10 выводит только десять первых записей, удовлетворяющих условию WHERE.
Предикат ТОР имеет один необязательный параметр PERCENT (процент), который указывает не количество первых записей, а их процентное отношение к общему числу отобранных записей.
46. Группирование данных в SQL. Использование агрегирующих функ-ций для получения сводной информации. Примеры.
Функциями агрегирования называются функции, которые позволяют определить количество записей в таблице, количество значений в столбце таблицы, найти минимальное, максимальное и среднее значение для столбца таблицы, вычислить сумму данных для столбца. Таким образом, агрегирующие функции обеспечивают получение некоторой обобщенной информации.
В SQL определены следующие стандартные функции агрегирования:
· COUNT — выполняет подсчет записей в таблице пли подсчет ненулевых значений в столбце таблицы;
· SUM — возвращает сумму содержащихся в столбце значений;
· MIN — возвращает минимальное значение в столбце;
· МАХ — возвращает максимальное значение в столбце;
· AVG — вычисляет среднее значение для содержащихся в столбце значений.
В качестве примера рассмотрим таблицу Продажи. Подсчитаем количество записей в поле Продано, минимальное и максимальное количество проданных товаров, общую сумму проданных товаров и среднее значение проданных товаров. Для этого нужен следующий запрос:
SELECT COUNT(продано) AS [Всего записей].
MIN(Продано) AS miп.
МАХ(Продано) AS max,
SUM(Продано) AS [Всего продано].
AVG(Продано) AS [Среднее количество продаж]
FROM Продажи
Результат выполнения этого запроса показан на рис. 22.
Со всеми функциями агрегирования можно использовать параметр DISTINCT. В этом случае выполняется обобщение информации только для различающихся строк.
Как правило, использовать параметр DISTINCT с агрегирующими функциями не имеет смысла, поскольку при подсчете обобщенных данных обычно приходится учитывать все записи, а не только уникальные.
Группировка данных — это объединение записей в соответствии со значениями некоторого поля. Для группировки результатов выборки совместно с оператором SELECT используется предложение GROUP BY. Данное предложение должно следовать после предложения WHERE, но перед предложением ORDER BY. После ключевых слов GROUP BY указывается список полей, включенных в выборку с помощью оператора SELECT. Причем нужно обязательно указывать все отбираемые ноля (за исключением полей, относящихся к агрегирующим функциям), хотя порядок их перечисления после предложения GROUP BY может не соответствовать порядку списка после слова SELECT.
Синтаксис оператора SELECT с предложением GROUP BY следующий:
SELECT поле1. поле2 полеN
FROM Таблица1 {. Таблица2 ТаблицаN}
WHERE условие
GROUP BY поле1. поле2 полеN
ORDER BY поле1 {ASC | DESC}
Например, если выбрать из таблицы Товары два поля — Наименование и Категория, а затем сгруппировать их с помощью следующего запроса, то результат выборки будет упорядочен по значению первого поля, указанного в предложении GROUP BY.
47. Использование фразы HAVING при группировании данных в SQL. Примеры.
Для отбора строк среди полученных групп применяется фраза HAVING. Она играет такую же роль для групп, что и фраза WHERE для исходных таблиц, и может использоваться лишь при наличии фразы GROUP BY. В предложении SELECT фразы WHERE, GROUP BY и HAVING обрабатываются в следующем порядке.
Фразой WHERE отбираются строки, удовлетворяющие указанному в ней условию;
Фраза GROUP BY группирует отобранные строки;
Фразой HAVING отбираются группы, удовлетворяющие указанному в ней условию.
Значение условия, указываемого во фразе HAVING, должно быть уникальным для всех строк каждой группы. Поэтому правила использования имен столбцов и агрегатных функций во фразе HAVING такие же, как и для фразы SELECT при наличии фразы GROUP BY. Это значит, что во фразе HAVING в качестве операндов сравнения можно использовать только группируемые столбцы или агрегатные функции.
Запрос: Список городов, количество клиентов из которых больше 10.
SELECT IdCity
FROM Customer
GROUP BY IdCity
HAVING COUNT(*)>10
Условие поиска раздела HAVING строится по тем же синтаксическим правилам, что и условие поиска раздела WHERE, и может включать те же самые предикаты. Однако имеются специальные синтаксические ограничения по части использования в условии поиска спецификаций столбцов таблиц из раздела FROM данного табличного выражения. Эти ограничения следуют из того, что условие поиска раздела HAVING задает условие на целую группу, а не на индивидуальные строки.
Поэтому в арифметических выражениях предикатов, входящих в условие выборки раздела HAVING, прямо можно использовать только спецификации столбцов, указанных в качестве столбцов группирования в разделе GROUP BY. Остальные столбцы можно специфицировать только внутри спецификаций агрегатных функций COUNT, SUM, AVG, MIN и MAX, вычисляющих в данном случае некоторое агрегатное значение для всей группы строк. Аналогично обстоит дело с подзапросами, входящими в предикаты условия выборки раздела HAVING: если в подзапросе используется характеристика текущей группы, то она может задаваться только путем ссылки на столбцы группирования.
Результатом выполнения раздела HAVING является сгруппированная таблица, содержащая только те группы строк, для которых результат вычисления условия поиска есть TRUE. В частности, если раздел HAVING присутствует в табличном выражении, не содержащем GROUP BY, то результатом его выполнения будет либо пустая таблица, либо результат выполнения предыдущих разделов табличного выражения, рассматриваемый как одна группа без столбцов группирования.