Ответы на билеты по дисциплине Базы данных. Базы данных. Вопросы к экзамену по дисциплине Базы данных
Скачать 0.68 Mb.
|
DELETE FROM PaySumma P WHERE EXISTS (SELECT * FROM Abonent A, Street S WHERE S.StreetNM = ‘ТАТАРСКАЯ УЛИЦА’ AND A.StreetCD = S. StreetCD AND P.AccountCD = A. AccountCD);. При помощи какой команды осуществляется модификация данных в MSSQLServer? Модификация данных может выполняться с помощью команд: DELETE (удалить), INSERT (вставить), UPDATE (обновить). Приведите пример использования команды UPDATE с предложением FROM. UPDATE [University].[dbo].[Fack] SET [FackName] = 'КТАСиЗИ' FROM [University].[dbo].[Fack], [University].[dbo].[Univeristy] WHERE ([Univeristy].[UniveristyName] = 'КубГТУ') and ([Fack].[FackName]='КТАС') SET указывает столбцы, которые будут изменяться, и значения, которые им присваиваются. С помощью предложения WHERE отбираются записи, которые будут обновляться. Команда UPDATE не может вставить в колонку данные «чужого» типа либо значения, которые нарушают правила ввода для столбца. В случае неудачи хотя бы с одним столбцом изменения произведены не будут. Приведите пример обновления множества записей. Пусть требуется утроить цену всех продуктов таблицы поставки (кроме цены за кофе, где код продукта (Поле ПР) - ПР = 17). UPDATE Поставки SET Цена = Цена * 3 WHERE ПР <> 17; Приведите пример обновления записей с подзапросом. В UPDATE можно в предложении WHERE использовать вложенные запросы. Также допускается использование вложенного запроса в предложении SET. Установить равной нулю цену и К_во продуктов для поставщиков из Москвы и Ростова. UPDATE Поставки SET Цена = 0, К_во = 0 WHERE ПС IN (SELECT ПС FROM Поставщики WHERE Город IN ('Москва', 'Ростов')); Приведите пример обновления записей нескольких таблиц. Пусть необходимо изменить данные о продукте с кодом 13 в двух таблицах «Состав» и «Наличие». Например требуется изменить номер продукта ПР = 13 на ПР = 20. UPDATE Продукты UPDATE Состав SET ПР = 20 SET ПР = 20 WHERE ПР = 13; WHERE ПР = 13; UPDATE Поставки UPDATE Наличие SET ПР = 20 SET ПР = 20 WHERE ПР = 13; WHERE ПР = 13; К сожалению, в единственном запросе невозможно обновить более одной таблицы, а так как код продукта входит в четыре таблицы, то пришлось сформировать четыре сходных запроса. Это может привести к противоречию базы данных (нарушению целостности по ссылкам), поскольку после выполнения первого предложения таблицы Состав, Поставки и Наличие ссылаются на уже несуществующий продукт. База становится непротиворечивой только после выполнения четвертого запроса. Общая структура команды SELECT. Где и для каких целей применяется выборка? Как просмотреть результаты выборки? С помощью команды SELECT можно найти и просмотреть данные из базы данных, причем сделать это несколькими способами. Хотя этот оператор обычно применяется для извлечения данных со специфическими свойствами, его можно использовать и для присваивания значений локальным переменным, и для вызова функций. Оператор SELECT может быть простым или сложным. Синтаксически оператор SELECT состоит из нескольких предложений, большинство из которых не являются обязательными. Этот оператор должен обязательно иметь предложения SELECT и FROM. Они задают соответственно колонку(и) и таблицу(ы), из которых будут извлекаться данные. Предложение WHERE указывает, какие записи надо выбрать. SELECT <Список столбцов> FROM <Список таблиц> [WHERE <Условия поиска>] В случае если необходимо просто вывести информацию из всех столбцов, имеющихся в таблицах (указанных в предложении FROM), используйте звездочку (*). В этом случае поля на экран будут выводиться в том порядке, как они создавались с помощью команды CREATE TABLE. SELECT * FROM Groups Результат выборки, например: G_number P_name -------- ------------ 03-KT-21 программисты 03-KT-22 программисты 03-KT-23 программисты (3 row(s) affected) Приведите примеры условий формирования условий отбора? Перечислить операторы, которые могут применяться в предложении WHERE? Операторы, используемые в предложении WHERE
При использовании операторов сравнения необходимо придерживаться двух простых правил: Выражения могут содержать константы, имена столбцов, функции, вложенные запросы и арифметические операторы. Использовать одинарные кавычки с данными типа char, varchar, text, datetime и smalldatetime. Хотя двойные кавычки не запрещены, одинарные кавычки предпочтительней для совместимости со стандартом ANSI. Операторы сравнения
Обычно в предложении WHERE приходится использовать несколько условий поиска, которые объединяются логическими операторами AND, OR, NOT (их еще называют булевыми операторами). Смысл этих операторов такой же, как и во всех языках программирования: AND – это логическое И, a OR – ИЛИ. При выборке символьных данных иногда возникают трудноразрешимые вопросы, связанные с тем, что мы не всегда можем точно вспомнить какую-либо информацию. В этом случае на помощь приходит оператор LIKE. Синтаксис оператора LIKE: WHERE <Имя столбца> [NOT] LIKE < 'Шаблон' > [ESCAPE <Символ>] Дополнительные возможности вывода в предложении SELECT. По умолчанию сортировка производится по возрастанию. Если вам нужна сортировка в обратном порядке, можете воспользоваться опцией DESC предложения ORDER BY. Например, если в предыдущем запросе в предложении ORDER BY будет добавлена опция DESC, то выборка будет отсортирована в обратном алфавитному порядке: SELECT 'Студенты:'+space(1), S_lastname Фамилия, S_name Имя, S_patronymic Отчество FROM Student ORDER BY S_lastname, S_name, S_patronymic DESC Проверка на принадлежность диапазону значений. Проверка на соответствие шаблону. Другой формой условия поиска является проверка на принадлежность диапазону значений, которая реализуется с помощью ключевого слова BETWEEN. Синтаксис использования этого условия поиска следующий: <значение> [NOT] BETWEEN <значение1> AND <значение2>. Например, если необходимо найти номера лицевых счетов абонентов, у которых значения начислений за оказанные услуги лежат в диапазоне от 60 до 250, то соответствующий запрос будет выглядеть следующим образом: SELECT AccountCD, Nаchislsum FROM NachislSumma WHERE NachislSum BETWEEN 60 AND 250;. Результат выполнения запроса: ACCOUNTCD NACHISLSUM 115705 250,00 080047 80,00 080047 80,00 115705 250,00 443069 80,00 005488 62,13 080270 60,10 Проверка на соответствие шаблону, которая осуществляется с помощью ключевого слова LIKE, позволяет определить, соответствует ли значение данных некоторому шаблону. Синтаксис использования этого условия поиска следующий: <значение> [NOT] LIKE 'шаблон' [ESCAPE 'символ_пропуска']. Например, пусть необходимо выбрать из таблицы Abonent абонентов, фамилии которых начинаются с буквы С. Для условия поиска используется шаблон 'С%' следующим образом: SELECT Fio FROM Abonent WHERE Fio LIKE 'C%';. Результат выполнения запроса: FIO СВИРИНА З.А. СТАРОДУБЦЕВ Е.В. Составные условия поиска. - NOT задает отрицание условия поиска, к которому применяется, и имеет наивысший приоритет. Используется следующий синтаксис: NOT <условие_поиска>; - AND создает сложный предикат, объединяя два или более условий поиска, каждое из которых должно быть истинным, чтобы был истинным и весь предикат. Данная операция является следующей по приоритету после NOT. Используется следующий синтаксис: <условие_поиска1> AND <условие_поиска2> …; - OR создает сложный предикат, объединяя два или более условий поиска, из которых хотя бы одно должно быть истинным, чтобы был истинным и весь предикат. Является последней по приоритету из трех логических операций и имеет следующий синтаксис: <условие_поиска1> OR <условие_поиска2> …. Дайте определения функции агрегирования. Перечислить функции агрегирования, опишите их назначение? Для подведения итогов по данным, содержащимся в БД, в языке SQL предусмотрены агрегатные (статистические) функции. Агрегатная функция берет в качестве аргумента какой-либо столбец (для множества строк), а возвращает одно значение, определяемое типом функции: AVG – среднее значение в столбце; SUM – сумма значений в столбце; MAX – наибольшее значение в столбце; MIN – наименьшее значение в столбце; COUNT – количество значений в столбце. Примеры использования: чтобы вычислить среднее значение оплат всех абонентов, необходимо выполнить следующий запрос: SELECT AVG(Paysum) FROM Paysumma;. Результат выполнения : AVG 45,17 для нахождения суммы всех значений начислений можно использовать следующий запрос: SELECT SUM(NachislSum) FROM NachislSumma;. Результат выполнения: SUM 2 213,61 чтобы найти в таблице PaySumma максимальное и минимальное значения оплат можно выполнить следующий запрос: SELECT MAX(PaySum), MIN(PaySum) FROM PaySumma;. Результат выполнения: MAX MIN 250,00 8,30 Следующий запрос позволяет подсчитать число различных абонентов, которые подавали заявки на ремонт газового оборудования: SELECT COUNT(DISTINCT AccountCD) FROM Request;. Результат выполнения : COUNT 10 Какое предложение применяется для сортировки данных выборки, условия его применения? Каким образом осуществляется выборка из нескольких страниц? Приведите пример создания таблицы на основе выборки. Скалярные функции SQL. Скалярные пользовательские функции возвращают скалярный (однозначный) результат, такой как строка или число. На типы данных, возвращаемых скалярной функцией, накладывается несколько ограничений. Запрещается использовать нескалярные типы, такие как курсоры и таблицы. Кроме того, скалярные функции не могут возвращать значения с типом timestamp, text, ntext или image, а также значения, имеющие тип данных, определенный пользователем, даже если базовый тип при этом является скаляром. Скалярные функции могут использоваться везде, где может использоваться возвращаемое функцией значение с соответствующим типом данных. Это может быть список столбцов в фразе WHERE оператора SELECT, выражение, условие ограничения в определении таблицы или даже описание типа данных в столбце таблицы. Строковые ф-ии Например, для вывода номеров лицевых счетов абонентов и первых трех символов их фамилии можно использовать следующий запрос: SELECT A.AccountCD, SUBSTRING (A.Fio FROM 1 for 3) AS Fio3 FROM Abonent A; Числовые ф-ии Эти функции возвращают числовые значения на основании значений того же типа, заданных в аргументе. Числовые функции используются для обработки данных, а также в условиях поиска. Ф-ии даты и времени Для выделения значений дня, месяца и года из даты используется функция EXTRACT. Синтаксис этой функции следующий: EXTRACT( { DAY | MONTH | YEAR} FROM <значение> ), где <значение> - любое выражение, возвращающее результат типа «дата-время» (т.е. название таблицы в формате даты). Ф-ия преобразования типа Агрегатные функции SQL.(см вопрос 67) Условные операторы в SQL. Многотабличные и вложенные запросы. Соединение таблиц. Дайте определения триггеру. Приведите примеры возможных триггеров? Описать синтаксис набора команд создания триггеров? Что необходимо учитывать при использовании триггеров? Триггер – это специальный тип хранимой процедуры, которая запускается автоматически системой SQL Server при модифицировании какой-либо таблицы одним из трех операторов: UPDATE, INSERT или DELETE. Триггеры, как другие хранимые процедуры, могут содержать простые или сложные операторы T-SQL. В отличие от других типов хранимых процедур триггеры запускаются автоматически при указанных модификациях данных; их нельзя запустить вручную по имени. Триггер создается по одной таблице базы данных, но он может осуществлять доступ и к другим таблицам и объектам других баз данных. Триггеры нельзя создать по временным таблицам или системным таблицам, а только по определенным пользователем таблицам или представлениям. Существует пять типов триггеров: UPDATE, INSERT, DELETE, INSTEAD OF и AFTER. Команда CREATE TRIGGER имеет следующий синтаксис: CREATE TRIGGER [<Имя владельца>.]<Имя триггера> ON [<Имя владельца>.]<Имя таблицы> FOR { INSERT | UPDATE | DELETE [, ...]} AS <Команда> Пример: CREATE TRIGGER Table_delete ON Student_c FOR DELETE AS DELETE S_lastname FROM Student, Deleted WHERE EXISTS Student.S_lastname = Deleted.Lastname Необходимо учитывать, что есть команды, которые нельзя использовать в триггерах: все команды CREATE применительно к объектам DATABASE, TABLE, INDEX, PROCEDURE, DEFAULT, RULE, TRIGGER и VIEW; все команды DROP; ALTER TABLE и ALTER DATABASE; TRUNCATE TABLE; GRANT и REVOKE; UPDATE STATISTICS; RECONFIGURE; LOAD DATABASE и LOAD TRANSACTION; все команды DISK; SELECT INTO (из-за того, что она создает таблицу). Дайте определение соединению. Перечислите основные конструкции для формирования соединений. Приведите пример использования конструкции JOIN. Приведите пример использования конструкции INNERJOIN. Конструкция JOIN выполняет именно ту задачу, на которую указывает смысл соответствующего английского глагола, — соединяет информацию из двух таблиц в один результирующий набор. Отличительная особенность INNER JOIN состоит в том, что она возвращает только те строки, которые были согласованны по всем полям. Наиболее предпочтительный формат кода для конструкции INNER JOIN выглядит примерно таким образом: |