Главная / Базы данных /
Основы SQL / Тест 11
Основы SQL - тест 11
Упражнение 1:
Номер 1
Разработана функция, определяющая по фамилии автора общий тираж книг.
CREATE FUNCTION user1.my_func1(@n VARCHAR(20))
RETURNS INT
AS
BEGIN
DECLARE @k INT
SET @k=(SELECT Sum(Книга.Количество)
FROM Автор INNER JOIN Книга
ON Автор.Код_Автора = Книга.Код_Автора
GROUP BY Автор.Фамилия
HAVING Автор.Фамилия=@n)
RETURN (@k)
END
Определите операторы правильного обращения к функции.
Ответ:
 (1)
DECLARE @kol INT
SET @kol=user1.my_func1('Иванов')
SELECT @kol
 
 (2)
SELECT user1.my_func1(@n='Иванов')
 
 (3)
SELECT my_func1 @n='Иванов'
 
 (4)
SELECT * FROM my_func1
WHERE @n='Иванов'
 
Номер 2
Разработана функция, определяющая по конечному пункту общее число пассажиров.
CREATE FUNCTION user1.my_func1(@s VARCHAR(20))
RETURNS INT
AS
BEGIN
DECLARE @k INT
SET @k=(SELECT Count(Билет.Фамилия_пассажира)
FROM Билет INNER JOIN Рейс
ON Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Рейс.Конечный_пункт
HAVING Рейс.Конечный_пункт=@s)
RETURN (@k)
END
Определите операторы правильного обращения к функции.
Ответ:
 (1)
DECLARE @kol INT
SET @kol=user1.my_func1(‘Москва’)
SELECT @kol
 
 (2)
SELECT my_func1 @n=‘Москва’
 
 (3)
SELECT * FROM my_func1
WHERE @n='Москва'
 
Номер 3
Разработана функция, определяющая для указанного типа блюд среднюю стоимость.
CREATE FUNCTION user1.my_func1(@t VARCHAR(20))
RETURNS FLOAT
AS
BEGIN
DECLARE @s FLOAT SET @s=(SELECT Avg(
Компонент.Стоимость*Компонент.Вес)
FROM Блюдо INNER JOIN Компонент
ON Блюдо.Название_блюда = Компонент.Блюдо
GROUP BY Блюдо.Тип_блюда
HAVING Блюдо.Тип_блюда=@t)
RETURN (@s)
END
Определите операторы правильного обращения к функции.
Ответ:
 (1)
DECLARE @st FLOAT
SET @st=user1.my_func1(‘Десерт’)
SELECT @st
 
 (2)
SELECT my_func1 @n=‘ Десерт’
 
 (3)
SELECT * FROM my_func1
WHERE @t='Десерт'
 
Номер 4
Разработана функция, определяющая по фамилии абонента общую сумму оплаты разговоров.
CREATE FUNCTION user1.my_func1(@f VARCHAR(20))
RETURNS FLOAT
AS
BEGIN
DECLARE @s FLOAT
SET @s=(SELECT Sum(Город.Тариф*Разговор.Продолжительность)
FROM Город INNER JOIN Разговор
ON Город.Код_Города = Разговор.Код_Города
GROUP BY Разговор.Фамилия
HAVING Разговор.Фамилия=@f)
RETURN (@s)
END
Определите операторы правильного обращения к функции.
Ответ:
 (1)
DECLARE @st FLOAT
SET @st=user1.my_func1(‘Иванов’)
SELECT @st
 
 (2)
SELECT user1.my_func1(‘Иванов’)
 
 (3)
SELECT my_func1 @n=‘Иванов’
 
 (4)
SELECT * FROM my_func1
WHERE @t='Иванов '
 
Упражнение 2:
Номер 1
Необходимо разработать функцию для получения списка книг издательства «Мир» и определить команду для ее вызова. Укажите правильный ответ.
Ответ:
 
(1)
Функция создается командой:
CREATE FUNCTION user1.my_func2()
RETURNS TABLE
AS
RETURN (SELECT Название
FROM Книга
WHERE Издательство="Мир"
ORDER BY Название)
Для вызова функции используется команда:
SELECT Название
FROM user1.my_func2()
 
 
(2)
Функция создается командой:
CREATE FUNCTION my_func2()
RETURNS AS
RETURN (SELECT Название
FROM Книга
WHERE Издательство="Мир"
ORDER BY Название)
Для вызова функции используется команда:
SELECT Название
FROM my_func2()
 
 
(3)
Функция создается командой:
CREATE FUNCTION user1.my_func2
RETURNS TABLE
AS
RETURN (SELECT Название
FROM Книга
WHERE Издательство="Мир"
ORDER BY Название)
Для вызова функции используется команда:
SELECT Название
FROM user1.my_func2
 
 
(4)
Функция создается командой:
CREATE FUNCTION user1.my_func2()
RETURNS TABLE
AS
SELECT Название
FROM Книга
WHERE Издательство="Мир"
ORDER BY Название
Для вызова функции используется команда:
SELECT *
FROM user1.my_func2()
 
Номер 2
Необходимо разработать функцию для получения списка рейсов, вылетающих в Москву и упорядоченных по дате. Определите команду для ее вызова. Укажите правильный ответ.
Ответ:
 
(1)
Функция создается командой:
CREATE FUNCTION user1.my_func2()
RETURNS TABLE
AS
RETURN (SELECT Номер_рейса, Дата_вылета
FROM Рейс
WHERE Конечный_пункт="Москва"
ORDER BY Дата_вылета)
Для вызова функции используется команда:
SELECT Номер_рейса, Дата_вылета
FROM user1.my_func2()
 
 
(2)
Функция создается командой:
CREATE FUNCTION my_func2()
RETURNS AS
RETURN (SELECT Номер_рейса, Дата_вылета
FROM Рейс
WHERE Конечный_пункт="Москва"
ORDER BY Дата_вылета)
Для вызова функции используется команда:
SELECT Номер_рейса, Дата_вылета
FROM my_func2()
 
 
(3)
Функция создается командой:
CREATE FUNCTION user1.my_func2()
RETURNS TABLE
AS
SELECT Номер_рейса, Дата_вылета
FROM Рейс
WHERE Конечный_пункт="Москва"
ORDER BY Дата_вылета
Для вызова функции используется команда:
SELECT *
FROM user1.my_func2()
 
Номер 3
Необходимо разработать функцию для получения списка компонент с калорийностью более 300 ккал. Определите команду для ее вызова. Укажите правильный ответ.
Ответ:
 
(1)
Функция создается командой:
CREATE FUNCTION user1.my_func2()
RETURNS TABLE
AS
RETURN (SELECT Название_компонента,Калорийность
FROM Компонент
WHERE Калорийность>300)
Для вызова функции используется команда:
SELECT Название_компонента,Калорийность
FROM user1.my_func2()
 
 
(2)
Функция создается командой:
CREATE FUNCTION my_func2()
RETURNS AS
RETURN (SELECT Название_компонента,Калорийность
FROM Компонент
WHERE Калорийность>300)
Для вызова функции используется команда:
SELECT Название_компонента,Калорийность
FROM my_func2()
 
 
(3)
Функция создается командой:
CREATE FUNCTION user1.my_func2
RETURNS TABLE
AS
RETURN (SELECT Название_компонента,Калорийность
FROM Компонент
WHERE Калорийность>300)
Для вызова функции используется команда:
SELECT Название_компонента,Калорийность
FROM user1.my_func2
 
 
(4)
Функция создается командой:
CREATE FUNCTION user1.my_func2()
RETURNS TABLE
AS
SELECT Название_компонента,Калорийность
FROM Компонент
WHERE Калорийность>300
Для вызова функции используется команда:
SELECT *
FROM user1.my_func2()
 
Номер 4
Необходимо разработать функцию для получения списка тарифов на телефонные разговоры с городами Поволжья. Определите команду для ее вызова. Укажите правильный ответ.
Ответ:
 
(1)
Функция создается командой:
CREATE FUNCTION user1.my_func2()
RETURNS TABLE
AS
RETURN (SELECT Название, Тариф
FROM Город
WHERE Регион="Поволжье"
ORDER BY Название)
Для вызова функции используется команда:
SELECT Название
FROM user1.my_func2()
 
 
(2)
Функция создается командой:
CREATE FUNCTION my_func2()
RETURNS AS
RETURN (SELECT Название, Тариф
FROM Город
WHERE Регион="Поволжье"
ORDER BY Название)
Для вызова функции используется команда:
SELECT Название, Тариф
FROM my_func2()
 
 
(3)
Функция создается командой:
CREATE FUNCTION user1.my_func2
RETURNS TABLE
AS
RETURN (SELECT Название, Тариф
FROM Город
WHERE Регион="Поволжье"
ORDER BY Название)
Для вызова функции используется команда:
SELECT Название, Тариф
FROM user1.my_func2
 
 
(4)
Функция создается командой:
CREATE FUNCTION user1.my_func2()
RETURNS TABLE
AS
SELECT Название, Тариф
FROM Город
WHERE Регион="Поволжье"
ORDER BY Название
Для вызова функции используется команда:
SELECT *
FROM user1.my_func2()
 
Упражнение 3:
Номер 1
Необходимо разработать функцию для получения списка книг указанного издательства, изданных тиражом не менее определенного числа. Функция создается командой:
Ответ:
 (1)
CREATE FUNCTION user1.my_func3 (
@iz VARCHAR(20),@k INT)
RETURNS TABLE
AS
RETURN (SELECT Название
FROM Книга
WHERE Издательство=@iz AND количество>=@k
ORDER BY Название)
 
 (2)
CREATE FUNCTION my_func3(VARCHAR(20),INT)
RETURNS AS
RETURN (SELECT Название
FROM Книга
WHERE Издательство=? AND количество>=?
ORDER BY Название)
 
 (3)
CREATE FUNCTION user1.my_func3
DECLARE @iz VARCHAR(20),@k INT
RETURNS TABLE
AS
RETURN (SELECT Название
FROM Книга
WHERE Издательство=@iz AND количество>=@k
ORDER BY Название)
 
 (4)
CREATE FUNCTION user1.my_func3(
DECLARE @iz VARCHAR(20),@k INT)
RETURNS TABLE
AS
SELECT Название
FROM Книга
WHERE Издательство=@iz AND количество>=@k
ORDER BY Название
 
Номер 2
Необходимо разработать функцию для получения списка рейсов, вылетающих в указанный город в определенный день. Функция создается командой:
Ответ:
 (1)
CREATE FUNCTION user1.my_func3(
@c VARCHAR(20),@d DATETIME)
RETURNS TABLE
AS
RETURN (SELECT Номер_рейса
FROM Рейс
WHERE Конечный_пункт=@c AND Дата_вылета=@d)
 
 (2)
CREATE FUNCTION my_func3(VARCHAR(20),DATETIME)
RETURNS AS
RETURN (SELECT Номер_рейса
FROM Рейс
WHERE Конечный_пункт=? AND Дата_вылета=?)
 
 (3)
CREATE FUNCTION user1.my_func3
DECLARE (@c VARCHAR(20),@d DATETIME
RETURNS TABLE
AS
RETURN (SELECT Номер_рейса
FROM Рейс
WHERE Конечный_пункт=@c AND Дата_вылета=@d)
 
 (4)
CREATE FUNCTION user1.my_func3(
DECLARE (@c VARCHAR(20),@d DATETIME)
RETURNS TABLE
AS
SELECT Номер_рейса
FROM Рейс
WHERE Конечный_пункт=@c AND Дата_вылета=@d
 
Номер 3
Необходимо разработать функцию для получения списка компонентов, входящих в указанное блюдо и имеющих калорийность ниже заданного значения. Функция создается командой:
Ответ:
 (1)
CREATE FUNCTION user1.my_func3(
@b VARCHAR(20),@k INT)
RETURNS TABLE
AS
RETURN (SELECT Название_компонента,Калорийность
FROM Компонент
WHERE Калорийность<@k AND Блюдо=@b
ORDER BY Название_компонента)
 
 (2)
CREATE FUNCTION my_func3(VARCHAR(20),INT)
RETURNS AS
RETURN (SELECT Название_компонента,Калорийность
FROM Компонент
WHERE Калорийность<? AND Блюдо=?
ORDER BY Название_компонента)
 
 (3)
CREATE FUNCTION user1.my_func3
DECLARE @b VARCHAR(20),@k INT
RETURNS TABLE
AS
RETURN (SELECT Название_компонента,Калорийность
FROM Компонент
WHERE Калорийность<@k AND Блюдо=@b
ORDER BY Название_компонента)
 
 (4)
CREATE FUNCTION user1.my_func3(
DECLARE @b VARCHAR(20),@k INT)
RETURNS TABLE
AS
SELECT Название_компонента,Калорийность
FROM Компонент
WHERE Калорийность<@k AND Блюдо=@b
ORDER BY Название_компонента
 
Номер 4
Необходимо разработать функцию для получения списка городов указанного региона, телефонные тарифы которых не превосходят заданную цифру. Функция создается командой:
Ответ:
 (1)
CREATE FUNCTION user1.my_func3(
@r VARCHAR(20),@t FLOAT)
RETURNS TABLE
AS
RETURN (SELECT Название, Тариф
FROM Город
WHERE Регион=@r AND Тариф<=@t
ORDER BY Название)
 
 (2)
CREATE FUNCTION my_func3( VARCHAR(20),FLOAT)
RETURNS AS
RETURN (SELECT Название, Тариф
FROM Город
WHERE Регион=? AND Тариф<=?
ORDER BY Название)
 
 (3)
CREATE FUNCTION user1.my_func3
DECLARE @r VARCHAR(20),@t FLOAT
RETURNS TABLE
AS
RETURN (SELECT Название, Тариф
FROM Город
WHERE Регион=@r AND Тариф<=@t
ORDER BY Название)
 
 (4)
CREATE FUNCTION user1.my_func3(
DECLARE @r VARCHAR(20),@t FLOAT)
RETURNS TABLE
AS
SELECT Название, Тариф
FROM Город
WHERE Регион=@r AND Тариф<=@t
ORDER BY Название
 
Упражнение 4:
Номер 1
Определите команду для вызова функции, создаваемой следующей командой:
CREATE FUNCTION user1.my_func3 (
@iz VARCHAR(20),@k INT)
RETURNS TABLE
AS
RETURN (SELECT Название
FROM Книга
WHERE Издательство=@iz AND количество>=@k
ORDER BY Название)
Ответ:
 (1)
SELECT Название
FROM user1.my_func3(‘Мир’,100)
 
 (2)
SELECT Название
FROM my_func3(@iz=’Мир’,@k=100)
 
 (3)
SELECT Название
FROM user1.my_func3
WHERE @iz=’Мир’ AND @k=100
 
 (4)
SELECT *
FROM user1.my_func3(100,’Мир’)
 
Номер 2
Определите команду для вызова функции, создаваемой следующей командой:
CREATE FUNCTION user1.my_func3(
@c VARCHAR(20),@d DATETIME)
RETURNS TABLE
AS
RETURN (SELECT Номер_рейса
FROM Рейс
WHERE Конечный_пункт=@c AND Дата_вылета=@d)
Ответ:
 (1)
SELECT Номер_рейса, Дата_вылета
FROM user1.my_func3(’Москва’,’1.03.04’) 
 (2)
SELECT Номер_рейса, Дата_вылета
FROM my_func3(@c=’Москва’,@d=’1.03.04’) 
 (3)
SELECT Номер_рейса, Дата_вылета
FROM user1.my_func3
WHERE @c=’Москва’ AND @d=’1.03.04’ 
 (4)
SELECT *
FROM user1.my_func3(’1.03.04’, ’Москва’)
 
Номер 3
Определите команду для вызова функции, создаваемой следующей командой:
CREATE FUNCTION user1.my_func3(
@b VARCHAR(20),@k INT)
RETURNS TABLE
AS
RETURN (SELECT Название_компонента,Калорийность
FROM Компонент
WHERE Калорийность<@k AND Блюдо=@b
ORDER BY Название_компонента)
Ответ:
 (1)
SELECT Название_компонента,Калорийность
FROM user1.my_func3(’Пирожное’,200)
 
 (2)
SELECT Название_компонента,Калорийность
FROM my_func3(@b=’Пирожное’,@k=200)
 
 (3)
SELECT Название_компонента,Калорийность
FROM user1.my_func3
WHERE @b=’Пирожное’ AND @k=200
 
 (4)
SELECT *
FROM user1.my_func3(200,’Пирожное’)
 
Номер 4
Определите команду для вызова функции, создаваемой следующей командой:
CREATE FUNCTION user1.my_func3(
@r VARCHAR(20),@t FLOAT)
RETURNS TABLE
AS
RETURN (SELECT Название, Тариф
FROM Город
WHERE Регион=@r AND Тариф<=@t
ORDER BY Название)
Ответ:
 (1)
SELECT Название
FROM user1.my_func3(’Поволжье’,3.50)
 
 (2)
SELECT Название, Тариф
FROM my_func3(@r=’Поволжье’,@t=3.50)
 
 (3)
SELECT Название, Тариф
FROM user1.my_func3
WHERE @r=’Поволжье’AND @t=3.50
 
 (4)
SELECT *
FROM user1.my_func3(3.50,’Поволжье’)
 
Упражнение 5:
Номер 1
Необходимо разработать функцию для получения списка книг заданной тематики, изданных тиражом менее указанного числа.
Функция создается командой:
Ответ:
 (1)
CREATE FUNCTION user1.my_func (
@t VARCHAR(20),@k INT)
RETURNS TABLE
AS
RETURN (SELECT Название
FROM Книга
WHERE Тематика=@t AND количество<@k)
 
 (2)
CREATE FUNCTION my_func(VARCHAR(20),INT)
RETURNS AS
RETURN (SELECT Название
FROM Книга
WHERE Тематика=? AND количество<? )
 
 (3)
CREATE FUNCTION user1.my_func
DECLARE @t VARCHAR(20),@k INT
RETURNS TABLE
AS
RETURN (SELECT Название
FROM Книга
WHERE Тематика=@t AND количество<@k)
 
 (4)
CREATE FUNCTION user1.my_func(
DECLARE @t VARCHAR(20),@k INT)
RETURNS TABLE
AS
SELECT Название
FROM Книга
WHERE Тематика=@t AND количество<@k
 
Номер 2
Необходимо разработать функцию для вывода списка пассажиров, купивших билеты в определенный день на некоторый рейс.
Функция создается командой:
Ответ:
 (1)
CREATE FUNCTION user1.my_func(
@r INT,@d DATETIME)
RETURNS TABLE
AS
RETURN (SELECT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Дата_продажи=@d AND
Билет.Номер_рейса=@r)
 
 (2)
CREATE FUNCTION.my_func(@r INT,@d DATETIME)
RETURNS TABLE
AS
RETURN (SELECT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Дата_продажи=? AND
Билет.Номер_рейса=?)
 
 (3)
CREATE FUNCTION user1.my_func
(DECLARE @r INT,@d DATETIME)
RETURNS TABLE
AS
RETURN (SELECT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Дата_продажи=@d AND
Билет.Номер_рейса=@r)
 
 (4)
CREATE FUNCTION user1.my_func(@r INT,@d DATETIME)
RETURNS TABLE
AS
DECLARE @r INT,@d DATETIME
RETURN (SELECT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Дата_продажи=@d AND
Билет.Номер_рейса=@r)
 
Номер 3
Необходимо разработать функцию для получения списка абонентов, звонивших в указанный город в заданный месяц. Функция создается командой:
Ответ:
 (1)
CREATE FUNCTION user1.my_func(
@n VARCHAR(20),@d INT)
RETURNS TABLE
AS
RETURN (SELECT Разговор.Фамилия
FROM Разговор INNER JOIN Город
ON Разговор.Код_Города = Город.Код_Города
WHERE Month(Разговор.Дата)=@d AND
Город.Название=@n)
 
 (2)
CREATE FUNCTION my_func(@n VARCHAR(20),@d INT)
RETURNS TABLE
AS
RETURN (SELECT Разговор.Фамилия
FROM Разговор INNER JOIN Город
ON Разговор.Код_Города = Город.Код_Города
WHERE Month(Разговор.Дата)=? AND
Город.Название=?)
 
 (3)
CREATE FUNCTION user1.my_func
DECLARE @n VARCHAR(20),@d INT
RETURNS TABLE
AS
RETURN (SELECT Разговор.Фамилия
FROM Разговор INNER JOIN Город
ON Разговор.Код_Города = Город.Код_Города
WHERE Month(Разговор.Дата)=@d AND
Город.Название=@n)
 
 (4)
CREATE FUNCTION user1.my_func(@n,@d)
RETURNS TABLE
AS
DECLARE @n VARCHAR(20),@d INT
RETURN (SELECT Разговор.Фамилия
FROM Разговор INNER JOIN Город
ON Разговор.Код_Города = Город.Код_Города
WHERE Month(Разговор.Дата)=@d AND
Город.Название=@n)
 
Упражнение 6:
Номер 1
Необходимо разработать функцию для получения списка книг заданной тематики, изданных тиражом менее указанного числа. Определите команду для ее вызова.
Ответ:
 (1)
SELECT Название
FROM user1.my_func('детектив',100)
 
 (2)
SELECT Название
FROM my_func(t='детектив',k=100)
 
 (3)
SELECT Название
FROM user1.my_func
WHERE @t='детектив' AND @k=100
 
Номер 2
Необходимо разработать функцию для вывода списка пассажиров, купивших билеты в определенный день на некоторый рейс. Определите команду для ее вызова.
Ответ:
 (1) SELECT Фамилия_пассажира
FROM user1.my_func(234,’1.03.04’) 
 (2)
SELECT Фамилия_пассажира
WHERE my_func(@r=234,@d=’1.03.04’) 
 (3)
SELECT Фамилия_пассажира FROM user1.my_func3
WHERE @r=234 AND @d=’1.03.04’ 
Номер 3
Необходимо разработать функцию для получения списка абонентов, звонивших в указанный город в заданный месяц. Определите команду для ее вызова.
Ответ:
 (1)
SELECT Фамилия
FROM user1.my_func (’Москва’,3)
 
 (2)
SELECT Фамилия
FROM my_func(@n=’Москва’,@m=3)
 
 (3)
SELECT Фамилия
FROM user1.my_func
WHERE @n=’Москва’AND @m=3