Главная / Базы данных /
Основы SQL / Тест 8
Основы SQL - тест 8
Упражнение 1:
Номер 1
Пусть дана таблица Автор
с полями
Фамилия
|
VARCHAR(50)
|
---|
Пол
|
CHAR(3)
|
---|
Дата_рождения
|
DATETIME NOT NULL
|
---|
Телефон
|
CHAR(9)
|
---|
Количество_трудов
|
INT
|
---|
Город
|
VARCHAR(15)
|
---|
Укажите правильный оператор добавления записи.
Ответ:
 (1)
INSERT INTO Автор(Фамилия, дата_рождения, телефон)
VALUES('Иванов','2/09/78','12-34-56') 
 (2)
INSERT INTO Автор(Фамилия, дата_рождения) VALUES(
'Иванов','2/09/78') 
 (3)
INSERT INTO Автор(Фамилия, телефон) VALUES(
'Иванов','12-34-56') 
 (4)
INSERT INTO Автор VALUES(
'Иванов','2/09/78','12-34-56') 
Номер 2
Дана таблица Билет
с полями:
номер_места
|
CHAR(3)
|
---|
номер_рейса
|
CHAR(6)
|
---|
дата_продажи
|
DATETIME
|
---|
стоимость
|
MONEY
|
---|
фамилия_пассажира
|
VARCHAR(20) NOT NULL
|
---|
Укажите правильный оператор добавления записи.
Ответ:
 (1)
INSERT INTO Билет(номер_места, номер_рейса,
дата_продажи, стоимость, фамилия_пассажира)
VALUES(’12’,’1’,’12.2.04’,12.6,’Матвеев’)  
 (2)
INSERT INTO Билет VALUES(
’12’,’1’,’12.2.04’,12.6,’Матвеев’) 
 (3)
INSERT INTO Билет(номер_рейса, дата_продажи,
стоимость, фамилия_пассажира, номер_места)
VALUES('1',’12.2.04’,12.6,’Матвеев’,'12')  
 (4)
INSERT INTO Билет(номер_места,
номер_рейса, дата_продажи, стоимость)
VALUES('12','1',’12.2.04’,12.6)  
Номер 3
Пусть дана таблица Блюдо
с полями
Название_блюда |
VARCHAR(20) |
---|
Тип_блюда
|
VARCHAR(20)
|
---|
Время_приготовления
|
INT
|
---|
Калорийность
|
INT NOT NULL
|
---|
Повар
|
VARCHAR(20)
|
---|
Стоимость
|
MONEY NOT NULL
|
---|
Укажите правильный оператор добавления записи.
Ответ:
 (1)
INSERT INTO Блюдо(Название_блюда,
Время_приготовления, Калорийность,
Повар,Стоимость,тип_блюда)
VALUES (
‘Жаркое’,500,’Медведев’,23, 34.9,’Второе’) 
 (2)
INSERT INTO Блюдо VALUES (
‘Жаркое’,23,500,’Медведев’,34.9,’Второе’) 
 (3)
INSERT INTO Блюдо(Название_блюда,
Время_приготовления, Калорийность,
Повар, Стоимость, тип_блюда)
VALUES (
’Жаркое’,23,500,’Медведев’,34.9,’Второе’) 
Номер 4
Пусть дана таблица Город
с полями
Код_Города | CHAR(5) NOT NULL |
Название | VARCHAR(20) |
Регион | VARCHAR(30) |
Тариф | MONEY NOT NULL |
Укажите правильный оператор добавления записи.
Ответ:
 (1)
INSERT INTO Город(Код_Города, Название,
Тариф, Регион) VALUES('456',
'Симбирск',67.8,'Поволжье')  
 (2)
INSERT INTO Город VALUES('456',
'Симбирск',67.8,'Поволжье')  
 (3)
INSERT INTO Город VALUES('456',
'Симбирск','Поволжье',67.8)  
 (4)
INSERT INTO Город(Код_Города,
Название, Регион) VALUES('456',
'Симбирск','Поволжье')  
Упражнение 2:
Номер 1
Пусть дана таблица Автор
с полями
Фамилия
|
VARCHAR(50)
|
---|
Пол
|
CHAR(3)
|
---|
Дата_рождения
|
DATETIME NOT NULL
|
---|
Телефон
|
CHAR(9)
|
---|
Количество_трудов
|
INT
|
---|
Город
|
VARCHAR(15)
|
---|
Удалить информацию об авторах, не имеющих телефона (в этом случае это поле Null
).
Ответ:
 (1)
DELETE
FROM Автор
WHERE Телефон Is Null 
 (2)
DELETE Телефон
FROM Автор
WHERE Телефон=0 
 (3)
DELETE Телефон
FROM Автор
WHERE Телефон =’’ 
Номер 2
Дана таблица Билет
с полями:
номер_места
|
CHAR(3)
|
---|
номер_рейса
|
CHAR(6)
|
---|
дата_продажи
|
DATETIME
|
---|
стоимость
|
MONEY
|
---|
фамилия_пассажира
|
VARCHAR(20) NOT NULL
|
---|
Удалить данные о билетах, проданных за прошлый месяц.
Ответ:
 (1)
DELETE
FROM Билет
WHERE дата_продажи<GETDATE()-31  
 (2)
DELETE
FROM Билет
WHERE Month(дата_продажи)=Month(GETDATE ())-1  
 (3)
DELETE
FROM Билет
WHERE дата_продажи=Month(GETDATE())-1  
 (4)
DELETE
FROM Билет
WHERE Month(дата_продажи)=GETDATE()/31-1  
Номер 3
Пусть дана таблица Блюдо
с полями
Название_блюда
|
VARCHAR(20)
|
---|
Тип_блюда
|
VARCHAR(20)
|
---|
Время_приготовления
|
INT
|
---|
Калорийность
|
INT NOT NULL
|
---|
Повар
|
VARCHAR(20)
|
---|
Стоимость
|
MONEY
|
---|
Удалить сведения о блюдах, для которых не указаны имя повара или их стоимость.
Ответ:
 (1)
DELETE
FROM Блюдо
WHERE Повар Is Null OR Повар =’’ OR
Стоимость Is Null OR Стоимость=0 
 (2)
DELETE
FROM Блюдо
WHERE Повар Is Null OR Стоимость Is Null OR 0 
 (3)
DELETE
FROM Блюдо
WHERE Повар Is Null OR Стоимость Is Null 
 (4)
DELETE
FROM Блюдо
WHERE Повар=’’ OR Стоимость=0 
Номер 4
Пусть дана таблица Город
с полями
Код_Города
|
CHAR(5) NOT NULL
|
---|
Название
|
VARCHAR(20)
|
---|
Регион
|
VARCHAR(30)
|
---|
Тариф
|
MONEY
|
---|
Удалить сведения о городах, для которых не указаны регион и телефонный тариф.
Ответ:
 (1)
DELETE
FROM Город
WHERE (Регион Is Null Or Регион=’’) AND
(Тариф Is Null Or Тариф=0) 
 (2)
DELETE
FROM Город
WHERE Регион Is Null AND
(Тариф Is Null Or Тариф=0) 
 (3)
DELETE
FROM Город
WHERE Регион Is Null AND Регион=’’AND
Тариф Is Null AND Тариф=0 
 (4)
DELETE
FROM Город
WHERE Регион Is Null AND Тариф Is Null 
Упражнение 3:
Номер 1
Пусть дана таблица Книга
с полями:
Код_Книги
|
INT
|
---|
Название
|
VARCHAR(50) NOT NULL
|
---|
Цена
|
MONEY
|
---|
Тематика
|
VARCHAR(50) NOT NULL
|
---|
Издательство
|
VARCHAR(50) NOT NULL
|
---|
Код_Автора
|
INT NOT NULL
|
---|
Увеличить на 50% цену книг, вышедших в издательстве «АСТ».
Ответ:
 (1)
UPDATE Книга SET Цена = Цена*1.5
WHERE Издательство="АСТ" 
 (2)
UPDATE Книга SET Цена = Цена*0.5
WHERE Издательство="АСТ" 
 (3)
UPDATE Книга SET Цена = Цена*50%
WHERE Издательство="АСТ" 
 (4)
UPDATE Книга
Цена = Цена*1.5
WHERE Издательство="АСТ" 
Номер 2
Дана таблица Билет
с полями:
номер_места
|
CHAR(3)
|
---|
номер_рейса
|
CHAR(6)
|
---|
дата_продажи
|
DATETIME
|
---|
стоимость
|
MONEY
|
---|
фамилия_пассажира
|
VARCHAR(20) NOT NULL
|
---|
Увеличить на 10% стоимость билетов на рейсы 23-45 и 56-78.
Ответ:
 (1)
UPDATE Билет SET стоимость=стоимость*1.1
WHERE номер_рейса='23-45' OR номер_рейса='56-78' 
 (2)
UPDATE Билет SET стоимость=стоимость*1.1
WHERE номер_рейса='23-45' AND номер_рейса='56-78’ 
 (3)
UPDATE Билет SET стоимость=стоимость*1.1
WHERE номер_рейса=23-45 OR 56-78 
 (4)
UPDATE Билет
стоимость=стоимость*1.1
WHERE номер_рейса='23-45' OR номер_рейса='56-78' 
Номер 3
Пусть дана таблица Блюдо
с полями
Название_блюда
|
VARCHAR(20)
|
---|
Тип_блюда
|
VARCHAR(20)
|
---|
Время_приготовления
|
INT
|
---|
Калорийность
|
INT NOT NULL
|
---|
Повар
|
VARCHAR(20)
|
---|
Стоимость
|
MONEY NOT NULL
|
---|
Установить калорийность, равную 100 ккал, для блюд без указанной калорийности.
Ответ:
 (1)
UPDATE Блюдо SET Калорийность = 100
WHERE Калорийность Is Null Or Калорийность=0 
 (2)
UPDATE Блюдо SET Калорийность = 100
WHERE Калорийность=’’ 
 (3)
UPDATE Блюдо
Калорийность = 100
WHERE Калорийность Is Null Or Калорийность=0 
 (4)
UPDATE Блюдо SET Калорийность = 100
WHERE Калорийность Is Null Or 0 
Номер 4
Пусть дана таблица Город
с полями
Код_Города
|
CHAR(5) NOT NULL
|
---|
Название
|
VARCHAR(20)
|
---|
Регион
|
VARCHAR(30)
|
---|
Тариф
|
MONEY NOT NULL
|
---|
Увеличить телефонный тариф на 15% для городов Поволжья и Нечерноземья.
Ответ:
 (1)
UPDATE Город SET Тариф = Тариф*1.15
WHERE Регион=’Поволжье’ OR Регион=’Нечерноземье’ 
 (2)
UPDATE Город SET Тариф = Тариф*0.15
WHERE Регион=’Поволжье’ OR Регион=’Нечерноземье’ 
 (3)
UPDATE Город
Тариф = Тариф*1.15
WHERE Регион=’Поволжье’ OR Регион=’Нечерноземье’ 
 (4)
UPDATE Город SET Тариф = Тариф*1.15
WHERE Регион=’Поволжье’ AND Регион=’Нечерноземье’ 
Упражнение 4:
Номер 1
Даны таблицы
CREATE TABLE Автор
(Код_Автора INT ,
Фамилия VARCHAR(50) NULL,
Имя VARCHAR(50) NULL,
Отчество VARCHAR(50) NULL,
Пол VARCHAR(50) NOT NULL ,
Дата_рождения DATETIME ,
Телефон CHAR(9))
|
CREATE TABLE Книга
(Код_Книги INT,
Название VARCHAR(50) NOT NULL,
Цена MONEY,
Тематика VARCHAR(50) NOT NULL,
Издательство VARCHAR(50) NOT NULL,
Код_Автора INT NOT NULL)
|
Удалить сведения об авторах, чьи произведения не издаются.
Ответ:
 (1)
DELETE
FROM Автор
WHERE Код_Автора NOT IN (SELECT Код_Автора
FROM Книга) 
 (2)
DELETE
FROM Автор
WHERE Код_Автора IN (SELECT Код_Книги
FROM Книга) 
 (3)
DELETE
FROM Автор
WHERE Код_Автора <>(SELECT Код_Автора
FROM Книга) 
 (4)
DELETE
FROM Автор
WHERE NOT EXISTS (SELECT Код_Автора
FROM Книга) 
Номер 3
Даны таблицы
CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость_блюда MONEY)
|
CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Жиры INT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость_компонента MONEY NOT NULL)
|
Удалить сведения о блюдах, стоимость которых меньше средней стоимости компонентов.
Ответ:
 (1)
DELETE
FROM Блюдо
WHERE Стоимость_блюда-(SELECT AVG(
Стоимость_компонента) FROM Компонент)<0 
 (2)
DELETE
FROM Блюдо
WHERE Стоимость_блюда<(SELECT AVG(
Стоимость_компонента) FROM Компонент) 
 (3)
DELETE
FROM Блюдо
WHERE Стоимость_блюда< AVG(Стоимость_компонента) 
 (4)
DELETE
FROM Блюдо
WHERE Стоимость_блюда<AVG(Стоимость_компонента)
FROM Компонент 
Номер 4
Даны таблицы
CREATE TABLE Город
(Код_Города INT,
Название VARCHAR(20) NOT NULL,
Тариф MONEY)
|
CREATE TABLE Разговор
(Код_Разговора INT,
Код_Города INT NOT NULL,
Фамилия IVARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)
|
Удалить информацию о городах, с которыми не было ни одного телефонного разговора.
Ответ:
 (1)
DELETE
FROM Город
WHERE Код_Города NOT IN (SELECT Код_Города
FROM Разговор) 
 (2)
DELETE
FROM Город
WHERE Код_Города <>(SELECT Код_Города
FROM Разговор) 
 (3)
DELETE
FROM Город
WHERE COUNT(Фамилия)=0 FROM Разговор 
 (4)
DELETE
FROM Город
WHERE 0=(SELECT COUNT(Фамилия) FROM Разговор) 
Упражнение 5:
Номер 1
Даны таблицы Автор
и Книга
. Удалить сведения об авторах, издавших только одну книгу.
CREATE TABLE Автор
( Код_Автора INT ,
Фамилия VARCHAR(50))
|
CREATE TABLE Книга
( Код_Книги INT,
Название VARCHAR(50),
Цена MONEY,
Код_Автора INT)
|
Ответ:
 (1)
DELETE
FROM Автор
WHERE Автор.Код_Автора In (SELECT Книга.Код_Автора
FROM Книга
GROUP BY Книга.Код_Автора
HAVING Count(Книга.Название)=1) 
 (2)
DELETE
FROM Автор
WHERE Автор.Код_Автора = (SELECT Книга.Код_Автора
FROM Книга
GROUP BY Книга.Код_Автора
HAVING Count(Книга.Название)=1) 
 (3)
DELETE
FROM Автор
WHERE Count(Книга.Название)=1 
 (4)
DELETE
FROM Автор
WHERE EXISTS (SELECT Книга.Код_Автора
FROM Книга
GROUP BY Книга.Код_Автора
HAVING Count(Книга.Название)=1) 
Номер 3
Даны таблицы Город
и Разговор
. Удалить данные об абонентах, суммарная продолжительность телефонных разговоров которых оказалась меньше 10 мин.
CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY)
|
CREATE TABLE Разговор
(Код_Разговора INT,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME,
Продолжительность INT)
|
Ответ:
 (1)
DELETE
FROM Разговор
WHERE Разговор.Фамилия = (SELECT Разговор.Фамилия
FROM Разговор
GROUP BY Разговор.Фамилия
HAVING Sum(Разговор.Продолжительность)<10) 
 (2)
DELETE
FROM Разговор
WHERE Разговор.Фамилия In (SELECT Разговор.Фамилия
FROM Разговор
GROUP BY Разговор.Фамилия
HAVING Sum(Разговор.Продолжительность)<10) 
 (3)
DELETE
FROM Разговор
GROUP BY Разговор.Фамилия
HAVING Разговор.Фамилия In (
SELECT Разговор.Фамилия
FROM Разговор
GROUP BY Разговор.Фамилия
HAVING Sum(Разговор.Продолжительность)<10) 
 (4)
DELETE
FROM Разговор
WHERE Разговор.Фамилия In (SELECT Разговор.Фамилия
FROM Разговор
GROUP BY Разговор.Фамилия
WHERE Sum(Разговор.Продолжительность)<10) 
Упражнение 6:
Номер 1
Увеличить на 50% цену книг, издаваемых самым большим тиражом.
Ответ:
 (1)
UPDATE Книга SET Книга.Цена = Книга.Цена*1.5
WHERE Книга.Количество=
(SELECT Max(Книга.Количество)
FROM Книга) 
 (2)
UPDATE Книга SET Книга.Цена = Книга.Цена*1.5
WHERE Книга.Количество=Max(Книга.Количество) 
 (3)
UPDATE Книга SET Книга.Цена = Книга.Цена*1.5
WHERE Книга.Количество=
Max(SELECT Книга.Количество)
FROM Книга) 
 (4)
UPDATE Книга.Цена = Книга.Цена*1.5
WHERE Книга.Количество=
(SELECT Max(Книга.Количество)
FROM Книга) 
Номер 2
Увеличить на 10% стоимость билетов, проданных в день вылета рейса.
Ответ:
 (1)
UPDATE Билет SET Билет.Стоимость =
Билет.Стоимость*1.1
WHERE Билет.Дата_продажи in(
SELECT Рейс.Дата_вылета
FROM Билет INNER JOIN Рейс
ON Билет.Номер_рейса=Рейс.Номер_рейса
WHERE Рейс.Дата_вылета=Билет.Дата_продажи) 
 (2)
UPDATE Билет SET Билет.Стоимость =
Билет.Стоимость*1.1
WHERE Билет.Дата_продажи = (
SELECT Рейс.Дата_вылета
FROM Билет INNER JOIN Рейс
ON Билет.Номер_рейса=Рейс.Номер_рейса
WHERE Рейс.Дата_вылета=Билет.Дата_продажи) 
 (3)
UPDATE Билет SET Билет.Стоимость =
Билет.Стоимость*1.1
WHERE Билет.Дата_продажи=Рейс.Дата_вылета 
 (4)
UPDATE Билет SET Билет.Стоимость =
Билет.Стоимость*1.1
FROM Билет INNER JOIN Рейс
ON Билет.Номер_рейса=Рейс.Номер_рейса
WHERE Рейс.Дата_вылета=Билет.Дата_продажи 
Номер 3
Уменьшить на 50% продолжительность телефонных разговоров тех абонентов, которые за последний месяц сделали более 1000 звонков позволяет код:
Ответ:
 (1)
UPDATE Разговор SET Разговор.Продолжительность =
Разговор.Продолжительность*0.5
WHERE Разговор.Фамилия In (
SELECT Разговор.Фамилия
FROM Разговор
WHERE Month(Разговор.Дата)=Month(GETDATE())-1
GROUP BY Разговор.Фамилия
HAVING count(Разговор.Фамилия)>1000 ) 
 (2)
UPDATE Разговор SET Разговор.Продолжительность =
Разговор.Продолжительность*0.5
WHERE Разговор.Фамилия = (
SELECT Разговор.Фамилия
FROM Разговор
WHERE Month(Разговор.Дата)=Month(GETDATE())-1
GROUP BY Разговор.Фамилия
HAVING count(Разговор.Фамилия)>1000 ) 
 (3)
UPDATE Разговор SET Разговор.Продолжительность =
Разговор.Продолжительность*0.5
HAVING Разговор.Фамилия In (
SELECT Разговор.Фамилия
FROM Разговор
WHERE Month(Разговор.Дата)=Month(GETDATE())-1
GROUP BY Разговор.Фамилия
HAVING count(Разговор.Фамилия)>1000 ) 
 (4)
UPDATE Разговор SET Разговор.Продолжительность =
Разговор.Продолжительность*0.5
WHERE Разговор.Фамилия In (
SELECT Разговор.Фамилия
FROM Разговор
WHERE Month(Разговор.Дата)=Month(GETDATE())-1
GROUP BY Разговор.Фамилия
WHERE count(Разговор.Фамилия)>1000 )