Основы sql интуит ответы экзамен

В базе данных в таблице Блюдо необходимо хранить сведения о входящих в меню блюдах с указанием названия, времени приготовления, калорийности, стоимости, веса и фамилии повара. Для описания данных используются следующие поля:

Перейти

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость MONEY )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Вес FLOAT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость MONEY NOT NULL)

Определить поваров, которые на приготовление каждого из своих блюд тратят в среднем менее 10 мин, а общий вес блюд превосходит 500 г.

Перейти

Дан фрагмент Java-программы для выборки данных из таблицы Блюдо, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection myCon= DriverManager.getConnection("jdbc:odbc:mystud","user1","user1");Statement mySt=myCon.createStatement();ResultSet rs=mySt.executeQuery("SELECT Название_блюда,    Калорийность FROM Блюдо ");while (rs.next())  {       String var1=rs.getString(1);       String var2=rs.getString(2);       String var3=rs.getString(3);...}

Указать правильные ответы.

Перейти

Уменьшить на 50% продолжительность телефонных разговоров тех абонентов, которые за последний месяц сделали более 1000 звонков позволяет код:

Перейти

Пусть в таблице Книга представлены записи, значения поля Код_Книги в которых равны 1, 3, 4, 7, 9 и 10. Создан курсор для вывода списка книг издательства «Мир».

DECLARE @n     VARCHAR(50),        @iz    VARCHAR(50),                @p     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Список клиентов'DECLARE cursor1 CURSOR GLOBAL SCROLL KEYSET FOR   SELECT Название, Издательство, Цена   FROM Книга   WHERE Издательство=’Мир’OPEN cursor1SET @cur1=cursor1FETCH ABSOLUTE 3  FROM cursor1 INTO  @n, @iz, @p    DELETE Книга     WHERE CURRENT OF @cur1 FETCH RELATIVE -2 FROM cursor1 INTO  @n, @iz, @p    UPDATE Книга SET Цена=Цена*1.5    WHERE CURRENT OF cursor1    SELECT @message='Книга '+@n+'  Цена  '+         CAST(@p AS VARCHAR(4))    PRINT @message    CLOSE cursor1DEALLOCATE cursor1

Какие действия выполнит система?

Перейти

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

CREATE PROC my_proc3@c VARCHAR(20)=’Самара’,@m INT=4,@k INT=0 OUTPUTASSELECT @k=Count(Билет.Фамилия_пассажира)FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейсаGROUP BY Рейс.Конечный_пункт, Month(Рейс.Дата_вылета)HAVING Рейс.Конечный_пункт=@c AND Month(Рейс.Дата_вылета)=@m

Укажите правильный вызов процедуры

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345 CREATE TABLE tab(id_t INT, nam_t CHAR(8))GRANT INSERT, SELECT ON tab TO UserAWITH GRANT OPTIONGRANT INSERT ON tab TO UserCREVOKE INSERT ON tabTO UserA CASCADE GRANT SELECT, INSERT ON tab TO UserC    
6 INSERT INTO tab(1,’aa’) INSERT INTO tab(2,’bb’) SELECT * FROM tab INSERT INTO tab(4,’bb’)
7 ? ? ? ?

Перейти

Даны таблицы Автор и Книга.

CREATE TABLE  Автор( Код_Автора INT ,  Фамилия  VARCHAR(50)  NULL)
CREATE TABLE Книга( Код_Книги      INT,  Название      VARCHAR(50) NOT NULL,  Цена          MONEY,  Издательство  VARCHAR(50) NOT NULL,  Код_Автора     INT NOT NULL,  Количество    INT)

Книги каких авторов были проданы на сумму, превышающую 10000 руб.?

Перейти

Задание: Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVELREPEATABLE READ                                      BEGIN TRANSACTION TRA1.SELECT * FROM Товар                          3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4                                ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATIONLEVEL SERIALIZABLE                  BEGIN TRANSACTION TRB                      2.SELECT * FROM Товар                                                      4.DELETE FROM Товар WHEREКод_Товара=4ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

Перейти

Дано представление.

CREATE VIEW view1ASSELECT Название_блюда, Калорийность, СтоимостьFROM БлюдоWHERE Тип_блюда=’Десерт’WITH CHECK OPTION

Предпринимается попытка выполнить команду вставки данных в представление.

INSERT INTO view1(Название_блюда, Калорийность, Стоимость)VALUES ('Торт Киевский',458,78.50)

Результатом выполнения команды (при отсутствии каких-либо ограничений при создании таблицы) является следующее:

Перейти

Дан фрагмент сценария VBScript для выборки данных из таблицы Блюдо, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject("ADODB.Connection")Set rst=Server.CreateObject("ADODB.Recordset")cn.open "pwd=user1;driver={SQL Server}; server=its; database = basa_user1"rst.open "SELECT Название_блюда, Время_приготовления, Калорийность FROM Блюдо"do until rst.eof   response.write rst.fields(0)    response.write rst.fields(1)    response.write rst.fields(2)&"<br>"loop

Указать правильные ответы.

Перейти

Пусть дана таблица Автор.

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

 Найти города, в которых живут авторы, родившиеся не ранее 1982 года и издавшие более 10 книг.

Перейти

В базе данных basa1 имеется таблица Город. Из базы данных basa2 необходимо выполнить действие по увеличению тарифов для всех городов на 15%. В какой базе данных должна быть создана процедура и как можно ее выполнить?

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVEL REPEATABLE READ                                      BEGIN TRANSACTION TRA1.SELECT * FROM Товар WHERE Код_Товара=1                            3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4                                   ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED                  BEGIN TRANSACTION TRB                      2.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4                                                              4.SELECT * FROM Товар ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие заблокирует?

Перейти

Пусть дана таблица Рейс.

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Число_билетов INT
Стоимость MONEY

Вывести номера рейсов с датой отправления в города, в названии которых встречаются буквы «ц» или «х».

Перейти

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%; для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1ON PRIMARY ( NAME=b1, FILENAME='D:userb1.mdf',SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),(NAME=b2,  FILENAME='D:userb2.mdf', SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%)LOG ON(NAME=l1, FILENAME='E:userl1.ldf', SIZE=50MB, MAXSIZE=100, FILEGROWTH=10)

Выберите правильный ответ.

Перейти

Дана таблица Билет с полями:

номер_места CHAR(3)
номер_рейса CHAR(6)
дата_продажи DATETIME
стоимость MONEY
фамилия_пассажира VARCHAR(20) NOT NULL

Увеличить на 10% стоимость билетов на рейсы 23-45 и 56-78.

Перейти

Даны таблицы Город и Разговор. Между ними необходимо установить связь «один-ко-многим» (один город — много разговоров)

CREATE TABLE Город ( Код_Города CHAR(5)PRIMARY KEY,   Название  VARCHAR(20) NOT NULL UNIQUE,   Тариф     MONEY)
CREATE TABLE Разговор(НомерРазговора    INT PRIMARY KEY, Город             CHAR(5), Дата              DATETIME, Время_Суток       VARCHAR(5), Продолжительность INT NOT NULL)

Перейти

Пусть дана таблица Блюдо с полями

Название_блюда VARCHAR(20)
Время_приготовления DATETIME
Калорийность INT
Повар VARCHAR(20)
Стоимость MONEY

Определить повара, стоимость блюд которого не превышает 100 руб., а калорийность – 400 ккал.

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
123456789 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember ‘role1′,’UserA’sp_addrolemember’role1’,’UserB’sp_addrolemember ‘role1’,’UserC’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserADENY INSERT ON tab TO role1 GRANT INSERT ON tab TO UserC    
10 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
11 ? ? ? ?

Перейти

Дан фрагмент сценария VBScript для изменения и выборки данных из таблицы Рейс, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject("ADODB.Connection")Set rst=Server.CreateObject("ADODB.Recordset")cn.open " uid=user1;pwd=user1;driver={SQL Server}; server=its; database = basa_user1"cn.execute "UPDATE Рейс SET Дата_вылета=3.09.2003 WHERE номер_рейса=123”rst.open "SELECT Конечный_пункт, Дата_вылета, Продолжительность_маршрута FROM Рейс", cndo until rst.eof   response.write rst.fields(0)    response.write rst.fields(1)    response.write rst.fields(2)&"<br>"   rst.movenextloop

Указать правильные ответы.

Перейти

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph(nomer INT PRIMARY KEY, --номер дуги outp   INT,            --номер вершины,                         --из которой дуга выходит     inp  INT)              --номер вершины,                         --в которую дуга входит 

Создать триггер, обрабатывающий вставку одной записи и запрещающий ввод дуги, если из соответствующей вершины уже выходят 3 дуги.

CREATE TRIGGER  trigON graph FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

Определить конечный пункт, в который вылетело наименьшее число пассажиров.

Перейти

Дан некоторый фрагмент SQL-кода:

DECLARE @a CHAR(12)DECLARE @b DATETIMEDECLARE @c INTSET @a=’12.2.04’SET @c=6

Укажите правильный оператор для вычисления новой даты:

Перейти

Даны таблицы Город и Разговор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором городе из таблицы Город. При этом в таблице Разговор необходимо для всех телефонных разговоров с удаленным городом в качестве значения поля Код_Города поставить значение 0.

CREATE TRIGGER  trig_delON Город FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Какое из следующих описаний типов является неправильным?

Перейти

Даны таблицы

CREATE TABLE Город(Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY,Регион VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора INT,Код_Города INT NOT NULL,Фамилия VARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

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

Перейти

Дано представление.

CREATE VIEWASSELECT Город.Название, Разговор.Фамилия, Разговор.ПродолжительностьFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города;

Предпринимается попытка удалить из представления запись.

DELETE FROM VIEWWHERE Название='Самара' 

Результатом выполнения команды является следующее:

Перейти

Пусть в таблице Рейс представлены записи, где значения поля Номер_рейса равны 1, 3 ,5 ,7 ,9. Создан курсор для печати списка рейсов до Москвы.

DECLARE @n     INT,        @k     VARCHAR(50),                @p     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Список рейсов'DECLARE cursor1   CURSOR GLOBAL SCROLL DYNAMIC READ_ONLY FOR    SELECT Номер_рейса, Стоимость, Конечный_пункт   FROM Рейс   WHERE Конечный_пункт="Москва"OPEN cursor1SET @cur1=cursor1FETCH RELATIVE 3  FROM cursor1 INTO  @n, @p, @k    UPDATE Рейс SET Стоимость=Стоимость*1.5    WHERE CURRENT OF cursor1FETCH RELATIVE -2 FROM cursor1 INTO  @n, @p, @k    DELETE Рейс     WHERE CURRENT OF cursor1    SELECT @message='Рейс '+CAST(@n AS VARCHAR(20))+        '  Стоимость  '+ CAST(@p AS VARCHAR(4))CLOSE cursor1DEALLOCATE cursor1

Какие действия выполнит система?

Перейти

Разработан курсор для создания списка книг, вышедших в издательстве «Мир».

DECLARE @n     VARCHAR(50),        @iz    VARCHAR(50),                @p     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Список книг'DECLARE cursor1 CURSOR FOR   SELECT Название, Издательство, Цена   FROM Книга   WHERE Издательство="Мир"OPEN cursor1SET @cur1=cursor1FETCH NEXT FROM cursor1 INTO  @n, @iz, @pWHILE @@FETCH_STATUS=0BEGIN    SELECT @message='Книга '+@n+'        Цена  '+ CAST(@p AS VARCHAR(4))    PRINT @message-- переход к следующему клиенту--    FETCH NEXT FROM cursor1 INTO @n, @iz,@pENDCLOSE cursor1DEALLOCATE cursor1

Укажите правильные ответы.

Перейти

Каковы основные функции СУБД?

Перейти

Определите типы команд языка SQL.

Перейти

Определите роль сервера в двухуровневой архитектуре «клиент-сервер».

Перейти

Пусть номер паспорта состоит из 6 цифр, например: 321285. Укажите правильный тип данных для его описания.

Перейти

Какие из следующих чисел можно внести в поле, описанное как DECIMAL(4,1)?

Перейти

Какие из следующих описаний типов являются неправильными?

Перейти

Дан некоторый фрагмент SQL-кода:

DECLARE @a CHAR(12)DECLARE @b DATETIMEDECLARE @c INTSET @a=’12.11.03’SET @b=’3.04.04’

Укажите правильные операторы для вычисления количества дней между датами:

Перейти

Какие из следующих строк можно внести в поле, описанное как CHAR(4)?

Перейти

Какие из следующих описаний типов являются правильными?

Перейти

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1ON PRIMARY ( NAME=b1, FILENAME=’D:userb1.mdf’,SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),(NAME=b2,  SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%)LOG ON(NAME=l1, FILENAME=’E:userl1.ldf’, SIZE=50MB, MAXSIZE=100, FILEGROWTH=10)

Выберите правильный ответ.

Перейти

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

Перейти

В таблицу Автор необходимо добавить сведения об ИНН автора и заменить поле Возраст на поле Дата рождения.

Перейти

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%; для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1ON PRIMARY ( NAME=b1, FILENAME=’D:userb1.mdf’,SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),(NAME=b2,  FILENAME=’D:userb2.mdf’, SIZE=10MB, MAXSIZE=200, FILEGROWTH=10%)LOG ON(NAME=l1, FILENAME=’E:userl1.ldf’, SIZE=50MB, MAXSIZE=10, FILEGROWTH=10)

Выберите правильный ответ.

Перейти

Создана таблица Автор. Изменить тип поля Телефон на символьный и заменить поле Возраст полем Дата_рождения.

  CREATE TABLE Автор (Фамилия  VARCHAR(50) NOT NULL,   Пол      CHAR(3),  Возраст  INT NOT NULL,  Телефон  INT )

Перейти

Пусть дана таблица Автор с полями

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Найти авторов, количество трудов которых превышает 10, но не больше 20.

Перейти

Пусть дана таблица Рейс.

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Число_билетов INT
Стоимость MONEY

Вывести номера рейсов до Москвы с датой вылета не позднее 8 марта, но не ранее 1 марта.

Перейти

Пусть дана таблица Автор.

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Определить авторов, фамилии которых начинаются с буквы «Б» или «Г» и содержат слог «ор».

Перейти

Пусть дана таблица Город.

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Вывести регионы и города, стоимость минуты разговора с которыми либо меньше 20 руб., либо больше 100, а название города оканчивается на «-ов» или «-ин».

Перейти

Дана таблица Город с полями

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Найти города Поволжья или Урала, стоимость минуты телефонного разговора с которыми не меньше 2 руб. и не больше 10 руб.

Перейти

Дана таблица Автор. Вывести в алфавитном порядке фамилии авторов из Самары, в телефонном номере которых на первом или третьем месте стоит цифра от 5 до 8, а последними являются цифры 7 и 8.

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT)
CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса INT,Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Вывести номера мест и дату продажи билетов на рейсы до Москвы.

Перейти

Даны таблицы

CREATE TABLE Город( Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY)
CREATE TABLE Разговор(Код_Разговора INT ,Код_Города INT NOT NULL,Фамилия IVARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Вывести список городов, с которыми не зарегистрировано ни одного телефонного разговора.

Перейти

Даны таблицы

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)

Найти авторов, работающих как с издательством «Мир», так и с издательством «АСТ».

Перейти

Даны таблицы

CREATE TABLE Город( Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY)
CREATE TABLE Разговор(Код_Разговора INT ,Код_Города INT NOT NULL,Фамилия VARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Найти абонентов, которые звонят в Москву, но ни разу не вели переговоры с Самарой.

Перейти

Даны таблицы Автор и Книга

CREATE TABLE  Автор(Код_Автора   INT , Фамилия     VARCHAR(50), Пол         VARCHAR(50) NOT NULL )
CREATE TABLE Книга( Код_Книги INT,  Название  VARCHAR(50) NOT NULL,  Тематика  VARCHAR(50) NOT NULL,  Издательство  VARCHAR(50) NOT NULL,    Код_Автора INT NOT NULL)

Вывести список авторов, работающих в жанре «детектив».

Перейти

Вывести список авторов-женщин, работающих в жанре романа, но не в жанре фантастики.

CREATE TABLE  Автор(Код_Автора   INT , Фамилия     VARCHAR(50), Пол         VARCHAR(50) NOT NULL )
CREATE TABLE Книга( Код_Книги INT,  Название  VARCHAR(50) NOT NULL,  Тематика  VARCHAR(50) NOT NULL,  Издательство  VARCHAR(50) NOT NULL,    Код_Автора INT NOT NULL)

Перейти

Дана таблица

CREATE TABLE Книга( Код_Книги INT,  Название VARCHAR(50) NOT NULL,  Цена MONEY,   Тематика VARCHAR(50) NOT NULL,    Издательство VARCHAR(50) NOT NULL,    Код_Автора INT NOT NULL,  Количество INT)

Рассчитать общую стоимость тиража книг и 5% налог с продаж.

Перейти

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость MONEY )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Вес FLOAT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость MONEY NOT NULL)

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

Перейти

Даны таблицы

CREATE TABLE Город( Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY,Регион VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора INT,Код_Города INT NOT NULL,Фамилия VARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Определить фамилии абонентов, общее время разговоров которых менее 10 мин, а общая стоимость оказалась больше 100 руб.

Перейти

Даны таблицы

CREATE  TABLE   Рейс(Номер_рейса  INT, Конечный_пункт  VARCHAR(30), Дата_вылета  DATETIME, Число_билетов  INT, Стоимость        MONEY)
CREATE  TABLE   БИЛЕТ(Номер_места  CHAR(3), Номер_рейса  CHAR(6),  Дата_продажи  DATETIME,  Стоимость        MONEY)

Рассчитать общую стоимость билетов для каждого рейса, 5% налог с продаж и доход от рейсов до Москвы.

Перейти

На какую сумму были проданы билеты на рейс до Москвы в день вылета?

Перейти

Даны таблицы

CREATE TABLE  Блюдо(Название_блюда VARCHAR(20)  NOT NULL, Время_приготовления  INT NOT NULL, Общая_калорийность INT NOT NULL,  Номер_рецепта INT, Повар VARCHAR(20), Стоимость MONEY )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),  Калорийность INT NOT NULL,    Вес FLOAT,  Белки INT,  Блюдо VARCHAR(20),  Углеводы INT,  Стоимость MONEY NOT NULL)

Определить блюдо, которое можно приготовить быстрее всех остальных блюд.

Перейти

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Тип_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость MONEY )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Вес FLOAT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость MONEY NOT NULL)

Определить, кто из поваров не готовит десерт.

Перейти

Даны таблицы

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,Количество INT)

Определить авторов, написавших наибольшее количество книг.

Перейти

Даны таблицы

CREATE TABLE Город( Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY,Регион VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора INT ,Код_Города INT NOT NULL,Фамилия IVARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

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

Перейти

Даны таблицы Рейс и Билет.

CREATE  TABLE   Рейс(Номер_рейса	INT, Конечный_пункт	 VARCHAR(30), Продолжительность_маршрута INT)
CREATE  TABLE   БИЛЕТ(Номер_места  CHAR(3), Номер_рейса  CHAR(6), Фамилия_пассажира VARCHAR(20))

Определить самый продолжительный рейс.

Перейти

Пусть дана таблица Блюдо с полями

Название_блюда VARCHAR(20)
Тип_блюда VARCHAR(20)
Время_приготовления INT
Калорийность INT NOT NULL
Повар VARCHAR(20)
Стоимость MONEY NOT NULL

Укажите правильный оператор добавления записи.

Перейти

Пусть дана таблица Блюдо с полями

Название_блюда VARCHAR(20)
Тип_блюда VARCHAR(20)
Время_приготовления INT
Калорийность INT NOT NULL
Повар VARCHAR(20)
Стоимость MONEY

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

Перейти

Пусть дана таблица Блюдо с полями

Название_блюда VARCHAR(20)
Тип_блюда VARCHAR(20)
Время_приготовления INT
Калорийность INT NOT NULL
Повар VARCHAR(20)
Стоимость MONEY NOT NULL

Установить калорийность, равную 100 ккал, для блюд без указанной калорийности.

Перейти

Даны таблицы

CREATE TABLE Город(Код_Города INT,Название VARCHAR(20) NOT NULL,Тариф MONEY)
CREATE TABLE Разговор(Код_Разговора INT,Код_Города INT NOT NULL,Фамилия IVARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Удалить информацию о городах, с которыми не было ни одного телефонного разговора.

Перейти

Даны таблицы Город и Разговор. Удалить данные об абонентах, суммарная продолжительность телефонных разговоров которых оказалась меньше 10 мин.

CREATE TABLE Город ( Код_Города INT ,   Название   VARCHAR(20) NOT NULL,   Тариф      MONEY)
CREATE TABLE Разговор (Код_Разговора     INT,  Код_Города         INT NOT NULL,  Фамилия           VARCHAR(20),  Дата              DATETIME,  Продолжительность INT)

Перейти

Даны две таблицы. Определить в них первичные ключи.

CREATE TABLE Город (Код_Города CHAR(5), Название  VARCHAR(20) NOT NULL UNIQUE,   Тариф     MONEY)
CREATE TABLE Разговор(Дата              DATETIME NOT NULL, ВремяСуток        VARCHAR(5),  Продолжительность INT NOT NULL)

Перейти

Даны таблицы Блюдо и Компонент.

CREATE TABLE  Блюдо(Название_блюда       VARCHAR(20), Время_приготовления  INT, Общая_калорийность   INT,  Повар                VARCHAR(20), Стоимость            MONEY, Тип_блюда            VARCHAR(20))
CREATE TABLE Компонент(Название_компонента  VARCHAR(20), Калорийность         INT,    Стоимость_компонента FLOAT )  

Между ними необходимо установить связь «один-ко-многим» (одно блюдо — много компонент) с учетом первичных ключей.

Перейти

Даны таблицы Блюдо и Компонент.

CREATE TABLE Блюдо(Название_блюда VARCHAR(20),Время_приготовления INT,Общая_калорийность INT,Повар VARCHAR(20),Стоимость MONEY,Тип_блюда VARCHAR(20))
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT,Стоимость_компонента FLOAT ) 

В таблице Блюдо ограничить тип блюда заданным списком: десерт, выпечка, закуска.

Перейти

Даны таблицы Город и Разговор.

CREATE TABLE Город(Код_Города CHAR(5),Название VARCHAR(20) NOT NULL UNIQUE,Тариф MONEY)
CREATE TABLE Разговор(Дата DATETIME NOT NULL,ВремяСуток VARCHAR(5),Продолжительность INT NOT NULL)

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

Перейти

Даны таблицы Рейс и Билет. Между ними необходимо установить связь «один-ко-многим» (один рейс — много мест).

CREATE  TABLE Рейс (Номер_рейса	INT PRIMARY KEY,  Номер_борта      CHAR(5) UNIQUE,  Конечный_пункт	VARCHAR(20),  Дата_вылета	DATETIME)
CREATE  TABLE   Билет(Номер_места	INT, Номер_рейса      INT, Дата_продажи	DATETIME, СтоимостьMONEY, PRIMARY KEY(Номер_места, Номер_рейса))

Перейти

В таблице Город значения поля Тариф ограничить диапазоном от 0.1 руб. до 7.8. Руб.

Перейти

Дано представление с вычислениями.

CREATE VIEW view2ASSELECT Название, Издательство, Цена, Цена*Количество AS СтоимостьFROM КнигаWHERE Цена>50

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Цена=Цена*1.5WHERE Издательство='Мир'

Результатом выполнения команды является следующее:

Перейти

Дано представление с данными из разных таблиц.

CREATE VIEW view3ASSELECT Книга.Название, Книга.Издательство, Автор.ФамилияFROM Автор INNER JOIN Книга ON Автор.Код_Автора = Книга.Код_Автора

Предпринимается попытка добавить в представление запись.

INSERT INTO view3(Название, Издательство, Фамилия)VALUES('Анна Каренина','Мир','Л.Толстой')

Результатом выполнения команды является следующее:

Перейти

Дано представление с группировкой.

CREATE VIEW view4ASSELECT Регион, Avg(Тариф) AS Средн_ТарифFROM ГородGROUP BY РегионHAVING Регион=’Поволжье’

Предпринимается попытка удалить записи:

DELETE FROM view4WHERE Регион=’Урал’

Перейти

Дано представление.

CREATE VIEW view2ASSELECT Номер_рейса, Стоимость, Стоимость*0.05 AS НалогFROM РейсWHERE Конечный_пункт=’Москва’ 

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Стоимость = Стоимость *1.5WHERE Стоимость>100

Результатом выполнения команды является следующее:

Перейти

Дано представление.

CREATE VIEW view5ASSELECT Билет.Номер_места, Билет.Номер_рейса, Рейс.Конечный_пунктFROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса

Предпринимается попытка удалить из представления запись.

DELETE FROM view5WHERE Конечный_пункт ='Москва'

Результатом выполнения команды является следующее:

Перейти

Разработана функция, определяющая по фамилии автора общий тираж книг.

CREATE FUNCTION user1.my_func1(@n VARCHAR(20))RETURNS INTASBEGIN  DECLARE @k INT  SET @k=(SELECT Sum(Книга.Количество)      FROM Автор INNER JOIN Книга       ON Автор.Код_Автора = Книга.Код_Автора      GROUP BY Автор.Фамилия      HAVING Автор.Фамилия=@n)  RETURN (@k)END

Определите операторы правильного обращения к функции.

Перейти

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

Перейти

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

Перейти

Определите команду для вызова функции, создаваемой следующей командой:

CREATE FUNCTION user1.my_func3(@c VARCHAR(20),@d DATETIME)RETURNS TABLEASRETURN (SELECT Номер_рейса        FROM Рейс        WHERE Конечный_пункт=@c AND Дата_вылета=@d)

Перейти

Необходимо разработать функцию для получения списка абонентов, звонивших в указанный город в заданный месяц. Функция создается командой:

Перейти

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

Перейти

Создана процедура для увеличения на заданный % цены книг заданного издательства.

CREATE PROC my_proc1@p FLOAT,@iz VARCHAR(20)AS UPDATE Книга SET Цена =Цена*(1+@p)WHERE Издательство=@iz

Определите правильную команду для выполнения процедуры.

Перейти

Для определения общей стоимости книг, изданных заданным автором в заданном издательстве, разработана процедура:

CREATE PROC my_proc2@f VARCHAR(20),@iz VARCHAR(20),@s FLOAT OUTPUTASSELECT @s=Sum(Книга.Цена*Книга.Количество) FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораGROUP BY Автор.Фамилия, Книга.ИздательствоHAVING Автор.Фамилия=@f AND Книга.Издательство=@iz

Укажите правильный вызов процедуры

Перейти

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

CREATE PROC my_proc3@f VARCHAR(20)=’Петров’,@iz VARCHAR(20)=’АСТ’,@s FLOAT=0.1 OUTPUTASSELECT @s=Sum(Книга.Цена*Книга.Количество) FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораGROUP BY Автор.Фамилия, Книга.ИздательствоHAVING Автор.Фамилия=@f AND Книга.Издательство=@iz

Укажите правильный вызов процедуры

Перейти

В базе данных basa1 имеется таблица Рейс. Из базы данных basa2 необходимо выполнить действие по увеличению стоимости билетов на все рейсы на 25%. В какой базе данных должна быть создана процедура и как можно ее выполнить?

Перейти

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

CREATE PROC my_proc@f VARCHAR(20)='Петров',@iz VARCHAR(20)='АСТ',@k INT=1 OUTPUTASSELECT @k=Sum(Книга.Количество) FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораGROUP BY Автор.Фамилия, Книга.ИздательствоHAVING Автор.Фамилия=@f AND Книга.Издательство=@iz

Укажите правильный вызов процедуры

Перейти

В базе данных basa1 имеется таблица Книга. Содержащуюся в ней информацию необходимо прочитать из базы данных basa2. В какой базе данных должна быть создана процедура, и как можно ее выполнить?

Перейти

Разработан курсор для вывода списка десертов.

DECLARE @b     VARCHAR(50),        @t     VARCHAR(50),                @k     INT,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Меню'DECLARE cursor1 CURSOR FOR   SELECT Название_блюда, Калорийность, Тип_блюда   FROM Блюдо   WHERE Тип_блюда="Десерт"OPEN cursor1SET @cur1=cursor1WHILE @@FETCH_STATUS=0BEGIN    SELECT @message='Блюдо '+@b+    '  Калорийность '+ CAST(@k AS VARCHAR(4))    PRINT @message    FETCH NEXT FROM cursor1 INTO @t, @b, @kENDCLOSE cursor1DEALLOCATE cursor1

Укажите правильные ответы.

Перейти

Разработана процедура, возвращающая список названий десертов.

CREATE PROC my_proc@cur CURSOR VARYING OUTPUTASSET @cur=CURSOR FORWARD_ONLY STATIC FOR   SELECT Название_блюда, Калорийность, Тип_блюда   FROM Блюдо   WHERE Тип_блюда="Десерт"

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

DECLARE @my_cur CURSORDECLARE @n VARCHAR(20)EXEC my_proc @cur=@my_cur OUTPUTOPEN @curWHILE (@@FETCH_STATUS=0)BEGIN  FETCH NEXT FROM @my_cur INTO @n  SELECT @nENDCLOSE @my_curDEALLOCATE @my_cur  

Укажите правильные ответы.

Перейти

Разработан курсор для печати списка номеров рейсов.

DECLARE @n     INT,        @k     VARCHAR(50),                @p     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Список клиентов'DECLARE cursor1 CURSOR GLOBAL SCROLL STATIC FOR   SELECT Номер_рейса, Стоимость, Конечный_пункт   FROM Рейс   WHERE Конечный_пункт="Москва"OPEN cursor1SET @cur1=cursor1FETCH FIRST  FROM cursor1 INTO  @n, @p, @kFETCH ABSOLUTE 3 FROM cursor1 INTO  @n, @p, @kFETCH NEXT  FROM cursor1 INTO  @n, @p, @k    SELECT @message='Рейс '+CAST(@n AS VARCHAR(20))+    '  Стоимость  '+ CAST(@p AS VARCHAR(4))    PRINT @message    CLOSE cursor1DEALLOCATE cursor1

Какая из имеющихся в курсоре записей будет распечатана?

Перейти

Пусть в таблице Книга представлены записи, где значения поля Код_Книги равны 1, 2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 и 10. Создан курсор для вывода списка книг издательства «Мир».

DECLARE @n     VARCHAR(50),        @iz    VARCHAR(50),                @p     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Список книг'DECLARE cursor1 CURSOR GLOBAL SCROLL KEYSET FOR   SELECT Название, Издательство, Цена   FROM Книга   WHERE Издательство="Мир"OPEN cursor1SET @cur1=cursor1FETCH ABSOLUTE 9  FROM cursor1 INTO  @n, @iz, @p    DELETE Книга     WHERE CURRENT OF @cur1 FETCH RELATIVE -2 FROM cursor1 INTO  @n, @iz, @p    UPDATE Книга SET Цена=Цена*1.5    WHERE CURRENT OF cursor1    SELECT @message='Книга '+@n+'  Цена  '+       CAST(@p AS VARCHAR(4))    PRINT @message    CLOSE cursor1DEALLOCATE cursor1

Какие действия выполнит система?

Перейти

Разработана процедура, возвращающая номера рейсов до заданного пункта.

CREATE PROC my_proc@p VARCHAR(20),@cur CURSOR VARYING OUTPUTASSET @cur=CURSOR FORWARD_ONLY STATIC FOR   SELECT Номер_рейса, Стоимость, Конечный_пункт   FROM Рейс   WHERE Конечный_пункт=@pOPEN @cur

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

DECLARE @my_cur CURSORDECLARE @n INTEXEC my_proc @p='Москва',@cur=@my_cur OUTPUTWHILE (@@FETCH_STATUS=0)BEGIN  FETCH NEXT FROM @my_cur INTO @n  SELECT @nENDCLOSE @my_curDEALLOCATE @my_cur  

Укажите правильные ответы.

Перейти

Даны таблицы Блюдо и Компонент. Создать триггер, обрабатывающий вставку одной записи в таблицу Компонент. При этом в таблице Блюдо должна увеличиться стоимость соответствующего блюда.

CREATE TRIGGER  trig_insON Компонент FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

Даны таблицы Блюдо и Компонент. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором блюде из таблицы Блюдо. При этом в таблице Компонент необходимо для всех компонентов удаленного блюда в качестве значения поля Название_блюда поставить значение NULL.

CREATE TRIGGER  trig_delON Блюдо FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Даны таблицы Блюдо и Компонент. Создать триггер, обрабатывающий изменение стоимости одного компонента в таблице Компонент. При этом в таблице Блюдо должна измениться стоимость соответствующего блюда.

CREATE TRIGGER  trig_updON Компонент FOR UPDATE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица Компонент. Разработать триггер, выполняющийся вместо изменения калорийности одного компонента. Выполнить изменение калорийности только в том случае, если общая калорийность блюда, в состав которого входит изменяемый компонент, не превышает 400 ккал.

CREATE TRIGGER  trig_upd  ON Компонент INSTEAD OF UPDATE AS  

Выберите операторы для продолжения текста триггера.

Перейти

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

CREATE TRIGGER  trig_delON Автор FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица Разговор. Разработать триггер, который выполняется вместо изменения продолжительности одного разговора. Выполнить изменение продолжительности только для тех абонентов, которые говорили с Москвой.

CREATE TRIGGER  trig_upd  ON Разговор INSTEAD OF UPDATE AS  

Выберите операторы для продолжения текста триггера.

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Разработать триггер для вставки новой записи, причем необходимо отменить ввод, если номер начального события оказался меньше номера хотя бы одного конечного события, введенного ранее.

CREATE TRIGGER  trig_insON Граф FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Разработать триггер для удаления работы, причем необходимо отменить удаление, если работа оказалась единственной, выходящей из данного события.

CREATE TRIGGER  trig_delON Граф FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Если изменяется только номер конечного события и это изменение приводит к появлению параллельной работы, отменить изменение.

CREATE TRIGGER  trig_updON Граф FOR UPDATE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph(nomer INT PRIMARY KEY, --номер дуги outp  INT,             --номер вершины,                         --из которой дуга выходит  inp   INT)             --номер вершины,                        -- в которую дуга входит 

Создать триггер, обрабатывающий вставку одной записи и запрещающий ввод параллельных дуг.

CREATE TRIGGER  trigON graph FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph(nomer INT PRIMARY KEY, --номер дуги outp   INT,            --номер вершины,                         --из которой дуга выходит     inp  INT)              --номер вершины,                         --в которую дуга входит 

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

CREATE TRIGGER  trigON graph FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRANSAVE TRANSACTION  p1 INSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'a',10)INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'b',20)INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'c',30)INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'd',40)INSERT Товар (Код_Товара, Название, остаток) VALUES (5, 'e',50)UPDATE Товар SET Название ='g' WHERE Код_Товара=3  SAVE TRANSACTION  p2  DELETE FROM Товар WHERE Код_Товара=4    UPDATE Товар SET Название ='m' WHERE Код_Товара=5    SAVE TRANSACTION  p3    UPDATE Товар SET Название ='k' WHERE Код_Товара=1    SAVE TRANSACTION  p4      DELETE FROM Товар       WHERE Код_Товара>1 AND Код_Товара<4    ROLLBACK TRANSACTION p3    INSERT Товар (Код_Товара, Название, остаток) VALUES (6, 'f',70)    DELETE FROM Товар WHERE Код_Товара=3COMMIT

После завершения транзакции в таблице Товар останутся товары с названиями:

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN AINSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'v',40)   BEGIN TRAN B    INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'n',50)   UPDATE Товар SET Название =’k’ WHERE Код_Товара=1      BEGIN TRAN C       INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'm',60)ROLLBACK TRAN С UPDATE Товар SET Название =’m’ WHERE Код_Товара=2COMMITINSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'b',70)ROLLBACK TRAN

После завершения транзакции в таблице Товар останутся товары с кодами:

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVELSERIALIZABLE                                      BEGIN TRANSACTION TRA1.SELECT * FROM Товар                          3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=3                                  ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATION LEVELREAD COMMITTED                  BEGIN TRANSACTION TRB                      2. INSERTТовар(Код_Товара,Название,остаток) VALUES (3,'SS',999)                                                              4.SELECT * FROM ТоварROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

Перейти

Задание: Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRANINSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'a',10)INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'b',20)INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'c',30)SAVE TRANSACTION  p1 INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'd',40)INSERT Товар (Код_Товара, Название, остаток) VALUES (5, 'e',50)  SAVE TRANSACTION  p2  DELETE FROM Товар WHERE Код_Товара=4    SAVE TRANSACTION  p3    UPDATE Товар SET Название ='g' WHERE Код_Товара=2    SAVE TRANSACTION  p4      DELETE FROM Товар       WHERE Код_Товара<>1 AND Код_Товара<>4    ROLLBACK TRANSACTION p3    INSERT Товар (Код_Товара, Название, остаток) VALUES (6, 'f',70)    ROLLBACK TRANSACTION p1    DELETE FROM Товар WHERE Код_Товара=3COMMIT

После завершения транзакции в таблице Товар останутся записи о товарах с названиями:

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVEL SERIALIZABLE                                      1.BEGIN TRANSACTION TRA  SELECT * FROM Товар                          3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4                                 ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATION LEVEL REPEATABLE READ                  2. BEGIN TRANSACTION TRBUPDATE Товар SET      остаток=остаток+10 WHERE Код_Товара=4                                                          4.DELETE FROM Товар WHERE Код_Товара=4ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие заблокирует?

Перейти

В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?

Basa_user
Администратор UserA UserB
GRANT ALL TO UserA CREATE TABLE tab(id_t INT PRIMARY KEY,  nam_t VARCHAR(20))GRANT SELECT ON tab TO UserB  
INSERT INTO userA.tab values(1,’aa’) INSERT INTO tab values (2,’bb’) SELECT * FROMtab
? ? ?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345 GRANT ALL TO UserA CREATE TABLE tab(id_t INT, nam_t CHAR(8));GRANT INSERT ON tab TO UserBWITH GRANT OPTION;REVOKE INSERT ON tab TO UserB CASCADE GRANT INSERT ON UserA.tab TO UserC  
6 INSERT INTO UserA.tab values(1,’aa’) INSERT INTO UserA.tab values (2,’bb’) INSERT INTO UserA.tab values (3,’сс’) SELECT * FROM UserA.tab
7 ? ? ? ?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
123456789 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember’role1′,’UserA’sp_addrolemember’role1’,’UserB’sp_addrolemember ‘role1’,’UserC’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserAWITH GRANT OPTIONREVOKE INSERT ON tab TO role1 GRANT INSERT ON tab TO UserC    
10 INSERT INTO tabvalues(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
11 ? ? ? ?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1234 CREATE TABLE tab(id_t INT, nam_t CHAR(8))GRANT INSERT ON tab TO UserA GRANT INSERT ON tab TO UserB    
5 INSERT INTO tab values (1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
6 ? ? ? ?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345678 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember ‘role1’,’UserA’sp_addrolemember ‘role1’,’UserC’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserBREVOKE INSERT ON tab TO UserA CASCADE   GRANT INSERT ON tab TO UserC  
9 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
10 ? ? ? ?

Перейти

Дан фрагмент сценария VBScript для выборки данных из таблицы Автор, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject("ADODB.Connection")Set rst=Server.CreateObject("ADODB.Recordset")cn.open "pwd=user1;driver={SQL Server};  server=its; database = basa_user1"rst.open "SELECT Фамилия, Телефон FROM Автор", cndo until rst.eof   response.write rst.fields(0)    response.write rst.fields(1)    response.write rst.fields(2)&"<br>"   rst.movenextloop

Указать правильные ответы.

Перейти

Дан фрагмент Java-программы для выборки данных из таблицы Автор, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection myCon= DriverManager.getConnection("jdbc:odbc:mystud","user1","user1");Statement mySt=myCon.createStatement();ResultSet rs=mySt.executeQuery("SELECT Фамилия, Телефон,   Дата_рождения FROM Автор ");while (rs.next())  {       String var1=rs.getString(1);       String var2=rs.getString(2);       String var3=rs.getString(3);...}

Указать правильные ответы.

Перейти

Дан фрагмент сценария VBScript для изменения данных в таблице Рейс.

prm1=Server.CreateObject("ADODB.Parameter")prm2=Server.CreateObject("ADODB.Parameter")cmd.CommandText = "update Рейс set Стоимость=? where Конечный_пункт=?"cmd.CommandType = adCmdTextcmd.Prepared = TrueSet prm1 = сmd.CreateParameter("p1", adVarChar, adParamInput,20 ,'Москва')Set prm2 = сmd.CreateParameter("p2", adInteger, adParamInput, ,231290.50)cmd.Parameters.Append prm1cmd.Parameters.Append prm2cmd.Execute

Указать правильные ответы.

Перейти

Дан фрагмент Java-программы для изменения данных в таблице Город.

PreparedStatement mySt=Con.prepareStatement("update Город set Тариф=? where Название=?");mySt.setFloat(1, 4.50);mySt.setString(2,'Самара');int res=mySt.executeUpdate();

Указать правильные ответы.

Перейти

Дан фрагмент сценария VBScript для удаления и выборки данных из таблицы Город в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject("ADODB.Connection")Set rst=Server.CreateObject("ADODB.Recordset")cn.open "pwd=user1;driver={SQL Server}; server=its; database = basa_user1"rst.execute "DELETE FROM Город WHERE Код_Города=2134"rst.open "SELECT Код_Города, Название, Тариф FROM Город", cndo until rst.eof   response.write rst.fields(0)    response.write rst.fields(1)    response.write rst.fields(2)&"<br>"   rst.movenextloop

Указать правильные ответы.

Перейти

Дан фрагмент Java-программы для выборки данных из таблицы Город, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection myCon= DriverManager.getConnection("jdbc:odbc:mystud","user1","user1");Statement mySt=myCon.createStatement();int res=mySt.execute("UPDATE Город  SET Код_Города=812   WHERE Код_Города=734");ResultSet rs=mySt.executeQuery("SELECT Код_Города,    Название, Тариф FROM Город ");while (rs.next())  {       int var1=rs.getInt(1);       String var2=rs.getString(2);       int var3=rs.getInt(3);...}

Указать правильный ответ.

Перейти

Даны таблицы Книга и Автор. Создать триггер, обрабатывающий изменение количества книг в одной записи таблицы Книга. При этом в таблице Автор необходимо пересчитать общий тираж книг соответствующего автора.

CREATE TRIGGER  trig_updON Книга FOR UPDATE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дан фрагмент Java-программы для удаления и выборки данных из таблицы Автор, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection myCon= DriverManager.getConnection("jdbc:odbc:mystud","user1","user1");Statement mySt=myCon.createStatement();int res=mySt.executeUpdate("DELETE FROM Автор  WHERE Фамилия=’Иванов’");ResultSet rs=mySt.executeQuery("SELECT Фамилия,    Телефон, Дата_рождения FROM Автор ");while (rs.next())  {       String var1=rs.getString(1);       String var2=rs.getString(2);       String var3=rs.getString(3);...}

Указать правильные ответы.

Перейти

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

CREATE PROC my_proc@cur CURSOR VARYING OUTPUTASSET @cur=CURSOR FORWARD_ONLY STATIC FOR   SELECT Название, Тариф, Регион   FROM Город   WHERE Регион="Поволжье"OPEN @cur

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

DECLARE @my_cur CURSORDECLARE @n VARCHAR(20)EXEC my_proc @cur=@my_cur OUTPUT  FETCH NEXT FROM @my_cur INTO @n  SELECT @nWHILE (@@FETCH_STATUS=0)BEGIN  FETCH NEXT FROM @my_cur INTO @n  SELECT @nENDCLOSE @my_curDEALLOCATE @my_cur  

Укажите правильные ответы.

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVEL READCOMMITTED                                      BEGIN TRANSACTION TRA1.SELECT * FROM Товар                          3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4                                ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATIONLEVEL SERIALIZABLE                                      BEGIN TRANSACTION TRB                        2. INSERT Товар(Код_Товара,Название, остаток) VALUES (2,'SS',999)                                                                  4.SELECT * FROM ТоварROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

Перейти

Даны таблицы

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,  Количество INT)

Определить автора самой дорогой книги.

Перейти

Дан фрагмент Java-программы для выборки данных из таблицы Город, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection myCon= DriverManager.getConnection("jdbc:odbc:mystud","user1","user1");Statement mySt=myCon.createStatement();ResultSet rs=mySt.executeQuery("SELECT Код_Города, Название,      Тариф FROM Город ");while (rs.next())  {       int var1=rs.getInt(0);       String var2=rs.getInt(1);       int var3=rs.getInt(2);...}

Указать правильные ответы.

Перейти

Разработан курсор для печати списка книг.

DECLARE @n     VARCHAR(50),        @iz    VARCHAR(50),                @p     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Список книг'DECLARE cursor1 CURSOR GLOBAL SCROLL KEYSET FOR   SELECT Название, Издательство, Цена   FROM Книга   WHERE Издательство="Мир"OPEN cursor1SET @cur1=cursor1FETCH LAST  FROM cursor1 INTO  @n, @iz, @pFETCH ABSOLUTE 2 FROM cursor1 INTO  @n, @iz, @pFETCH RELATIVE -2 FROM cursor1 INTO  @n, @iz, @p    SELECT @message='Книга '+@n+'  Цена  '+     CAST(@p AS VARCHAR(4))    PRINT @message    CLOSE cursor1DEALLOCATE cursor1

Какая из имеющихся в курсоре записей будет распечатана?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
123456789 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember ‘role1’,’UserA’sp_addrolemember ‘role1’,’UserC’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserAWITH GRANT OPTIONREVOKE INSERT ON tab TO role1 GRANT INSERT ON tab TO UserB    
10 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
11 ? ? ? ?

Перейти

Назовите отличительные черты реляционных баз данных.

Перейти

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

Перейти

Какое из следующих чисел можно внести в поле, описанное как NUMERIC(5,3)?

Перейти

Какие из следующих описаний типов являются правильными?

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Запретить одновременное изменение номеров начального и конечного событий и длительности.

CREATE TRIGGER  trig_updON Граф FOR UPDATE AS

Выберите операторы для продолжения текста триггера.

Перейти

Даны таблицы

CREATE TABLE  Блюдо(Название_блюда VARCHAR(20)  NOT NULL, Время_приготовления  INT NOT NULL, Общая_калорийность INT NOT NULL,  Номер_рецепта INT, Повар VARCHAR(20), Стоимость MONEY )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),  Калорийность INT NOT NULL,    Вес FLOAT,  Белки INT,  Блюдо VARCHAR(20),  Углеводы INT,  Стоимость MONEY NOT NULL)

Рассчитать общую стоимость и калорийность компонентов блюда.

Перейти

Даны таблицы

CREATE TABLE Город(Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY,Регион VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора INT,Код_Города INT NOT NULL,Фамилия VARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Рассчитать стоимость каждого разговора.

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость MONEY)
CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса CHAR(6),Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Определить количество проданных на каждый рейс билетов.

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость MONEY)
CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса INT,Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Вывести список городов, куда было продано не менее 200 билетов на сумму, превышающую 10000 руб.

Перейти

Определить количество и общую продолжительность разговоров для каждого региона, с городами которого осуществляли телефонную связь абоненты, чьи фамилии содержат слог «-ва-».

Перейти

Даны таблицы

CREATE TABLE Город ( Код_Города INT ,  Название VARCHAR(20) NOT NULL,    Тариф MONEY,  Регион VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора INT, Код_Города INT NOT NULL, Фамилия IVARCHAR(20), Дата DATETIME NOT NULL,  Продолжительность INT NOT NULL)

Вывести список городов, телефонные тарифы которых выше среднего.

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость MONEY) 
CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса CHAR(6),Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Вывести список пассажиров, не летающих в Самару.

Перейти

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость MONEY )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Вес FLOAT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость MONEY NOT NULL)

Определить самое калорийное блюдо.

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость MONEY) 
CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса CHAR(6),Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Определить пассажиров, реже других летающих в Москву.

Перейти

Определить издательства, выручившие от продажи книг наименьшую сумму.

Перейти

Пусть дана таблица Автор с полями

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME NOT NULL
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Укажите правильный оператор добавления записи.

Перейти

Дана таблица Билет с полями:

номер_места CHAR(3)
номер_рейса CHAR(6)
дата_продажи DATETIME
стоимость MONEY
фамилия_пассажира VARCHAR(20) NOT NULL

Удалить данные о билетах, проданных за прошлый месяц.

Перейти

Даны таблицы

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)

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

Перейти

Даны таблицы Автор и Книга. Удалить сведения об авторах, издавших только одну книгу.

CREATE TABLE  Автор( Код_Автора INT ,  Фамилия  VARCHAR(50))
CREATE TABLE Книга( Код_Книги  INT,  Название   VARCHAR(50),  Цена       MONEY,  Код_Автора INT)

Перейти

Даны две таблицы. Определить в них первичные ключи.

CREATE TABLE  Блюдо(Название_блюда  VARCHAR(20), Время_приготовления  INT, Общая_калорийность  INT, Повар  VARCHAR(20), Стоимость  MONEY, Тип_блюда  VARCHAR(20))
CREATE TABLE Компонент(Название_компонента  VARCHAR(20), Калорийность  INT,    Стоимость_компонента FLOAT ) 

Перейти

Даны таблицы Автор и Книга.

CREATE TABLE  Автор( Паспорт  INT,  Фамилия  VARCHAR(50)  NULL,   Имя      VARCHAR(50) NULL,  Отчество VARCHAR(50) NULL,  Пол      CHAR(7),  Возраст  INT ,  Телефон  INT )
CREATE TABLE Книга( Название     VARCHAR(50),  Цена         MONEY,   Тематика     VARCHAR(50),    Издательство VARCHAR(50),   Количество   INT)

Между ними необходимо установить связь «один-ко-многим» (один автор — много книг) с учетом первичных ключей.

Перейти

Даны таблицы Рейс и Билет.

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(20),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость MONEY)
CREATE TABLE Билет(Номер_места INT,Номер_рейса INT,Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(30))

В таблице Рейс ограничить конечный пункт заданным списком: Москва, Самара, Киев.

Перейти

Даны таблицы Автор и Книга.

CREATE TABLE Автор( Паспорт INT,Фамилия VARCHAR(50) NULL,Имя VARCHAR(50) NULL,Отчество VARCHAR(50) NULL,Пол CHAR(7),Возраст INT ,Телефон INT )
CREATE TABLE Книга( Название VARCHAR(50),Цена MONEY,Тематика VARCHAR(50),Издательство VARCHAR(50),Количество INT)

Для поля Пол таблицы Автор создать и применить правило для ввода только значений «Мужской» и «Женский».

Перейти

Даны таблицы Автор и Книга. Между ними необходимо установить связь «один-ко-многим» (один автор — много книг).

CREATE TABLE  Автор( Паспорт  CHAR(20) PRIMARY KEY,  Фамилия  VARCHAR(50),  Пол      CHAR(3),  Телефон  CHAR(12))
CREATE TABLE Книга( УДК          CHAR(20) PRIMARY KEY,  Название     VARCHAR(50),  Цена         MONEY,  Тематика     VARCHAR(50),  Издательство VARCHAR(50),  Автор        CHAR(20))

Перейти

В таблице Билет ограничить поле Номер_места диапазоном от 0 до 250.

Перейти

Даны таблицы

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,Количество INT)

На какую сумму были проданы книги каждого автора?

Перейти

Даны таблицы

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,Количество INT)

Определить авторов, не печатающих свои книги в издательстве «АСТ».

Перейти

Даны таблицы

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,Количество INT)

Определить авторов, общая стоимость книг которых, выпущенных издательством «Мир», составила наименьшую сумму.

Перейти

Даны таблицы Автор и Книга.

CREATE TABLE  Автор( Код_Автора INT ,  Фамилия   VARCHAR(50))
CREATE TABLE Книга( Код_Книги     INT,  Название      VARCHAR(50) NOT NULL,  Цена          MONEY,  Издательство  VARCHAR(50) NOT NULL,  Код_Автора     INT NOT NULL,  Количество    INT)

Определить авторов, чьи какие-либо книги проданы в наименьшем количестве.

Перейти

Пусть дана таблица Город с полями

Код_Города CHAR(5) NOT NULL
Название VARCHAR(20)
Регион VARCHAR(30)
Тариф MONEY

Удалить сведения о городах, для которых не указаны регион и телефонный тариф.

Перейти

Даны две таблицы. Определить в них первичные ключи.

CREATE TABLE  Автор( Паспорт  INT,  Фамилия  VARCHAR(50)  NULL,  Имя      VARCHAR(50) NULL,  Отчество VARCHAR(50) NULL,  Пол      CHAR(7),  Возраст  INT ,  Телефон  INT )
CREATE TABLE Книга( Название     VARCHAR(50),  Цена         MONEY,  Тематика     VARCHAR(50),  Издательство VARCHAR(50),  Количество   INT)

Перейти

Даны таблицы Автор и Книга.

CREATE TABLE Автор( Паспорт INT,Фамилия VARCHAR(50) NULL,Имя VARCHAR(50) NULL,Отчество VARCHAR(50) NULL,Пол CHAR(7),Возраст INT ,Телефон INT )
CREATE TABLE Книга( Название VARCHAR(50),Цена MONEY,Тематика VARCHAR(50),Издательство VARCHAR(50),Количество INT)

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

Перейти

Даны таблицы Блюдо и Компонент.

CREATE TABLE Блюдо(Название_блюда VARCHAR(20),Время_приготовления INT,Общая_калорийность INT,Повар VARCHAR(20),Стоимость MONEY,Тип_блюда VARCHAR(20))
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT,Стоимость_компонента FLOAT ) 

Для полей Стоимость в таблице Блюдо и Стоимость_компонента в таблице Компонент создать и применить правило ввода значений больше 0 и меньше 100.

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRANSAVE TRANSACTION  p1 INSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'a',10)INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'b',20)INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'c',30)INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'd',40)INSERT Товар (Код_Товара, Название, остаток) VALUES (5, 'e',50)  SAVE TRANSACTION  p2  DELETE FROM Товар WHERE Код_Товара=2    SAVE TRANSACTION  p3    DELETE FROM Товар WHERE Код_Товара=5    SAVE TRANSACTION  p4      DELETE FROM Товар        WHERE Код_Товара<2 OR Код_Товара>4    ROLLBACK TRANSACTION p3    INSERT Товар (Код_Товара, Название, остаток) VALUES (6, 'f',60)    SAVE TRANSACTION  p5    INSERT Товар (Код_Товара, Название, остаток) VALUES (7, 'g',70)    ROLLBACK TRANSACTION p5COMMIT

После завершения транзакции в таблице Товар останутся товары с кодами:

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN AINSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'a',40)   BEGIN TRAN B    INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'b',50)   UPDATE Товар SET Название =’m’ WHERE Код_Товара=1      BEGIN TRAN C       INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'c',60)ROLLBACK TRAN C INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'd',70)UPDATE Товар SET Название =’k’ WHERE Код_Товара=1ROLLBACK TRAN

После завершения транзакции в таблице Товар останутся товары с названиями:

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVELSERIALIZABLE                                      BEGIN TRANSACTION TRA1.SELECT * FROM Товар                          3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4                                ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATIONLEVEL REPEATABLE READ                  BEGIN TRANSACTION TRB                      2.SELECT * FROM Товар                                                      4.DELETE FROM Товар WHEREКод_Товара=4ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED                  BEGIN TRANSACTION TRA1.SELECT * FROM Товар                        3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4                              ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATION LEVEL REPEATABLE READ                  BEGIN TRANSACTION TRB                      2.DELETE FROM Товар WHERE Код_Товара=4                            4.SELECT * FROM Товар ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие заблокирует?

Перейти

В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?

Basa_user
Администратор UserA UserB
GRANT ALL TO UserA GRANT ALL TO UserB CREATE TABLE tab(id_t INT PRIMARY KEY, nam_t VARCHAR(20))  
INSERT INTO userA.tab values (1,’aa’) INSERT INTO tab values (2,’bb’) SELECT * FROM userA.tab
? ? ?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345 CREATE TABLE tab(id_t INT, nam_t CHAR(8))GRANT INSERT, SELECT ON tab TO UserAWITH GRANT OPTIONGRANT INSERT ON tab TO UserCREVOKE INSERT ON tabTO UserA CASCADE GRANT SELECT, INSERT ON tab TO UserB    
6 INSERT INTO tab(1,’aa’) INSERT INTO tab(2,’bb’) SELECT * FROM tab INSERT INTO tab(4,’bb’)
7 ? ? ? ?

Перейти

В базе данных basa_user зарегистрировано три пользователя UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345678 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember’role1′,’UserA’sp_addrolemember’role1’,’UserB’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserAWITH GRANT OPTIONREVOKE INSERT ON tab TO UserA CASCADE GRANT INSERT ON tab TO UserC    
9 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
10 ? ? ? ?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345 GRANT ALL TO UserA CREATE TABLE tab(id_t INT, nam_t CHAR(8))GRANT SELECT, INSERT ON tab TO UserBWITH GRANT OPTIONREVOKE INSERT ON tab TO UserB CASCADE GRANT SELECT ON UserA.tab TO UserC  
6 INSERT INTO UserA.tab values(1,’aa’) INSERT INTO UserA.tab values (2,’bb’) INSERT INTO UserA.tab values (3,’сс’) SELECT * FROM UserA.tab
7 ? ? ? ?

Перейти

Дан фрагмент сценария VBScript для выборки данных из таблицы Рейс, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject("ADODB.Connection")Set rst=Server.CreateObject("ADODB.Recordset")cn.open uid=user1;pwd=user1;driver={SQL Server}; server=its; database = basa_user1rst.open "SELECT Конечный_пункт, Дата_вылета, Продолжительность_маршрута FROM Рейс"do until rst.eof   response.write rst.fields(0)    response.write rst.fields(1)    response.write rst.fields(2)&"<br>"   rst.movenextloop

Указать правильные ответы.

Перейти

Дан фрагмент сценария VBScript для изменения данных в таблице Блюдо.

prm1=Server.CreateObject("ADODB.Parameter")prm2=Server.CreateObject("ADODB.Parameter")cmd.CommandText = "update Блюдо set Калорийность=? where Тип_блюда=?"cmd.CommandType = adCmdTextcmd.Prepared = TrueSet prm1 = сmd.CreateParameter("p1", adVarChar, adParamInput,8 ,'200')Set prm2 = сmd.CreateParameter("p2", adVarChar, adParamInput,20 ,'Десерт')cmd.Parameters.Append prm1cmd.Parameters.Append prm2cmd.Execute

Указать правильные ответы.

Перейти

Дан фрагмент Java-программы для изменения данных в таблице Рейс.

PreparedStatement mySt=Con.prepareStatement("update Рейс set Стоимость=?    where Конечный_пункт=?");mySt.setFloat (1, 1200.50);mySt.setString(2,'Москва');int res=mySt.executeUpdate();

Указать правильные ответы.

Перейти

Дан фрагмент Java-программы для удаления и выборки данных из таблицы Рейс, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection myCon= DriverManager.getConnection("jdbc:odbc:mystud","user1","user1");Statement mySt=myCon.createStatement();int res=mySt.executeUpdate("DELETE FROM Рейс   WHERE Дата_вылета=1.3.2004");ResultSet rs=mySt.executeQuery("SELECT Конечный_пункт, Дата_вылета,  Продолжительность_маршрута FROM Рейс ");while   {       String var1=rs.getString(1);       String var2=rs.getString(2);       int var3=rs.getInt(3);       rs.next();...}

Указать правильные ответы.

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRANSAVE TRANSACTION  p1 INSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'a',10)INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'b',20)INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'c',30)INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'd',40)INSERT Товар (Код_Товара, Название, остаток) VALUES (5, 'e',50)  SAVE TRANSACTION  p2  DELETE FROM Товар WHERE Код_Товара=4    SAVE TRANSACTION  p3    UPDATE Товар SET Название ='g' WHERE Код_Товара=2    SAVE TRANSACTION  p4      DELETE FROM Товар        WHERE Код_Товара<>1 AND Код_Товара<>4    ROLLBACK TRANSACTION p3    INSERT Товар (Код_Товара, Название, остаток) VALUES (6, 'f',70)    ROLLBACK TRANSACTION p2    DELETE FROM Товар WHERE Код_Товара=3COMMIT

После завершения транзакции в таблице Товар останутся товары с названиями:

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN AINSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'v',40)   BEGIN TRAN B    INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'n',50)   UPDATE Товар SET Название ='m' WHERE Код_Товара=1      BEGIN TRAN C       INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'm',60)ROLLBACK TRAN C INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'k',70)COMMIT

После завершения транзакции в таблице Товар останутся товары с названиями:

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVELREAD COMMITTED                                      BEGIN TRANSACTION TRA1.SELECT * FROM Товар                          3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=3                                  ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATION LEVELREAD UNCOMMITTED                  BEGIN TRANSACTION TRB                      2. INSERTТовар(Код_Товара,Название, остаток) VALUES (3,'SS',999)                                                              4.DELETE FROM Товар WHERE Код_Товара=3ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRANINSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'a',10)INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'b',20)SAVE TRANSACTION  p1 INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'c',30)INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'd',40)INSERT Товар (Код_Товара, Название, остаток) VALUES (5, 'e',50)  SAVE TRANSACTION  p2  DELETE FROM Товар WHERE Код_Товара=2    SAVE TRANSACTION  p3    DELETE FROM Товар WHERE Код_Товара=5    SAVE TRANSACTION  p4      DELETE FROM Товар WHERE Код_Товара<>1    ROLLBACK TRANSACTION p1    INSERT Товар (Код_Товара, Название, остаток) VALUES (6, 'f',70)COMMIT

После завершения транзакции в таблице Товар останутся записи о товарах с кодами:

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345 GRANT ALL TO UserA, UserB, UserC CREATE TABLE tab(id_t INT, nam_t CHAR(8))GRANT INSERT ON tab TO UserBWITH GRANT OPTIONREVOKE INSERT ON tab TO UserB CASCADE GRANT INSERT ON UserA.tab TO UserC  
6 INSERT INTO UserA.tab values(1,’aa’) INSERT INTO tab values (2,’bb’) SELECT * FROM UserA.tab INSERT INTO UserA.tab values (3,’cc’)
7 ? ? ? ?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345678 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember ‘role1’,’UserA’sp_addrolemember ‘role1’,’UserB’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserCWITH GRANT OPTIONDENY INSERT ON tab role1   GRANT INSERT ON tab TO UserA  
9 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
10 ? ? ? ?

Перейти

Дан фрагмент сценария VBScript для изменения данных в таблице Город.

prm1=Server.CreateObject("ADODB.Parameter")prm2=Server.CreateObject("ADODB.Parameter")cmd.CommandText = "update Город set Тариф=? where Название=?"cmd.CommandType = adCmdTextcmd.Prepared = TrueSet prm2 = сmd.CreateParameter("p1", adSingle, adParamInput,8 ,12.50)Set prm1 = сmd.CreateParameter("p2", adVarChar, adParamInput,20 ,'Самара')cmd.Parameters.Append prm2cmd.Parameters.Append prm1cmd.Execute

Указать правильные ответы.

Перейти

Дан фрагмент сценария VBScript для изменения и выборки данных из таблицы Автор, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject("ADODB.Connection")Set rst=Server.CreateObject("ADODB.Recordset")cn.open "pwd=user1;driver={SQL Server}; server=its; database = basa_user1"cn.execute "UPDATE Автор SET Телефон='23-45-67' WHERE Фамилия='Иванов'"rst.open "SELECT Фамилия, Телефон FROM Автор", cndo until rst.eof   response.write rst.fields(0)    response.write rst.fields(1)    response.write rst.fields(2)&"<br>"   rst.movenextloop

Указать правильные ответы.

Перейти

Даны таблицы

CREATE  TABLE   Рейс(Номер_рейса	INT,Конечный_пункт	VARCHAR(30),Дата_вылета	    DATETIME,Продолжительность_маршрута	INT,Число_билетов	INT,Стоимость	    MONEY)	
CREATE  TABLE   БИЛЕТ(Номер_места	CHAR(3),Номер_рейса	    INT,Дата_продажи	DATETIME,Стоимость	    MONEY,Фамилия_пассажира VARCHAR(20))

Определить список пассажиров, покупающих билеты на самые дальние рейсы.

Перейти

В базе данных basa1 имеется таблица Город. Содержащуюся в ней информацию необходимо прочитать из базы данных basa2. В какой базе данных должна быть создана процедура, и как можно ее выполнить?

Перейти

Даны таблицы

CREATE TABLE Город(Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY,Регион VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора INT ,Код_Города INT NOT NULL,Фамилия IVARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Перечислить фамилии людей, которые не говорили с абонентами из Москвы.

Перейти

Даны таблицы Рейс и Билет.

CREATE  TABLE Рейс (Номер_рейса  INT,Конечный_пункт VARCHAR(20),Дата_вылета        DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость                  MONEY)
CREATE  TABLE   Билет(Номер_места	INT,Номер_рейса             INT,Дата_продажи	DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(30))

Между ними необходимо установить связь «один-ко-многим» (один рейс — много мест) с учетом первичных ключей.

Перейти

Дано представление с вычислениями.

CREATE VIEW view2ASSELECT Номер_рейса, Конечный_пункт, Стоимость, Стоимость*0.05 AS НалогFROM РейсWHERE Рейс.Стоимость>100

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Стоимость = Стоимость *1.5WHERE Конечный_пункт=’Москва’ 

Результатом выполнения команды является следующее:

Перейти

Для определения числа рейсов в указанный город за определенный месяц разработана процедура, в которой заданы значения параметров по умолчанию:

CREATE PROC my_proc@c VARCHAR(20)=’Самара’,@m INT=4,@k INT=0 OUTPUTASSELECT @k=Count(Рейс.Номер_рейса) FROM РейсGROUP BY Рейс.Конечный_пункт, Month(Рейс.Дата_вылета)HAVING Рейс.Конечный_пункт=@c AND Month(Рейс.Дата_вылета)=@m

Укажите правильный вызов процедуры

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Запретить одновременное изменение только номеров начального и конечного событий.

CREATE TRIGGER  trig_updON Граф FOR UPDATE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица Рейс. Вывести в убывающем порядке список рейсов, вылетающих не позднее 1 апреля в Москву, Петербург или Самару, стоимость билета не более 1500 р.; в Саратов – не позднее 7 апреля, стоимость билета — от 500 до 800 р.

Перейти

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

CREATE FUNCTION user1.my_func1(@f VARCHAR(20))RETURNS FLOATASBEGIN  DECLARE @s FLOAT  SET @s=(SELECT Sum(Город.Тариф*Разговор.Продолжительность)      FROM Город INNER JOIN Разговор       ON Город.Код_Города = Разговор.Код_Города      GROUP BY Разговор.Фамилия      HAVING Разговор.Фамилия=@f)  RETURN (@s)END

Определите операторы правильного обращения к функции.

Перейти

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph(nomer INT PRIMARY KEY, --номер дуги outp   INT,            --номер вершины,                         --из которой дуга выходит     inp  INT)              --номер вершины,                         --в которую дуга входит 

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

CREATE TRIGGER  trigON graph FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дано представление.

CREATE VIEW view1ASSELECT Название, Цена, Цена*Количество AS СтоимостьFROM КнигаWHERE Издательство='Мир'

Предпринимается попытка изменить в представлении запись.

UPDATE view1 SET Цена=Цена*1.5WHERE Цена>50

Результатом выполнения команды является следующее:

Перейти

Даны таблицы Город и Разговор.

CREATE TABLE Город ( Код_Города INT ,   Название  VARCHAR(20) NOT NULL,   Тариф     MONEY)
CREATE TABLE Разговор(Код_Разговора     INT , Код_Города       INT NOT NULL, Фамилия          VARCHAR(20), Дата             DATETIME NOT NULL, Продолжительность INT NOT NULL)

Вывести список абонентов, которые говорили с Москвой в апреле.

Перейти

В базе данных basa1 имеется таблица Книга. Из базы данных basa2 необходимо выполнить действие по увеличению цены всех книг на 10%. В какой базе данных должна быть создана процедура и как можно ее выполнить?

Перейти

Назовите преимущества архитектуры «клиент-сервер»?

Перейти

Пусть номер страхового пенсионного свидетельства состоит из 11 цифр, разделенных знаками «-«, например: 063-840-013-82. Укажите правильный тип данных для его описания.

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Стоимость MONEY,Число_билетов INT)
CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса INT,Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Определить, кто из пассажиров потратил наибольшую сумму на покупку авиабилетов.

Перейти

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

CREATE TRIGGER  trig_insON Разговор FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Разработать триггер для удаления работы, причем необходимо отменить удаление, если только эта работа и никакая другая приводит к данному конечному событию.

CREATE TRIGGER  trig_delON Граф FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дан некоторый фрагмент SQL-кода:

DECLARE @a CHAR(12)DECLARE @b DATETIMEDECLARE @c INTSET @a=’12.2.04’SET @b=’3.04.04’

Укажите правильные операторы для вычисления количества дней между датами:

Перейти

Разработана функция, определяющая для указанного типа блюд среднюю стоимость.

CREATE FUNCTION user1.my_func1(@t VARCHAR(20))RETURNS FLOATASBEGIN  DECLARE @s FLOAT SET @s=(SELECT Avg(Компонент.Стоимость*Компонент.Вес)       FROM Блюдо INNER JOIN Компонент       ON Блюдо.Название_блюда = Компонент.Блюдо      GROUP BY Блюдо.Тип_блюда      HAVING Блюдо.Тип_блюда=@t)  RETURN (@s)END

Определите операторы правильного обращения к функции.

Перейти

Дано представление с данными из разных таблиц.

CREATE VIEW view3ASSELECT Город.Название, Разговор.Фамилия, Разговор.ПродолжительностьFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города;

Предпринимается попытка добавить в представление запись.

INSERT INTO view3(Название, Фамилия, Продолжительность)VALUES('Самара','Иванов',10)

Результатом выполнения команды является следующее:

Перейти

Даны таблицы Рейс и Билет.

CREATE  TABLE   Рейс(Номер_рейса  INT, Конечный_пункт  VARCHAR(30), Дата_вылета  DATETIME)
CREATE  TABLE   БИЛЕТ(Номер_места      CHAR(3), Номер_рейса      INT, Дата_продажи      DATETIME, Фамилия_пассажира  VARCHAR(30))

Определить номера мест и дату продажи билетов на рейсы до Москвы с датой вылета 1 мая 2004 года

Перейти

Дано представление.

CREATE VIEW view3ASSELECT Название, Тариф, Тариф*0.05 AS НалогFROM ГородWHERE Регион=’Поволжье’

Предпринимается попытка изменить в представлении запись.

UPDATE view3 SET Тариф=Тариф*1.5WHERE Тариф>10 

Результатом выполнения команды является следующее:

Перейти

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость INT )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Жиры INT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость_100_грамм FLOAT NOT NULL)

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

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость MONEY)
CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса CHAR(6),Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Рассчитать общую стоимость билетов для рейса, 5% налог с продаж и общий доход рейса.

Перейти

Даны таблицы Книга и Автор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором авторе из таблицы Автор. При этом необходимо запретить удаление, если упомянутый автор издавал свои книги в издательстве «Мир».

CREATE TRIGGER  trig_delON Автор FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Назовите отличительные черты реализации от стандарта языка.

Перейти

Для определения номера телефона (например, +74952539312) подойдет описание:

Перейти

Какое из следующих описаний типов является неправильным?

Перейти

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1ON PRIMARY ( NAME=b1, FILENAME=’D:userb1.mdf’,SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),(NAME=b2,  FILENAME=’D:userb2.mdf’, SIZE=10MB, MAXSIZE=500, FILEGROWTH=10%)LOG ON(NAME=l1, FILENAME=’E:userl1.ldf’, SIZE=50MB, MAXSIZE=10, FILEGROWTH=10)

Выберите правильный ответ.

Перейти

В таблицу Рейс необходимо добавить бортовой номер и увеличить длину поля Конечный_пункт.

Перейти

Создана таблица Рейс. Изменить тип поля Стоимость_билета на денежный и добавить поле Число_мест.

CREATE TABLE Рейс(Номер_рейса	INT NOT NULL, Конечный_пункт	VARCHAR(30),  Стоимость_билета INT)

Перейти

Пусть дана таблица Рейс с полями

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Число_билетов INT
Стоимость MONEY

Вывести список рейсов, продолжительность маршрутов которых не более 500 км и не менее 100 км, а стоимость билета — от 800 до 1500 руб.

Перейти

Пусть дана таблица Город.

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Вывести в алфавитном порядке список городов Поволжского региона, в коде которых встречается цифра 9.

Перейти

Пусть дана таблица Автор.

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Вывести в алфавитном порядке фамилии авторов из Самары, в телефонном номере которых на втором или третьем месте стоят цифры 5 или 8, а последними являются цифры 34.

Перейти

Дана таблица Рейс с полями

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Стоимость MONEY

Вывести информацию о рейсах до Москвы с датой вылета не позднее 8 марта, но не ранее 1 марта, со стоимостью билетов от 500 до 1000 руб.

Перейти

Даны таблицы

CREATE TABLE Город( Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY)
CREATE TABLE Разговор(Код_Разговора INT ,Код_Города INT NOT NULL,Фамилия VARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Определить фамилии людей, которые говорили с абонентами из Москвы.

Перейти

Даны таблицы

CREATE TABLE Город( Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY)
CREATE TABLE Разговор(Код_Разговора INT ,Код_Города INT NOT NULL,Фамилия IVARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Найти фамилии абонентов, ведущих телефонные переговоры как с Москвой, так и с Самарой.

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT)
CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса CHAR(6),Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Составить список пассажиров, которые летают в Москву, но не летают в Киев.

Перейти

Даны таблицы Город и Разговор.

CREATE TABLE Город ( Код_Города   INT,   Название    VARCHAR(20),   Тариф       MONEY,   Регион      VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора      INT , Код_Города          INT NOT NULL, Фамилия            VARCHAR(20), Дата               DATETIME, Продолжительность  INT NOT NULL)

Вывести список регионов, где средние тарифы на телефонные разговоры выше, чем в других регионах.

Перейти

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

Перейти

Пусть дана таблица Город с полями

Код_Города CHAR(5) NOT NULL
Название VARCHAR(20)
Регион VARCHAR(30)
Тариф MONEY NOT NULL

Укажите правильный оператор добавления записи.

Перейти

Пусть дана таблица Книга с полями:

Код_Книги INT
Название VARCHAR(50) NOT NULL
Цена MONEY
Тематика VARCHAR(50) NOT NULL
Издательство VARCHAR(50) NOT NULL
Код_Автора INT NOT NULL

Увеличить на 50% цену книг, вышедших в издательстве «АСТ».

Перейти

Увеличить на 10% стоимость билетов, проданных в день вылета рейса.

Перейти

Дано представление с данными из разных таблиц.

CREATE VIEW view3ASSELECT Билет.Номер_места, Билет.Номер_рейса, Рейс.Конечный_пунктFROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса

Предпринимается попытка добавить в представление запись.

INSERT INTO view3(Номер_места, Номер_рейса, Конечный_пункт)VALUES(12, 8978, 'Москва')

Результатом выполнения команды является следующее:

Перейти

Дано представление с группировкой.

CREATE VIEW view4ASSELECT Конечный_пункт, Sum(Число_билетов) AS Общ_Число_билетовFROM РейсGROUP BY Конечный_пунктHAVING Конечный_пункт=’Москва’

Предпринимается попытка удалить записи:

DELETE FROM view4WHERE Конечный_пункт=’Самара’

Перейти

Необходимо разработать функцию для получения списка книг издательства «Мир» и определить команду для ее вызова. Укажите правильный ответ.

Перейти

Определите команду для вызова функции, создаваемой следующей командой:

CREATE FUNCTION user1.my_func3(@r VARCHAR(20),@t FLOAT)RETURNS TABLEASRETURN (SELECT Название, Тариф        FROM Город        WHERE Регион=@r AND Тариф<=@t        ORDER BY Название)

Перейти

Необходимо разработать функцию для вывода списка пассажиров, купивших билеты в определенный день на некоторый рейс.Функция создается командой:

Перейти

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

CREATE PROC my_proc1@p FLOAT,@c VARCHAR(20)AS UPDATE Рейс SET Стоимость = Стоимость*(1+@p)WHERE Конечный_пункт=@c

Определите правильную команду для выполнения процедуры.

Перейти

Для определения общей калорийности блюд указанного типа, приготовленных заданным поваром, разработана процедура:

CREATE PROC my_proc2@t VARCHAR(20),@p VARCHAR(20),@k FLOAT OUTPUTASSELECT @k=Sum(Компонент.Калорийность*Компонент.Вес)FROM Блюдо INNER JOIN Компонент ON Блюдо.Название_блюда = Компонент.БлюдоGROUP BY Блюдо.Тип_блюда, Блюдо.ПоварHAVING Блюдо.Тип_блюда=@t AND Блюдо.Повар=@p

Укажите правильный вызов процедуры

Перейти

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

CREATE PROC my_proc3@r  VARCHAR(20)=’Нечерноземье’,@m  INT=2,@st FLOAT=5.0 OUTPUTASSELECT @st=Sum(Город.Тариф*Разговор.Продолжительность) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаGROUP BY Город.Регион, Month(Разговор.Дата)HAVING Город.Регион=@r AND Month(Разговор.Дата)=@m

Укажите правильный вызов процедуры

Перейти

Разработан курсор для вывода списка десертов.

DECLARE @b     VARCHAR(50),        @t     VARCHAR(50),                @k     INT,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Меню'DECLARE cursor1 CURSOR GLOBAL  FORWARD_ONLY DYNAMIC FOR    SELECT Название_блюда, Калорийность, Тип_блюда   FROM Блюдо   WHERE Тип_блюда="Десерт"OPEN cursor1SET @cur1=cursor1FETCH LAST  FROM cursor1 INTO  @t, @b, @kFETCH ABSOLUTE 2 FROM cursor1 INTO  @t, @b, @kFETCH RELATIVE -2 FROM cursor1 INTO  @t, @b, @k    SELECT @message='Блюдо '+@b+    '  Калорийность '+ CAST(@k AS VARCHAR(4))    PRINT @message    CLOSE cursor1DEALLOCATE cursor1

Какая из имеющихся в курсоре записей будет распечатана?

Перейти

Пусть в таблице Рейс представлены записи, значения поля Номер_рейса в которых равны 2, 4, 6, 8 ,9. Создан курсор для вывода списка рейсов до Москвы.

DECLARE @n     INT,        @k     VARCHAR(50),                @p     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Список рейсов'DECLARE cursor1 CURSOR GLOBAL SCROLL DYNAMIC FOR    SELECT Номер_рейса, Стоимость, Конечный_пункт   FROM Рейс   WHERE Конечный_пункт=’Москва’OPEN cursor1SET @cur1=cursor1FETCH ABSOLUTE 3  FROM cursor1 INTO  @n, @p, @k    UPDATE Рейс SET Стоимость=Стоимость*1.5    WHERE CURRENT OF cursor1FETCH RELATIVE -2 FROM cursor1 INTO  @n, @p, @k    DELETE Рейс     WHERE CURRENT OF cursor1    SELECT @message='Рейс '+CAST(@n AS VARCHAR(20))+            '  Стоимость  '+ CAST(@p AS VARCHAR(4))CLOSE cursor1DEALLOCATE cursor1

Какие действия выполнит система?

Перейти

Даны таблицы Книга и Автор. Создать триггер, обрабатывающий вставку одной записи в таблицу Книга. При этом в таблице Автор должен увеличиться общий тираж изданий соответствующего автора.

CREATE TRIGGER  trig_insON Книга FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица Разговор. Разработать триггер, который выполняется вместо изменения продолжительности одного разговора. Выполнить изменение продолжительности только в том случае, если общая продолжительность телефонных соединений абонента, в разговоре которого меняется продолжительность, не превышает 300 мин.

CREATE TRIGGER  trig_upd  ON Разговор INSTEAD OF UPDATE AS  

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица Билет. Разработать триггер, который выполняется вместо изменения стоимости одного билета. Изменение стоимости билета выполнить только в том случае, если этот рейс отправляется в Москву.

CREATE TRIGGER  trig_upd  ON Билет INSTEAD OF UPDATE AS  

Выберите операторы для продолжения текста триггера.

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Разработать триггер для вставки новой записи, причем, когда начальное событие не равно «1», необходимо отменить ввод, если конечное событие еще не было введено как начальное.

CREATE TRIGGER  trig_insON Граф FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph(nomer INT PRIMARY KEY, --номер дуги outp  INT,             --номер вершины,                        --из которой дуга выходит     inp   INT)             --номер вершины,                        --в которую дуга входит 

Создать триггер, обрабатывающий вставку одной записи и запрещающий ввод дуги, если в соответствующую вершину уже входят 3 дуги.

CREATE TRIGGER  trigON graph FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph(nomer INT PRIMARY KEY, --номер дуги outp   INT,            --номер вершины,                         --из которой дуга выходит     inp  INT)              --номер вершины,                         --в которую дуга входит 

Создать триггер, обрабатывающий удаление одной дуги, причем следует запретить удаление, если эта дуга единственная, связывающая некоторые вершины.

CREATE TRIGGER  trigON graph FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN AINSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'v',40)   BEGIN TRAN B    INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'n',50)      BEGIN TRAN C       INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'm',60)ROLLBACK TRAN B INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'k',70)COMMIT

После завершения транзакции в таблице Товар останутся товары с кодами:

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVEL READUNCOMMITTED                                      BEGIN TRANSACTION TRA1. INSERT Товар(Код_Товара,Название, остаток) VALUES (3,'SS',999)                            3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4                                  ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATIONLEVEL READCOMMITTED                  BEGIN TRANSACTION TRB                      2.SELECT * FROM Товар                                                      4.DELETE FROM Товар WHEREКод_Товара=3ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRANSAVE TRANSACTION  p1 INSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'a',10)INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'b',20)INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'c',30)INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'd',40)INSERT Товар (Код_Товара, Название, остаток) VALUES (5, 'e',50)  SAVE TRANSACTION  p2  DELETE FROM Товар WHERE Код_Товара=2    SAVE TRANSACTION  p3    DELETE FROM Товар WHERE Код_Товара=5    SAVE TRANSACTION  p4      DELETE FROM Товар       WHERE Код_Товара<2 OR Код_Товара>4    ROLLBACK TRANSACTION p3    INSERT Товар (Код_Товара, Название, остаток) VALUES (6, 'f',60)    SAVE TRANSACTION  p5    INSERT Товар (Код_Товара, Название, остаток) VALUES (7, 'g',70)    ROLLBACK TRANSACTION p2COMMIT

После завершения транзакции в таблице Товар останутся записи о товарах с кодами:

Перейти

В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?

Basa_user
Администратор UserA UserB
GRANT ALL TO UserB    CREATE TABLE tab(id_t INT PRIMARY KEY, nam_t VARCHAR(20))
INSERT INTO tab values (1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’)
? ? ?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
123456789 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember’role1’,’UserA’sp_addrolemember ‘role1’,’UserB’sp_addrolemember ‘role1’,’UserC’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserBWITH GRANT OPTIONREVOKE INSERT ON tab TO role1   GRANT INSERT ON tab TO UserC  
10 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
11 ? ? ? ?

Перейти

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

CREATE PROC my_proc2@c VARCHAR(20),@m INT,@k INT OUTPUTASSELECT @k=Count(Билет.Фамилия_пассажира)FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейсаGROUP BY Рейс.Конечный_пункт, Month(Рейс.Дата_вылета)HAVING Рейс.Конечный_пункт=@c AND Month(Рейс.Дата_вылета)=@m

Укажите правильный вызов процедуры

Перейти

Что представляют собой базы данных?

Перейти

Пусть дана таблица Рейс.

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Число_билетов INT
Стоимость MONEY

Определить в убывающем порядке стоимость билетов на рейсы, вылетающие в Москву, Петербург или Самару не позднее 1 апреля, а в Саратов – не позднее 7 апреля.

Перейти

В базе данных basa1 имеется таблица Блюдо. Из базы данных basa2 необходимо выполнить действие по увеличению стоимости всех блюд на 50%. В какой базе данных должна быть создана процедура и как можно ее выполнить?

Перейти

Дано представление с группировкой.

CREATE VIEW view4ASSELECT Издательство, Sum(Количество) AS Общ_КоличествоFROM КнигаGROUP BY ИздательствоHAVING Издательство="АСТ"

Предпринимается попытка удалить записи:

DELETE FROM view4WHERE Издательство='Мир'

Перейти

Дана таблица Билет с полями:

номер_места CHAR(3)
номер_рейса CHAR(6)
дата_продажи DATETIME
стоимость MONEY
фамилия_пассажира VARCHAR(20) NOT NULL

Укажите правильный оператор добавления записи.

Перейти

Даны таблицы

CREATE TABLE Автор(Код_Автора INT, Фамилия VARCHAR(50) NULL,Имя VARCHAR(50) NULL,Отчество VARCHAR(50) NULL,Пол VARCHAR(3) NOT NULL, Дата_рождения DATETIME, Телефон CHAR(9))
CREATE TABLE Книга(Код_Книги INT,Название VARCHAR(50) NOT NULL,Цена MONEY,Тематика VARCHAR(50) NOT NULL,Издательство VARCHAR(50) NOT NULL,Код_Автора INT NOT NULL)

Вывести список авторов, чьи книги выпускало издательство «Мир».

Перейти

Необходимо разработать функцию для вывода списка пассажиров, купивших билеты в определенный день на некоторый рейс. Определите команду для ее вызова.

Перейти

Дано представление с вычислениями.

CREATE VIEW view2ASSELECT Название, Регион,  Тариф, Тариф*0.05 AS НалогFROM ГородWHERE Город.Тариф>10

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Тариф=Тариф*1.5WHERE Регион=’Поволжье’

Результатом выполнения команды является следующее:

Перейти

Дана таблица Автор с полями

Фамилия VARCHAR(50)
Пол CHAR(1)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Найти города, в которых живут авторы, родившиеся позже 1 января 1982 года — мужчины, издавшие более 10 книг и имеющие телефон.

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Разработать триггер для удаления работы, причем при попытке удаления единственной работы, приводящей к данному конечному событию, отменить удаление, заменив в удаляемой работе начальное событие на исток (т.е. на начальное событие под номером 1).

CREATE TRIGGER  trig_delON Граф INSTEAD OF DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Пусть в таблице Блюдо есть поле Номер_блюда, и его значения равны 2, 4, 6 ,8 ,10. Создан курсор для вывода списка десертов

DECLARE @b     VARCHAR(50),        @t     VARCHAR(50),                @k     INT,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Меню'DECLARE cursor1 CURSOR LOCAL SCROLL STATIC FOR   SELECT Название_блюда, Калорийность, Номер_блюда   FROM Блюдо   WHERE Тип_блюда="Десерт"OPEN cursor1SET @cur1=cursor1FETCH LAST FROM cursor1 INTO  @t, @b, @kFETCH RELATIVE -3  FROM cursor1 INTO  @t, @b, @k    DELETE Блюдо     WHERE CURRENT OF @cur1 FETCH RELATIVE 2 FROM cursor1 INTO  @t, @b, @k    UPDATE Блюдо SET Калорийность=Калорийность*1.5    WHERE CURRENT OF cursor1    SELECT @message='Блюдо '+@b+'  Калорийность '+       CAST(@k AS VARCHAR(4))    PRINT @messageCLOSE cursor1DEALLOCATE cursor1

Какие действия выполнит система?

Перейти

Определите команду для вызова функции, создаваемой следующей командой:

			CREATE FUNCTION user1.my_func3(@b VARCHAR(20),@k INT)RETURNS TABLEASRETURN (SELECT Название_компонента,Калорийность        FROM Компонент        WHERE Калорийность<@k AND Блюдо=@b        ORDER BY Название_компонента)

Перейти

Даны таблицы Город и Разговор. Создать триггер, обрабатывающий изменение продолжительности одного телефонного разговора. При этом в таблице Город должна измениться величина общей продолжительности связи (всех разговоров) с соответствующим городом.

CREATE TRIGGER  trig_updON Разговор FOR UPDATE AS

Выберите операторы для продолжения текста триггера.

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1234 CREATE TABLE tab(id_t INT, nam_t CHAR(8))GRANT INSERT ON tab TO UserAWITH GRANT OPTION GRANT INSERT ON tab TO UserB    
5 INSERT INTO tab values (1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
6 ? ? ? ?

Перейти

Определите роль языка SQL в создании информационных систем.

Перейти

Какое из следующих чисел можно внести в поле, описанное как NUMERIC(5,1)?

Перейти

Дан некоторый фрагмент SQL-кода:

DECLARE @a CHAR(12)DECLARE @b DATETIMEDECLARE @c INTSET @b=’3.04.04’SET @c=6

Укажите правильные операторы для вычисления новой даты:

Перейти

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 %.

CREATE DATABASE basa1ON PRIMARY ( NAME=b1, FILENAME=’D:user’,SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),(NAME=b2,  FILENAME=’D:userb2’, SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%)LOG ON(NAME=l1, FILENAME=’E:user11’, SIZE=50MB, MAXSIZE=100, FILEGROWTH=10%)

Выберите правильный ответ.

Перейти

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

Перейти

В таблицу Город необходимо добавить сведения о регионе и изменить тип поля Код_Города на CHAR(5). Отметьте правильные ответы:

Перейти

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%; для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1ON PRIMARY ( NAME=b1, FILENAME=’D:user’,SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),(NAME=b2,  FILENAME=’D:user’, SIZE=100MB, MAXSIZE=200, FILEGROWTH=10%)LOG ON(NAME=l1, FILENAME=’E:userl1’, SIZE=50MB, MAXSIZE=100, FILEGROWTH=10)

Выберите правильный ответ.

Перейти

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость INT )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Жиры INT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость_100_грамм FLOAT NOT NULL)

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

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT)
CREATE TABLE БИЛЕТ(Номер_места INT,Номер_рейса INT,Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Вывести список рейсов, на которые не были проданы билеты.

Перейти

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT)
CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса CHAR(6),Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Составить список пассажиров, которые летают и в Москву, и в Киев.

Перейти

Даны таблицы

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)

Вывести список авторов, которые пишут романы, но не работают в жанре фантастики.

Перейти

Вывести список пассажиров, которые летали в апреле в Москву, но не летали в Киев в январе.

CREATE  TABLE   Рейс(Номер_рейса  INT, Конечный_пункт  VARCHAR(30), Дата_вылета  DATETIME)
CREATE  TABLE   БИЛЕТ(Номер_места      CHAR(3), Номер_рейса      CHAR(6), Дата_продажи      DATETIME, Фамилия_пассажира  VARCHAR(30))

Перейти

Даны таблицы

CREATE TABLE Город( Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY,Регион VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора INT ,Код_Города INT NOT NULL,Фамилия IVARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Определить тех абонентов, которые заплатили за телефонные разговоры больше, чем другие.

Перейти

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Тип_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость MONEY )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Вес FLOAT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость MONEY NOT NULL)

Определить поваров, которые готовят десерты чаще, чем другие.

Перейти

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

Перейти

Дано представление.

CREATE VIEW view1ASSELECT Номер_рейса, Стоимость, Дата_вылетаFROM РейсWHERE Конечный_пункт=’Москва’WITH CHECK OPTION

Предпринимается попытка выполнить команду вставки данных в представление.

INSERT INTO view1(Номер_рейса, Стоимость, Дата_вылета)VALUES (2367,1459.00,'12/09/03')

Результатом выполнения команды (при отсутствии каких-либо ограничений при создании таблицы) является следующее:

Перейти

Дано представление с вычислениями.

CREATE VIEW view2ASSELECT Название_блюда, Тип_блюда, Стоимость, Стоимость*0.05 AS НалогFROM БлюдоWHERE Стоимость>100

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Стоимость=Стоимость*1.5WHERE Тип_блюда='Десерт'

Результатом выполнения команды является следующее:

Перейти

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

Перейти

Определите команду для вызова функции, создаваемой следующей командой:

CREATE FUNCTION user1.my_func3 (@iz VARCHAR(20),@k INT)RETURNS TABLEASRETURN (SELECT Название        FROM Книга        WHERE Издательство=@iz AND количество>=@k        ORDER BY Название)

Перейти

Создана процедура для увеличения на заданный % стоимости блюд определенного типа.

CREATE PROC my_proc1@p FLOAT,@t VARCHAR(20)AS UPDATE Блюдо SET Стоимость = Стоимость*(1+@p)WHERE Тип_блюда=@t

Определите правильную команду для выполнения процедуры.

Перейти

В базе данных basa1 имеется таблица Рейс. Содержащуюся в ней информацию необходимо прочитать из базы данных basa2. В какой базе данных должна быть создана процедура, и как можно ее выполнить?

Перейти

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

DECLARE @n     VARCHAR(50),        @r     VARCHAR(50),                @t     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Тарифы Поволжья'DECLARE cursor1 CURSOR FOR   SELECT Название, Тариф, Регион   FROM Город   WHERE Регион="Поволжье"OPEN cursor1SET @cur1=cursor1FETCH NEXT FROM cursor1 INTO  @n, @t, @rWHILE @@FETCH_STATUS=0BEGIN	FETCH NEXT FROM cursor1 INTO  @n, @t, @r    SELECT @message='Город '+@n+    '  Тариф  '+ CAST(@t AS VARCHAR(4))    PRINT @messageENDCLOSE cursor1DEALLOCATE cursor1

Укажите правильные ответы.

Перейти

Разработана процедура, возвращающая список номеров рейсов до Москвы.

CREATE PROC my_proc@cur CURSOR VARYING OUTPUTASSET @cur=CURSOR FORWARD_ONLY STATIC FOR   SELECT Номер_рейса, Стоимость, Конечный_пункт   FROM Рейс   WHERE Конечный_пункт="Москва"OPEN @cur

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

DECLARE @my_cur CURSORDECLARE @n INTEXEC my_proc @cur=@my_cur OUTPUTWHILE (@@FETCH_STATUS=0)BEGIN  FETCH NEXT FROM @my_cur INTO @n  SELECT @nENDCLOSE @my_curDEALLOCATE @my_cur  

Укажите правильный ответ.

Перейти

Разработана процедура, возвращающая список книг некоторого автора.

CREATE PROC my_proc@av VARCHAR(20),@cur CURSOR VARYING OUTPUTASSET @cur=CURSOR FORWARD_ONLY STATIC FOR   SELECT Книга.Название, Книга.Издательство,           Книга.Цена   FROM Автор INNER JOIN Книга ON    Автор.Код_Автора = Книга.Код_Автора   WHERE Автор.Фамилия=@avOPEN @cur

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

DECLARE @my_cur CURSORDECLARE @n VARCHAR(20)EXEC my_proc 'Иванов',@cur=@my_cur OUTPUTFETCH NEXT FROM @my_cur INTO @nSELECT @nWHILE (@@FETCH_STATUS=0)BEGIN  FETCH NEXT FROM @my_cur INTO @n  SELECT @nENDCLOSE @my_curDEALLOCATE @my_cur  

Укажите правильные ответы.

Перейти

Дана таблица Книга. Разработать триггер, который выполняется вместо изменения цены одной книги в этой таблице. Изменение цены выполнить только в том случае, если количество экземпляров данной книги превышает 100.

CREATE TRIGGER  trig_upd  ON Книга INSTEAD OF UPDATE AS  

Выберите операторы для продолжения текста триггера.

DECLARE @kod INT,   @k   INT,   @p   MONEY SELECT @kod=Код_Книги, @k=количество, @p=ценаFROM insertedIF @k>100   UPDATE Книга SET цена=@p   WHERE Код_Книги=@kod

Перейти

Даны таблицы Город и Разговор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором городе из таблицы Город. При этом в таблице Разговор необходимо также удалить записи обо всех телефонных разговорах с удаленным городом.

CREATE TRIGGER  trig_delON Город FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Если изменяется только номер начального события и это изменение приводит к появлению параллельной работы, отменить изменение.

CREATE TRIGGER  trig_updON Граф FOR UPDATE AS

Выберите операторы для продолжения текста триггера.

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVELREPEATABLE READ                                      BEGIN TRANSACTION TRA1.SELECT * FROM Товар                          3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4                                ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATIONLEVEL READ UNCOMMITTED                  BEGIN TRANSACTION TRB                      2.SELECT * FROM Товар                                                      4.SELECT * FROM ТоварROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345678910 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember ‘role1’,’UserA’sp_addrolemember ‘role1’,’UserB’sp_addrolemember ‘role1’,’UserC’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserAWITH GRANT OPTIONDENY INSERT ON tab TO UserA GRANT INSERT ON tab TO UserB WITH GRANT OPTION GRANT INSERT ON tab TO UserC WITH GRANT OPTION  
11 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
12 ? ? ? ?

Перейти

Даны таблицы Рейс и Билет. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление записи о некотором рейсе из таблицы Рейс. При этом в таблице Билет необходимо его номер заменить на номер запасного рейса 111 для билетов, проданных на удаленный рейс.

CREATE TRIGGER  trig_delON Рейс FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Пусть дана таблица Блюдо.

Название_блюда VARCHAR(20)
Тип_блюда VARCHAR(20)
Время_приготовления DATETIME
Калорийность INT
Повар VARCHAR(20)
Стоимость MONEY

Вывести в алфавитном порядке фамилии поваров, блюда которых относятся к десерту или выпечке, стоимость не превышает 50 руб., а калорийность не больше 300 ккал.

Перейти

Разработан курсор для вывода списка рейсов до Москвы.

DECLARE @n     INT,        @k     VARCHAR(50),                @p     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Список рейсов'DECLARE cursor1 CURSOR FOR   SELECT Номер_рейса, Стоимость, Конечный_пункт   FROM Рейс   WHERE Конечный_пункт="Москва"OPEN cursor1SET @cur1=cursor1FETCH NEXT FROM cursor1 INTO  @p, @n, @kWHILE @@FETCH_STATUS=0BEGIN    SELECT @message='Рейс '+    CAST(@n AS VARCHAR(20))+    '  Стоимость  '+ CAST(@p AS VARCHAR(4))    PRINT @message    FETCH NEXT FROM cursor1 INTO @p, @n, @kENDDEALLOCATE cursor1CLOSE cursor1

Укажите правильные ответы.

Перейти

Разработана процедура, возвращающая список книг издательства «Мир».

CREATE PROC my_proc@cur CURSOR VARYING OUTPUTASSET @cur=CURSOR FORWARD_ONLY STATIC FOR   SELECT Название, Издательство, Цена   FROM Книга   WHERE Издательство="Мир"OPEN @cur

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

DECLARE @my_cur CURSORDECLARE @n VARCHAR(20)EXEC my_proc @cur=@my_cur OUTPUTFETCH NEXT FROM @my_cur INTO @nSELECT @nWHILE (@@FETCH_STATUS=0)BEGIN  FETCH NEXT FROM @my_cur INTO @n  SELECT @nENDCLOSE @my_curDEALLOCATE @my_cur  

Укажите правильные ответы.

Перейти

Какие связи между объектами моделируются в реляционных базах данных?

Перейти

Пусть дана таблица Блюдо.

Название_блюда VARCHAR(20)
Время_приготовления DATETIME
Калорийность INT
Повар VARCHAR(20)
Стоимость MONEY

Определить список блюд, приготовленных поваром Ивановым менее чем за 3 мин или более чем за 20 мин.

Перейти

Для определения общей стоимости разговоров в заданном регионе за конкретный месяц разработана процедура:

CREATE PROC my_proc2@r  VARCHAR(20),@m  INT,@st FLOAT OUTPUTASSELECT @st=Sum(Город.Тариф*Разговор.Продолжительность) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаGROUP BY Город.Регион, Month(Разговор.Дата)HAVING Город.Регион=@r AND Month(Разговор.Дата)=@m

Укажите правильный вызов процедуры

Перейти

Даны таблицы Город и Разговор.

CREATE TABLE Город (Код_Города CHAR(5), Название  VARCHAR(20) NOT NULL UNIQUE,   Тариф     MONEY)
CREATE TABLE Разговор(Дата              DATETIME NOT NULL, ВремяСуток        VARCHAR(5),  Продолжительность INT NOT NULL)

Между ними необходимо установить связь «один-ко-многим» (один город — много разговоров) с учетом первичных ключей.

Перейти

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

CREATE FUNCTION user1.my_func1(@s VARCHAR(20))RETURNS INTASBEGIN  DECLARE @k INT  SET @k=(SELECT Count(Билет.Фамилия_пассажира)       FROM Билет INNER JOIN Рейс       ON Билет.Номер_рейса = Рейс.Номер_рейса      GROUP BY Рейс.Конечный_пункт      HAVING Рейс.Конечный_пункт=@s)  RETURN (@k)END

Определите операторы правильного обращения к функции.

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
123456789 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember ‘role1’,’UserA’sp_addrolemember ‘role1’,’UserB’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserAWITH GRANT OPTIONREVOKE INSERT ON tab TO UserB GRANT INSERT ON tab TO UserC    
10 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
11 ? ? ? ?

Перейти

Пусть идентификационный номер налогоплательщика (ИНН) состоит из 12 цифр, например: 872573021145. Укажите правильные определения. 

Перейти

Пусть дана таблица Город с полями

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Найти регионы, стоимость минуты телефонного разговора с которыми не меньше 10 руб., но не больше 100 руб.

Перейти

Дана таблица Книга. Разработать триггер, который выполняется вместо изменения цены одной книги в этой таблице. Изменение цены выполнить только в том случае, если книга издается в издательстве ‘Мир’.

CREATE TRIGGER  trig_upd  ON Книга INSTEAD OF UPDATE AS  

Выберите операторы для продолжения текста триггера.

Перейти

Дан фрагмент Java-программы для изменения данных в таблице Автор.

PreparedStatement mySt=Con.prepareStatement("update Автор set Телефон=? where Фамилия=?");mySt.setString(0, "12-23-34");mySt.setInt(1,"Иванов");int res=mySt.executeUpdate();

Указать правильные ответы.

Перейти

Необходимо разработать функцию для получения списка компонент с калорийностью более 300 ккал. Определите команду для ее вызова. Укажите правильный ответ.

Перейти

Даны таблицы

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)

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

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Разработать триггер для вставки новой записи, причем необходимо отменить ввод параллельной работы.

CREATE TRIGGER  trig_insON Граф FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

На какое представление данных ориентирован язык SQL?

Перейти

Определите роль клиента в двухуровневой архитектуре «клиент-сервер».

Перейти

Какое из следующих чисел можно внести в поле, описанное как DECIMAL(6,3)?

Перейти

Пусть дана таблица Город.

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Найти города Поволжья или Урала, телефонные тарифы для которых выше 5 руб.

Перейти

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость INT )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Жиры INT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость_100_грамм FLOAT NOT NULL)

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

Перейти

Даны таблицы

CREATE TABLE Город(Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY,Регион VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора INT,Код_Города INT NOT NULL,Фамилия VARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Определить среднюю стоимость разговоров в каждом регионе.

Перейти

Даны две таблицы. Определить в них первичные ключи.

CREATE  TABLE Рейс (Номер_рейса  INT,Конечный_пункт  VARCHAR(20),Дата_вылета  DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость   MONEY)
CREATE  TABLE  Билет(Номер_места	INT,Номер_рейса   INT,Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(30))

Перейти

Дано представление.

CREATE VIEW view1ASSELECT Код_Города, Название, ТарифFROM ГородWHERE Регион=’Поволжье’WITH CHECK OPTION

Предпринимается попытка выполнить команду вставки данных в представление.

INSERT INTO view1(Код_Города, Название, Тариф)VALUES (842,'Симбирск',2.70)

Результатом выполнения команды (при отсутствии каких-либо ограничений при создании таблицы) является следующее:

Перейти

Дано представление с группировкой.

CREATE VIEW view4ASSELECT Повар, Sum(Стоимость) AS Общ_СтоимостьFROM БлюдоGROUP BY ПоварHAVING Повар="Иванов"

Предпринимается попытка удалить записи:

DELETE FROM view4WHERE Повар=’Петров’

Перейти

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

Перейти

Даны таблицы Рейс и Билет. Создать триггер, обрабатывающий вставку одной записи в таблицу Билет. При этом в таблице Рейс должно уменьшиться число свободных мест для соответствующего рейса.

CREATE TRIGGER  trig_insON Билет FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

Даны таблицы

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,Количество INT)

Определить авторов, у каждого из которых было продано более 1000 экземпляров книг.

Перейти

Дано представление.

CREATE VIEW view4ASSELECT Книга.Название, Книга.Издательство, Автор.ФамилияFROM Автор INNER JOIN Книга ON Автор.Код_Автора = Книга.Код_Автора

Предпринимается попытка удалить из представления запись.

DELETE FROM  view4WHERE Фамилия='Л.Толстой'

Результатом выполнения команды является следующее:

Перейти

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

Перейти

В таблицу Блюдо необходимо добавить сведения о содержании жиров в блюде (в %) и заменить тип поля Время_приготовления на вещественный.

Перейти

В каком количестве и на какую сумму издавал свои книги автор Борисов в каждом издательстве?

Перейти

Увеличить на 50% цену книг, издаваемых самым большим тиражом.

Перейти

Даны таблицы Город и Разговор.

CREATE TABLE Город(Код_Города CHAR(5),Название VARCHAR(20) NOT NULL UNIQUE,Тариф MONEY)
CREATE TABLE Разговор(Дата DATETIME NOT NULL,ВремяСуток VARCHAR(5),Продолжительность INT NOT NULL)

В таблице Разговор значения поля ВремяСуток ограничить значениями из заданного списка: день, вечер, ночь, утро.

Перейти

Дано представление.

CREATE VIEW view1ASSELECT Фамилия, Телефон, Дата_рожденияFROM АвторWHERE Город=’Москва’WITH CHECK OPTION

Предпринимается попытка выполнить команду вставки данных в представление.

INSERT INTO view1(Фамилия, Телефон, Дата_рождения)VALUES ('Сидоров','32-34-45','12/09/78')

Результатом выполнения команды (при отсутствии каких-либо ограничений при создании таблицы) является следующее:

Перейти

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

Перейти

Необходимо разработать функцию для получения списка книг заданной тематики, изданных тиражом менее указанного числа. Функция создается командой:

Перейти

Создана процедура для увеличения на заданный % телефонных тарифов для городов определенного региона.

CREATE PROC my_proc1@p FLOAT,@r VARCHAR(20)AS UPDATE Город SET Тариф = Тариф*(1+@p)WHERE Регион=@r

Определите правильную команду для выполнения процедуры.

Перейти

Даны таблицы Рейс и Билет. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление записи о некотором рейсе из таблицы Рейс. При этом из таблицы Билет необходимо удалить записи обо всех билетах, проданных на этот рейс.

CREATE TRIGGER  trig_delON Рейс FOR DELETE AS

Выберите операторы для продолжения текста триггера.

Перейти

Дана таблица Билет. Разработать триггер, который выполняется вместо изменения стоимости одного билета. Изменение стоимости билета выполнить только в том случае, если на этот рейс продано не менее 20 билетов.

CREATE TRIGGER  trig_upd  ON Билет INSTEAD OF UPDATE AS  

Выберите операторы для продолжения текста триггера.

Перейти

Дан фрагмент сценария VBScript для изменения данных в таблице Автор.

prm1=Server.CreateObject("ADODB.Parameter")prm2=Server.CreateObject("ADODB.Parameter")cmd.CommandText = "update Автор set Телефон=? where Фамилия=?"cmd.CommandType = adCmdTextcmd.Prepared = TrueSet prm1 = сmd.CreateParameter("p1", adVarChar, adParamInput,8 ,'12-34-56')Set prm2 = сmd.CreateParameter("p2", adVarChar, adParamInput,20 ,'Иванов')cmd.Parameters.Append prm1cmd.Parameters.Append prm2cmd.Execute

Указать правильные ответы.

Перейти

Какие из следующих строк можно внести в поле, описанное как VARCHAR(10)?

Перейти

Найти абонентов, которые звонят в Москву, но ни разу не звонили в Самару в мае.

CREATE TABLE Город ( Код_Города INT ,   Название  VARCHAR(20) NOT NULL,   Тариф     MONEY)
CREATE TABLE Разговор(Код_Разговора     INT , Код_Города       INT NOT NULL, Фамилия          VARCHAR(20), Дата             DATETIME NOT NULL, Продолжительность INT NOT NULL)

Перейти

Даны таблицы Город и Разговор.

CREATE TABLE Город ( Код_Города INT ,   Название  VARCHAR(20) NOT NULL,   Тариф     MONEY,   Регион    VARCHAR(20))
CREATE TABLE Разговор(Код_Разговора     INT , Код_Города         INT NOT NULL, Фамилия           VARCHAR(20), Дата              DATETIME NOT NULL, Продолжительность INT NOT NULL)

Рассчитать стоимость каждого телефонного разговора с Москвой.

Перейти

Пусть дана таблица Город с полями

Код_Города CHAR(5) NOT NULL
Название VARCHAR(20)
Регион VARCHAR(30)
Тариф MONEY NOT NULL

Увеличить телефонный тариф на 15% для городов Поволжья и Нечерноземья.

Перейти

Разработана процедура, возвращающая тарифы городов указанного региона.

CREATE PROC my_proc@r VARCHAR(20),@cur CURSOR VARYING OUTPUTASSET @cur=CURSOR FORWARD_ONLY STATIC FOR   SELECT Название, Тариф, Регион   FROM Город   WHERE Регион=@rOPEN @cur

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

DECLARE @my_cur CURSORDECLARE @n VARCHAR(20)EXEC my_proc @cur=@my_cur OUTPUT, ‘Поволжье’  FETCH NEXT FROM @my_cur INTO @n  SELECT @nWHILE (@@FETCH_STATUS=0)BEGIN  FETCH NEXT FROM @my_cur INTO @n  SELECT @nENDCLOSE @my_curDEALLOCATE @my_cur  

Укажите правильные ответы.

Перейти

Дан фрагмент Java-программы для изменения данных в таблице Блюдо.

PreparedStatement mySt=Con.prepareStatement("update Блюдо set Калорийность=?   where Тип_блюда=?");mySt.setString(1,’Десерт’);mySt.setString(2, ’200’);int res=mySt.executeUpdate();

Указать правильные ответы.

Перейти

Даны таблицы

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)

Удалить сведения об авторах, чьи произведения не издаются.

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345678 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’ sp_addrolemember ‘role1’,’UserA’sp_addrolemember ‘role1’,’UserB’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserAREVOKE INSERT ON tab TO role1 GRANT INSERT ON tab TO UserC    
9 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
10 ? ? ? ?

Перейти

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRANSAVE TRANSACTION  p1 INSERT Товар (Код_Товара, Название, остаток) VALUES (1, 'a',10)INSERT Товар (Код_Товара, Название, остаток) VALUES (2, 'b',20)INSERT Товар (Код_Товара, Название, остаток) VALUES (3, 'c',30)INSERT Товар (Код_Товара, Название, остаток) VALUES (4, 'd',40)INSERT Товар (Код_Товара, Название, остаток) VALUES (5, 'e',50)  SAVE TRANSACTION  p2  DELETE FROM Товар WHERE Код_Товара=2    SAVE TRANSACTION  p3    DELETE FROM Товар WHERE Код_Товара=5    SAVE TRANSACTION  p4      DELETE FROM Товар WHERE Код_Товара<>1    ROLLBACK TRANSACTION p3    INSERT Товар (Код_Товара, Название, остаток)     VALUES (6, 'f',70)COMMIT

После завершения транзакции в таблице Товар останутся товары с кодами

Перейти

Какие из следующих строк можно внести в поле, описанное как VARCHAR(6), чтобы данные хранились без потерь?

Перейти

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1ON PRIMARY ( NAME=b1, FILENAME=’D:userb1.mdf’,SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),(NAME=b2,  FILENAME=’D:userb2.mdf’, SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%)LOG ON(NAME=l1, FILENAME=’E:userl1.ldf’, SIZE=50MB, MAXSIZE=100, FILEGROWTH=10)

Выберите правильный ответ.

Перейти

Создана таблица Город. Добавить поле Регион и изменить тип данных поля Тариф на денежный.

  CREATE TABLE Город (Код_Города  CHAR(3),  Название   VARCHAR(20),    Тариф      INT,  ЧасПояс    INT)

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Разработать триггер для вставки новой записи, причем необходимо отменить ввод, если номер конечного события оказался меньше номера начального события.

CREATE TRIGGER  trig_insON Граф FOR INSERT AS

Выберите операторы для продолжения текста триггера.

Перейти

В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?

Basa_user
Администратор UserA UserB
GRANT ALL TO UserAGRANT SELECT ON UserA.tab TO UserB CREATE TABLE tab(id_t INT PRIMARY KEY, nam_t VARCHAR(20))  
INSERT INTO tab values (1,’aa’) INSERT INTO tab values (2,’bb’) SELECT * FROM UserA.tab
? ? ?

Перейти

Дана таблица Город. Вывести в алфавитном порядке список городов Поволжского региона, в коде которых встречается цифра 9, а в названии города на втором месте стоит буква «д» или «ж».

Перейти

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

CREATE TRIGGER  trig_updON Билет FOR UPDATE AS

Выберите операторы для продолжения текста триггера.

Перейти

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

DECLARE @n     VARCHAR(50),        @r     VARCHAR(50),                @t     MONEY,        @message VARCHAR(80)DECLARE @cur1 CURSORPRINT '  Тарифы Поволжья'DECLARE cursor1 CURSOR LOCAL SCROLL FOR    SELECT Название, Тариф, Регион   FROM Город   WHERE Регион='Поволжье'OPEN cursor1SET @cur1=cursor1FETCH NEXT  FROM cursor1 INTO  @n, @t, @rFETCH RELATIVE 3 FROM cursor1 INTO  @n, @t, @rFETCH RELATIVE -2 FROM cursor1 INTO  @n, @t, @r    SELECT @message='Город '+@n+    '  Тариф  '+ CAST(@t AS VARCHAR(4))    PRINT @message    CLOSE cursor1DEALLOCATE cursor1

Какая из имеющихся в курсоре записей будет распечатана?

Перейти

Какие функции перешли к среднему уровню обработки данных в трехуровневой архитектуре «клиент-сервер»?

Перейти

Какие из следующих описаний типов являются неправильными?

Перейти

Какие из следующих описаний типов являются правильными?

Перейти

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость INT )
CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Жиры INT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость_100_грамм FLOAT NOT NULL)

Сформировать список поваров, которые используют масло, но обходятся без молока.

Перейти

Необходимо разработать функцию для получения списка городов указанного региона, телефонные тарифы которых не превосходят заданную цифру. Функция создается командой:

Перейти

Дан фрагмент Java-программы для выборки данных из таблицы Рейс, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection myCon= DriverManager.getConnection("jdbc:odbc:mystud","user1","user1");Statement mySt=myCon.createStatement();ResultSet rs=mySt.executeQuery("SELECT Конечный_пункт, Дата_вылета,   Продолжительность_маршрута FROM Рейс ");while   {       String var1=rs.getString(1);       String var2=rs.getString(2);       int var3=rs.getInt(3);       rs.next();...}

Указать правильные ответы.

Перейти

Пусть дана таблица Автор с полями

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME NOT NULL
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Удалить информацию об авторах, не имеющих телефона (в этом случае это поле Null).

Перейти

Даны таблицы Рейс и Билет.

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(20),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость MONEY)
CREATE TABLE Билет(Номер_места INT,Номер_рейса INT,Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(30))

Для полей Дата_продажи таблицы Билет и Дата_вылета таблицы Рейс создать и применить умолчание для ввода текущей даты.

Перейти

Дано представление с данными из разных таблиц.

CREATE VIEW view3ASSELECT Блюдо.Название_блюда, Компонент.Название_компонента, Компонент.ВесFROM Блюдо INNER JOIN Компонент ON Блюдо.Название_блюда = Компонент.Блюдо;

Предпринимается попытка добавить в представление запись.

INSERT INTO view3(Название_блюда, Название_компонента, Вес)VALUES('Щи','Капуста',0.350)

Результатом выполнения команды является следующее:

Перейти

Для определения общей стоимости разговоров некоторого абонента за определенный месяц разработана процедура, в которой указаны значения параметров по умолчанию:

CREATE PROC my_proc@f  VARCHAR(20)=’Иванов’,@m  INT=2,@st FLOAT=5.0 OUTPUTASSELECT @st=Sum(Город.Тариф*Разговор.Продолжительность) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города, Разговор.ФамилияGROUP BY Город.Регион, Month(Разговор.Дата)HAVING Разговор.Фамилия=@f AND Month(Разговор.Дата)=@m

Укажите правильный вызов процедуры

Перейти

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф(номер   INT PRIMARY KEY, --номер работы нач_соб INT,             --начальное событие кон_соб INT,             --конечное событие длит    INT)             --длительность работы

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

Номер Нач_соб Кон_соб Длит
12345678910
1113432556
2434556677
51236285472

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1». Разработать триггер для удаления работы, причем при попытке удаления единственной работы, выходящей из данного начального события, отменить удаление, заменив в удаляемой работе конечное событие на сток (т.е. на конечное событие с максимальным номером).

CREATE TRIGGER  trig_delON Граф INSTEAD OF DELETEAS

Выберите операторы для продолжения текста триггера.

Перейти

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
12345678 CREATE TABLE tab(id_t INT, nam_t CHAR(8))sp_addrole ‘role1’sp_addrolemember’role1’,’UserA’sp_addrolemember ‘role1’,’UserB’GRANT INSERT ON tab TO role1 GRANT INSERT ON tab TO UserAWITH GRANT OPTIONREVOKE INSERT ON tab TO role1 GRANT INSERT ON tab TO UserC    
9 INSERT INTO tab values(1,’aa’) INSERT INTO tab values (2,’bb’) INSERT INTO tab values (3,’cc’) INSERT INTO tab values (4,’dd’)
10 ? ? ? ?

Перейти

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_userSET TRANSACTION ISOLATION LEVEL READUNCOMMITTEDBEGIN TRANSACTION TRA1.SELECT * FROM Товар3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4ROLLBACK TRANSACTION TRA
USE basa_userSET TRANSACTION ISOLATIONLEVEL REPEATABLE READBEGIN TRANSACTION TRB2.SELECT * FROM Товар4.SELECT * FROM ТоварROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

Перейти

Для определения общей калорийности блюд установленного типа, приготовленных заданным поваром, разработана процедура:

CREATE PROC my_proc3@t varchar(50),@p varchar(50),@k FLOAT =10.0 OUTPUTASSELECT @k=Sum(Компонент.Калорийность*Компонент.Вес)FROM Блюдо INNER JOIN Компонент ON Блюдо.Название_блюда = Компонент.БлюдоGROUP BY Блюдо.Тип_блюда, Блюдо.ПоварHAVING Блюдо.Тип_блюда=@t AND Блюдо.Повар=@p

Укажите правильный вызов процедуры

Перейти

Правильные ответы выделены зелёным цветом.
Все ответы: Развернутое введение в SQL на основе стандарта SQL:1999. Обсуждаются типы данных, допускаемые в SQL; средства определения объектов базы данных; манипулирование данными; управление соединениями, сессиями и транзакциями; обеспечение безопасности; динамический и встроенный SQL.

Что представляют собой базы данных?

(1) аппаратные средства для хранения данных

(2) набор логически связанных данных

(3) программные средства управления данными

(4) компьютер с хранящимися на нем данными

Дано представление.

CREATE VIEW view1
AS
SELECT Фамилия, Телефон, Дата_рождения
FROM Автор
WHERE Город=’Москва’
WITH CHECK OPTION

Предпринимается попытка выполнить команду вставки данных в представление.

INSERT INTO view1(Фамилия, Телефон, Дата_рождения)
VALUES (‘Сидоров’,’32-34-45′,’12/09/78′)

Результатом выполнения команды (при отсутствии каких-либо ограничений при создании таблицы) является следующее:

(1) в таблицу Автор будет добавлена запись

Фамилия Телефон Дата_рождения Город
Сидоров 32-34-45 12/09/78 Москва

(2) в таблицу Автор будет добавлена запись

Фамилия Телефон Дата_рождения Город
Сидоров 32-34-45 12/09/78 NULL

(3) данные в представление view1 будут успешно добавлены

(4) команда не будет выполнена

Разработана функция, определяющая по фамилии автора общий тираж книг.

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=’Иванов’

Создана процедура для увеличения на заданный % цены книг заданного издательства.

CREATE PROC my_proc1
@p FLOAT,
@iz VARCHAR(20)
AS
UPDATE Книга SET Цена =Цена*(1+@p)
WHERE Издательство=@iz

Определите правильную команду для выполнения процедуры.

(1)

EXEC my_proc1 0.2,’АСТ’

(2)

EXEC my_proc1 @p=0.2,’АСТ’

(3)

EXEC my_proc1 @издат=’АСТ’, 0.2

(4)

EXEC my_proc1 @iz=’АСТ’, @p=0.25

Разработан курсор для создания списка книг, вышедших в издательстве «Мир».

DECLARE @n VARCHAR(50),
@iz VARCHAR(50),
@p MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ‘ Список книг’
DECLARE cursor1 CURSOR FOR
SELECT Название, Издательство, Цена
FROM Книга
WHERE Издательство=»Мир»

OPEN cursor1
SET @cur1=cursor1
FETCH NEXT FROM cursor1 INTO @n, @iz, @p
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @message=’Книга ‘+@n+’
Цена ‘+ CAST(@p AS VARCHAR(4))
PRINT @message
— переход к следующему клиенту—
FETCH NEXT FROM cursor1 INTO @n, @iz,@p
END
CLOSE cursor1
DEALLOCATE cursor1

Укажите правильные ответы.

(1) курсор написан без ошибок

(2) в операторе FETCH порядок следования переменных не соответствует полям оператора SELECT в объявлении курсора

(3) освобождение ресурсов производится до закрытия курсора, что недопустимо

(4) переприсваивание открытого курсора (оператор SET) недопустимо

Даны таблицы Книга и Автор. Создать триггер, обрабатывающий вставку одной записи в таблицу Книга. При этом в таблице Автор должен увеличиться общий тираж изданий соответствующего автора.

CREATE TRIGGER trig_ins
ON Книга FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @av INT,
      @k INT
SELECT @av=Код_Автора, @k=количество
FROM inserted
UPDATE Автор SET тираж=тираж+@k
WHERE Код_Автора=@av

(2)

UPDATE Автор
SET тираж=тираж+inserted.количество
WHERE Код_Автора=inserted.Код_АВтора

(3)

UPDATE Автор
SET тираж=тираж+(SELECT количество
      FROM inserted)
WHERE Автор.Код_Автора=inserted.Код_Автора

(4)

UPDATE Автор
SET тираж=тираж+(SELECT количество
      FROM inserted
   WHERE Автор.Код_Автора=inserted.Код_Автора)

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, —номер работы
нач_соб INT, —начальное событие
кон_соб INT, —конечное событие
длит INT) —длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1».
Разработать триггер для вставки новой записи, причем, когда начальное событие не равно «1», необходимо отменить ввод, если конечное событие еще не было введено как начальное.

CREATE TRIGGER trig_ins
ON Граф FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

IF NOT EXISTS(
SELECT * FROM inserted WHERE нач_соб=1)
IF NOT EXISTS(SELECT * FROM Граф
      WHERE кон_соб=ALL(
SELECT нач_соб FROM inserted))
ROLLBACK TRAN

(2)

IF NOT EXISTS(
SELECT * FROM inserted WHERE нач_соб=1) AND
   NOT EXISTS(SELECT * FROM Граф
      WHERE кон_соб=ALL(
SELECT нач_соб FROM inserted))
ROLLBACK TRAN

(3)

IF NOT EXISTS(
SELECT * FROM inserted WHERE нач_соб=1))
IF NOT EXISTS(SELECT * FROM Граф
      WHERE кон_соб=(
SELECT нач_соб FROM inserted)
ROLLBACK TRAN

(4)

IF NOT EXISTS(
SELECT * FROM inserted WHERE нач_соб=1) AND
   NOT EXISTS(SELECT * FROM Граф
WHERE кон_соб= inserted.нач_соб)
ROLLBACK TRAN

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN
SAVE TRANSACTION p1
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, ‘a’,10)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, ‘b’,20)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, ‘c’,30)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, ‘d’,40)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (5, ‘e’,50)

SAVE TRANSACTION p2
DELETE FROM Товар WHERE Код_Товара=2
SAVE TRANSACTION p3
DELETE FROM Товар WHERE Код_Товара=5
SAVE TRANSACTION p4
DELETE FROM Товар WHERE Код_Товара<>1
ROLLBACK TRANSACTION p3
INSERT Товар (Код_Товара, Название, остаток)
VALUES (6, ‘f’,70)
COMMIT

После завершения транзакции в таблице Товар останутся товары с кодами

(1) Код_Товара: 1, 3, 4,5, 6

(2) Код_Товара: 1, 3, 4, 6

(3) Код_Товара: 3, 4, 6

(4) в таблице записей нет

В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?

Basa_user
Администратор UserA UserB
GRANT ALL TO UserA
CREATE TABLE tab
(id_t INT PRIMARY KEY,
  nam_t VARCHAR(20))
GRANT SELECT ON tab TO UserB
 
INSERT INTO userA.tab values
(1,'aa')
INSERT INTO tab values (2,'bb') SELECT * FROM
tab
? ? ?

(1)

Выполнено Выполнено Отклонено

(2)

Отклонено Выполнено Выполнено

(3)

Отклонено Выполнено Отклонено

(4)

Выполнено Выполнено Выполнено

Дан фрагмент сценария VBScript для выборки данных из таблицы Автор, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject(«ADODB.Connection»)
Set rst=Server.CreateObject(«ADODB.Recordset»)
cn.open «pwd=user1;driver={SQL Server};
server=its; database = basa_user1»
rst.open «SELECT Фамилия, Телефон FROM Автор», cn
do until rst.eof
response.write rst.fields(0)
response.write rst.fields(1)
response.write rst.fields(2)&»<br>»
rst.movenext
loop

Указать правильные ответы.

(1) в обработке результата нет перехода на новую строку

(2) при открытии запроса не указано соединение

(3) при обработке результата число полей не соответствует количеству полей в операторе SELECT

(4) в строке соединения не указан пользователь

Пусть идентификационный номер налогоплательщика (ИНН) состоит из 12 цифр, например: 872573021145. Укажите правильные определения. 

(1) INN CHAR(12)

(2) INN VARCHAR(20)

(3) И.Н.Н. CHAR(12)

(4) INN INT

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1
ON PRIMARY
( NAME=b1, FILENAME=’D:userb1.mdf’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),
(NAME=b2, FILENAME=’D:userb2.mdf’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%)
LOG ON
(NAME=l1, FILENAME=’E:userl1.ldf’,
SIZE=50MB, MAXSIZE=100, FILEGROWTH=10)

Выберите правильный ответ.

(1) база данных будет успешно создана

(2) неправильно указано физическое имя базы данных

(3) неправильно указано логическое имя базы данных

(4) неправильно определен размер базы данных

Пусть дана таблица Автор с полями

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Найти авторов, количество трудов которых превышает 10, но не больше 20.

(1)

SELECT Фамилия, Количество_трудов
FROM Автор
WHERE Количество_трудов>10 And
Количество_трудов<=20

(2)

SELECT Фамилия, Количество_трудов
FROM Автор
WHERE Количество_трудов Between 10 And 20

(3)

SELECT Фамилия, Количество_трудов
FROM Автор
WHERE Количество_трудов Between 11 And 20

(4)

SELECT Фамилия, Количество_трудов
FROM Автор
WHERE Количество_трудов>=11
Or Количество_трудов<=19

Даны таблицы

CREATE TABLE Автор
(Код_Автора INT,
Фамилия VARCHAR(50) NULL,
Имя VARCHAR(50) NULL,
Отчество VARCHAR(50) NULL,
Пол VARCHAR(3) 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)

SELECT DISTINCT Автор.Фамилия, Книга.Издательство
FROM Автор INNER JOIN Книга ON
Автор.Код_Автора = Книга.Код_Автора
WHERE Книга.Издательство=»Мир»

(2)

SELECT DISTINCT Автор.Фамилия, Книга.Издательство
FROM Автор, Книга
WHERE Автор.Код_Автора = Книга.Код_Автора AND
Книга.Издательство=»Мир»

(3)

SELECT DISTINCT Автор.Фамилия, Книга.Издательство
FROM Автор JOIN Книга ON Автор = Книга
WHERE Книга.Издательство=»Мир»

(4)

SELECT DISTINCT Автор.Фамилия, Книга.Издательство
FROM Автор INNER JOIN Книга.Издательство
ON Автор.Код_Автора = Книга.Код_Автора
AND Книга.Издательство=»Мир»

Дана таблица

CREATE TABLE Книга
( Код_Книги INT,
Название VARCHAR(50) NOT NULL,
Цена MONEY,
Тематика VARCHAR(50) NOT NULL,
Издательство VARCHAR(50) NOT NULL,
Код_Автора INT NOT NULL,
Количество INT)

Рассчитать общую стоимость тиража книг и 5% налог с продаж.

(1)

SELECT Название, Цена*Количество AS Стоимость,
Цена*Количество*0.05 AS Налог
FROM Книга

(2)

SELECT Название, Цена*Количество,
@Цена*@Количество*0.05
FROM Книга

(3)

SELECT Название, Стоимость=Цена*Количество,
Налог=@Цена*@Количество*0.05
FROM Книга

(4)

SELECT Название, @s=Цена*Количество,
@p=Цена*Количество*0.05
FROM Книга

Даны таблицы

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,
Количество INT)

Определить автора самой дорогой книги.

(1)

SELECT Автор.Фамилия, Книга.Цена
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Цена=(SELECT Max(Книга.Цена)
FROM Книга)

(2)

SELECT Автор.Фамилия, Книга.Цена
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Цена>=ALL(SELECT Книга.Цена
FROM Книга)

(3)

SELECT Автор.Фамилия, Книга.Цена
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Цена= Max(Книга.Цена)

(4)

SELECT Автор.Фамилия, Книга.Цена
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Цена=MAX(SELECT Книга.Цена
FROM Книга)

Пусть дана таблица Автор с полями

Фамилия 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′)

Даны две таблицы. Определить в них первичные ключи.

CREATE TABLE Автор
( Паспорт INT,
Фамилия VARCHAR(50) NULL,
Имя VARCHAR(50) NULL,
Отчество VARCHAR(50) NULL,
Пол CHAR(7),
Возраст INT ,
Телефон INT )

CREATE TABLE Книга
( Название VARCHAR(50),
Цена MONEY,
Тематика VARCHAR(50),
Издательство VARCHAR(50),
Количество INT)

(1)

ALTER TABLE Автор ALTER COLUMN Паспорт CHAR(12) NOT NULL
ALTER TABLE Автор ADD CONSTRAINT pk1 PRIMARY KEY (Паспорт)

ALTER TABLE Книга ADD УДК CHAR(10) NOT NULL
ALTER TABLE Книга ADD CONSTRAINT pk2 PRIMARY KEY (УДК)

(2)

ALTER TABLE Автор ADD CONSTRAINT pk1 PRIMARY KEY (паспорт)
ALTER TABLE Книга ADD УДК CHAR(10) NOT NULL
ALTER TABLE Книга ADD CONSTRAINT pk2 PRIMARY KEY (УДК)

(3)

ALTER TABLE Автор ADD CONSTRAINT pk1 PRIMARY KEY (Фамилия, Имя)
ALTER TABLE Книга ADD УДК CHAR(10) NOT NULL PRIMARY KEY

(4)

ALTER TABLE Автор ALTER COLUMN паспорт INT NOT NULL PRIMARY KEY
ALTER TABLE Книга ADD УДК CHAR(10) PRIMARY KEY

Назовите отличительные черты реализации от стандарта языка.

(1) любая реализация языка является подмножеством стандарта

(2) стандарт – это подмножество любой реализации языка

(3) реализация является дополнением и усовершенствованием команд и опций стандарта языка

(4) реализация языка заключается в адаптации стандарта языка к конкретной СУБД

Дано представление с вычислениями.

CREATE VIEW view2
AS
SELECT Название, Издательство,
Цена, Цена*Количество AS Стоимость
FROM Книга
WHERE Цена>50

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Цена=Цена*1.5
WHERE Издательство=’Мир’

Результатом выполнения команды является следующее:

(1) в таблице Книга будет изменена цена книг издательства «Мир» стоимость которых >50 руб

(2) в таблице Книга будет изменена цена всех книг издательства «Мир»

(3) команда не будет выполнена

Необходимо разработать функцию для получения списка книг издательства «Мир» и определить команду для ее вызова. Укажите правильный ответ.

(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()

Для определения общей стоимости книг, изданных заданным автором в заданном издательстве, разработана процедура:

CREATE PROC my_proc2
@f VARCHAR(20),
@iz VARCHAR(20),
@s FLOAT OUTPUT
AS
SELECT @s=Sum(Книга.Цена*Книга.Количество)
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия, Книга.Издательство
HAVING Автор.Фамилия=@f AND Книга.Издательство=@iz

Укажите правильный вызов процедуры

(1)

DECLARE @st FLOAT
EXEC my_proc2 @iz=’Мир’,@s=@st, @f=’Иванов’
SELECT @st

(2)

DECLARE @st FLOAT
DECLARE @f VARCHAR(20), @iz VARCHAR(20)
EXEC my_proc2 @f=’Иванов’,@iz=’Мир’,@s=@st OUTPUT
SELECT @st

(3)

DECLARE @st INT
EXEC my_proc2 (‘Иванов’,’Мир’,@st OUTPUT)
SELECT @st

(4)

DECLARE @st FLOAT
EXEC my_proc2 ‘Иванов’,’Мир’,@st OUTPUT
SELECT @st

Разработана процедура, возвращающая список книг издательства «Мир».

CREATE PROC my_proc
@cur CURSOR VARYING OUTPUT
AS
SET @cur=CURSOR FORWARD_ONLY STATIC FOR
SELECT Название, Издательство, Цена
FROM Книга
WHERE Издательство=»Мир»
OPEN @cur

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

DECLARE @my_cur CURSOR
DECLARE @n VARCHAR(20)
EXEC my_proc @cur=@my_cur OUTPUT
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
WHILE (@@FETCH_STATUS=0)
BEGIN
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
END
CLOSE @my_cur
DEALLOCATE @my_cur

Укажите правильные ответы.

(1) ошибок ни в процедуре, ни в ее вызове нет

(2) процедура создана правильно. При вызове в обработке курсора дважды происходит обращение к первой записи

(3) в процедуре не следует открывать курсор. Он должен быть открыт при вызове процедуры

(4) процедура создана правильно. При вызове процедуры для обработки курсора в операторе INTO список переменных не соответствует полям оператора SELECT в создании курсора в процедуре

Даны таблицы Книга и Автор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором авторе из таблицы Автор. При этом необходимо запретить удаление, если упомянутый автор издавал свои книги в издательстве «Мир».

CREATE TRIGGER trig_del
ON Автор FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @av INT,
      @k INT
SELECT @av=Код_Автора
FROM deleted
IF EXISTS (SELECT *
    FROM Книга
    WHERE Код_Автора=@av AND Издательство=’Мир’)
ROLLBACK TRAN

(2)

IF EXISTS (SELECT *
   FROM Книга
   WHERE Код_Автора=deleted.Код_Автора AND
Издательство=’Мир’)
ROLLBACK TRAN

(3)

IF EXISTS (SELECT Код_Автора
   FROM Книга
   WHERE Издательство=’Мир’)
ROLLBACK TRAN

(4)

IF EXISTS (SELECT Код_Автора
   FROM Книга
   WHERE Книга.Код_Автора=deleted.Код_Автора AND
Издательство=’Мир’)
ROLLBACK TRAN

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, —номер работы
нач_соб INT, —начальное событие
кон_соб INT, —конечное событие
длит INT) —длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1».

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

CREATE TRIGGER trig_del
ON Граф FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e INT,@n INT
SELECT @n=номер, @e=кон_соб FROM deleted
   IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер<>@n AND кон_соб=@e )
   ROLLBACK TRAN

(2)

DECLARE @e INT,@n INT
SELECT @n=номер, @e=кон_соб FROM deleted
   IF EXISTS(SELECT *
      FROM Граф
      WHERE кон_соб<>@e )
   ROLLBACK TRAN

(3)

   IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер<>deleted.номер AND
кон_соб=deleted.кон_соб )
   ROLLBACK TRAN

(4)

   IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер<> (SELECT номер FROM deleted)
      AND кон_соб=(SELECT кон_соб FROM deleted))
   ROLLBACK TRAN

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN A
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, ‘v’,40)
BEGIN TRAN B
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, ‘n’,50)
UPDATE Товар SET Название =’m’ WHERE Код_Товара=1
BEGIN TRAN C
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, ‘m’,60)
ROLLBACK TRAN C
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, ‘k’,70)
COMMIT

После завершения транзакции в таблице Товар останутся товары с названиями:

(1) Названия: 'm', 'n', 'k'

(2) Названия: 'v', 'm', 'n', 'k'

(3) Названия: 'v', 'n', 'k'

(4) Названия: 'n', 'k'

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2

3

4

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
GRANT INSERT ON tab
TO UserA
WITH GRANT OPTION

GRANT INSERT ON
tab TO UserB

   
5 INSERT INTO tab values
(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
6 ? ? ? ?

(1)

6 Выполнено Выполнено Выполнено Отклонено

(2)

6 Выполнено Отклонено Выполнено Отклонено

(3)

6 Отклонено Выполнено Отклонено Выполнено

(4)

6 Отклонено Отклонено Выполнено Отклонено

Дан фрагмент Java-программы для выборки данных из таблицы Автор, расположенной в источнике данных с именем DSN=mystud.

Class.forName(«sun.jdbc.odbc.JdbcOdbcDriver»);
Connection myCon= DriverManager.getConnection(
«jdbc:odbc:mystud»,»user1″,»user1″);
Statement mySt=myCon.createStatement();
ResultSet rs=mySt.executeQuery(
«SELECT Фамилия, Телефон,
Дата_рождения FROM Автор «);
while (rs.next()) {
String var1=rs.getString(1);
String var2=rs.getString(2);
String var3=rs.getString(3);

}

Указать правильные ответы.

(1) при выборке данных из результата запроса число полей не соответствует количеству полей в операторе SELECT

(2) в цикле обработки результата запроса нет перехода на новую запись

(3) поля в операторе SELECT не соответствуют по типу значениям, которые выбираются из результата запроса

(4) ошибок нет

Какие из следующих чисел можно внести в поле, описанное как DECIMAL(4,1)?

(1) 16.2

(2) 123.4

(3) -145.3

(4) 1678.98

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

(1)

Фамилия VARCHAR(50) NOT NULL
Имя VARCHAR(20) NULL
Отчество VARCHAR(20) NULL
Пол CHAR(3)
Возраст INT NOT NULL
Телефон CHAR(9)
Рас_счет CHAR(20) NOT NULL

(2)

Фамилия CHAR(50) NOT NULL
Имя CHAR(20) NULL
Отчество CHAR(20) NULL
Пол VARCHAR(3)
Возраст INT NOT NULL
Телефон CHAR(9)
Расчетный счет CHAR(20) NOT NULL

(3)

Фамилия VARCHAR(50) NULL
Имя VARCHAR(20) NULL
Отчество VARCHAR(20) NULL
Пол CHAR(3)
Возраст DATETIME NOT NULL
Телефон INT(9)
Рас_счет INT(20) NOT NULL

(4)

Фамилия VARCHAR(50) NULL
Имя VARCHAR(20) NULL
Отчество VARCHAR(20) NULL
Пол CHAR(3)
Возраст INT NOT NULL
Телефон INT(9)
Рас/счет DECIMAL(20,0) NOT NULL

Пусть дана таблица Автор.

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

 Найти города, в которых живут авторы, родившиеся не ранее 1982 года и издавшие более 10 книг.

(1)

SELECT Город
FROM Автор
WHERE Дата_рождения>=’01/01/1982’ AND
Количество_трудов>10

(2)

SELECT Город, Дата_рождения,Количество_трудов
FROM Автор
WHERE Дата_рождения<’01/01/1982’ AND Количество_трудов>10

(3)

SELECT Город
FROM Автор
WHERE Дата_рождения>’01/01/1982’ OR Количество_трудов<10

Даны таблицы

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)

SELECT DISTINCT Автор.Фамилия, Книга.Тематика
FROM Автор LEFT JOIN Книга ON
Автор.Код_Автора = Книга.Код_Автора

(2)

SELECT Автор.Фамилия, Книга.Тематика
FROM Автор RIGHT JOIN Книга ON
Автор.Код_Автора = Книга.Код_Автора

(3)

SELECT DISTINCT Автор.Фамилия, Книга.Тематика
FROM Автор INNER JOIN Книга ON
Автор.Код_Автора = Книга.Код_Автора

(4)

SELECT Автор.Фамилия, Книга.Тематика
FROM Автор,Книга
WHERE Автор.Код_Автора = Книга.Код_Автора

Даны таблицы

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,
Количество INT)

На какую сумму были проданы книги каждого автора?

(1)

SELECT Автор.Фамилия,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия

(2)

SELECT Автор.Фамилия,
Стоимость =Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия

(3)

SELECT Автор.Фамилия,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора

Даны таблицы

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,
Количество INT)

Определить авторов, не печатающих свои книги в издательстве «АСТ».

(1)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор
WHERE Автор.Код_Автора NOT IN
(SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Издательство=’АСТ’)

(2)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор,Книга
WHERE Книга.Издательство<>’АСТ’

(3)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор, Книга
WHERE Автор.Код_Автора=Книга.Код_Автора
AND Книга.Издательство=’АСТ’

(4)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор
WHERE NOT EXISTS (SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Издательство=’АСТ’)

Пусть дана таблица Автор с полями

Фамилия 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 Телефон =’’

Даны таблицы Автор и Книга.

CREATE TABLE Автор
( Паспорт INT,
Фамилия VARCHAR(50) NULL,
Имя VARCHAR(50) NULL,
Отчество VARCHAR(50) NULL,
Пол CHAR(7),
Возраст INT ,
Телефон INT )

CREATE TABLE Книга
( Название VARCHAR(50),
Цена MONEY,
Тематика VARCHAR(50),
Издательство VARCHAR(50),
Количество INT)

Между ними необходимо установить связь «один-ко-многим» (один автор — много книг) с учетом первичных ключей.

(1)

ALTER TABLE Книга
ADD Автор CHAR(12)
ALTER TABLE Книга
ALTER COLUMN Автор CHAR(12) NOT NULL
ALTER TABLE Книга
ADD CONSTRAINT fk_Книга FOREIGN KEY(Автор)
REFERENCES Автор(паспорт)

(2)

ALTER TABLE Книга
ADD Паспорт CHAR(12)

ALTER TABLE Книга
ADD FOREIGN KEY(Паспорт) REFERENCES Автор

(3)

ALTER TABLE Книга ADD Паспорт CHAR(12)

ALTER TABLE Автор
ADD FOREIGN KEY(Паспорт) REFERENCES Книга

(4)

ALTER TABLE Книга
ADD Автор CHAR(12) FOREIGN KEY REFERENCES Автор

Определите роль клиента в двухуровневой архитектуре «клиент-сервер».

(1) управление пользовательским интерфейсом

(2) управление логикой приложения

(3) создание и выполнение запроса к БД

Дано представление с данными из разных таблиц.

CREATE VIEW view3
AS
SELECT Книга.Название, Книга.Издательство,
Автор.Фамилия
FROM Автор INNER JOIN Книга ON
Автор.Код_Автора = Книга.Код_Автора

Предпринимается попытка добавить в представление запись.

INSERT INTO view3(Название, Издательство, Фамилия)
VALUES(‘Анна Каренина’,’Мир’,’Л.Толстой’)

Результатом выполнения команды является следующее:

(1) в таблицы Автор и Книга будут добавлены записи

(2) запись будет добавлена только в таблицу Автор

(3) данные в представление view3 будут успешно добавлены

(4) команда не будет выполнена

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

(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 Название

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

CREATE PROC my_proc3
@f VARCHAR(20)=’Петров’,
@iz VARCHAR(20)=’АСТ’,
@s FLOAT=0.1 OUTPUT
AS
SELECT @s=Sum(Книга.Цена*Книга.Количество)
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия, Книга.Издательство
HAVING Автор.Фамилия=@f AND Книга.Издательство=@iz

Укажите правильный вызов процедуры

(1)

DECLARE @st FLOAT
EXEC my_proc3 @iz=’Мир’,@f=’Иванов’,
@s=@st OUTPUT
SELECT @st

(3)

DECLARE @st FLOAT
EXEC my_proc3 @st OUTPUT
SELECT @st

(4)

DECLARE @st FLOAT
EXEC my_proc3 @s=@st OUTPUT
SELECT @st

Разработан курсор для печати списка книг.

DECLARE @n VARCHAR(50),
@iz VARCHAR(50),
@p MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ‘ Список книг’
DECLARE cursor1 CURSOR GLOBAL SCROLL KEYSET FOR
SELECT Название, Издательство, Цена
FROM Книга
WHERE Издательство=»Мир»

OPEN cursor1
SET @cur1=cursor1
FETCH LAST FROM cursor1 INTO @n, @iz, @p
FETCH ABSOLUTE 2 FROM cursor1 INTO @n, @iz, @p
FETCH RELATIVE -2 FROM cursor1 INTO @n, @iz, @p

SELECT @message=’Книга ‘+@n+’ Цена ‘+
CAST(@p AS VARCHAR(4))
PRINT @message
CLOSE cursor1
DEALLOCATE cursor1

Какая из имеющихся в курсоре записей будет распечатана?

(1) первая запись

(2) произошло обращение к строке за пределами курсора

(3) объявление курсора запрещает произвольный переход по записям

(4) вторая запись

Даны таблицы Книга и Автор. Создать триггер, обрабатывающий изменение количества книг в одной записи таблицы Книга. При этом в таблице Автор необходимо пересчитать общий тираж книг соответствующего автора.

CREATE TRIGGER trig_upd
ON Книга FOR UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @av_i INT, @av_d INT,
      @k_i INT, @k_d INT
SELECT @av_i=Код_Автора, @k_i=количество
FROM inserted
SELECT @av_d=Код_Автора, @k_d=количество
FROM deleted

UPDATE Автор SET тираж=тираж-@k_d
WHERE Код_Автора=@av_d
UPDATE Автор SET тираж=тираж+@k_i
WHERE Код_Автора=@av_i

(2)

UPDATE Автор
SET тираж=
тираж-deleted.Количество+inserted.Количество
WHERE Код_Автора=inserted.Код_Автора

(3)

UPDATE Автор
SET тираж=тираж- deleted.Количество
WHERE Код_Автора=deleted.Код_Автора
UPDATE Автор SET тираж=
тираж+ inserted.Количество
WHERE Код_Автора=inserted.Код_автора

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, —номер работы
нач_соб INT, —начальное событие
кон_соб INT, —конечное событие
длит INT) —длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1».
Запретить одновременное изменение только номеров начального и конечного событий.

CREATE TRIGGER trig_upd
ON Граф FOR UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

IF (COLUMNS_UPDATED() & 6)=6
   ROLLBACK TRAN

(2)

IF UPDATE(нач_соб) AND UPDATE(кон_соб)
   ROLLBACK TRAN

(3)

IF UPDATE(нач_соб,кон_соб)
   ROLLBACK TRAN

(4)

IF (COLUMNS_UPDATED() & 2)=2
   ROLLBACK TRAN

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user
SET TRANSACTION ISOLATION LEVEL READ
UNCOMMITTED
BEGIN TRANSACTION TRA
1.SELECT * FROM Товар

3.UPDATE Товар SET
остаток=остаток+10 WHERE Код_Товара=4

ROLLBACK TRANSACTION TRA

USE basa_user
SET TRANSACTION ISOLATION
LEVEL REPEATABLE READ
BEGIN TRANSACTION TRB

2.SELECT * FROM Товар

4.SELECT * FROM Товар
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

(1)

1 2 3 4
Выполняется Выполняется Блокируется Выполняется

(2)

1 2 3 4
Блокируется Выполняется Выполняется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

9

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1
'sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserB'
sp_addrolemember
'role1','UserC'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA
WITH GRANT
OPTION

REVOKE INSERT ON
tab
TO role1

GRANT INSERT ON
tab TO UserC

   
10 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
11 ? ? ? ?

(1)

11 Выполнено Выполнено Отклонено Выполнено

(2)

11 Выполнено Отклонено Отклонено Отклонено

(3)

11 Отклонено Выполнено Выполнено Выполнено

(4)

11 Выполнено Выполнено Выполнено Выполнено

Дан фрагмент сценария VBScript для изменения данных в таблице Автор.

prm1=Server.CreateObject(«ADODB.Parameter»)
prm2=Server.CreateObject(«ADODB.Parameter»)
cmd.CommandText = «update Автор set Телефон=?
where Фамилия=?»
cmd.CommandType = adCmdText
cmd.Prepared = True
Set prm1 = сmd.CreateParameter(
«p1», adVarChar, adParamInput,8 ,’12-34-56′)
Set prm2 = сmd.CreateParameter(
«p2», adVarChar, adParamInput,20 ,’Иванов’)
cmd.Parameters.Append prm1
cmd.Parameters.Append prm2
cmd.Execute

Указать правильные ответы.

(1) ошибок нет

(2) неправильно указаны типы параметров

(3) последовательность добавления параметров в коллекцию параметров не соответствует следованию знаков «?»

(4) параметры неправильно добавляются в коллекцию параметров

Какие из следующих описаний типов являются неправильными?

(1) DECIMAL(5,5)

(2) DECIMAL(3,8)

(3) DECIMAL(14,3)

(4) DECIMAL(45,34)

В таблицу Автор необходимо добавить сведения об ИНН автора и заменить поле Возраст на поле Дата рождения.

(1)

ALTER TABLE Автор ADD ИНН CHAR(30)
ALTER TABLE Автор DROP COLUMN Возраст
ALTER TABLE Автор
ADD Дата_рождения DATETIME

(2)

ALTER TABLE Автор
ADD ИНН CHAR(30) NOT NULL
ALTER TABLE Автор
ALTER COLUMN Возраст DATETIME

(3)

ALTER TABLE Автор
ADD COLUMN ИНН CHAR(30) NOT NULL
ALTER TABLE Автор DROP Возраст
ALTER TABLE Автор
ADD COLUMN Дата_рождения DATETIME

(4)

ALTER TABLE Автор
ADD COLUMN ИНН VARCHAR(30) NOT NULL
ALTER TABLE Автор DROP Возраст
ALTER TABLE Автор
ADD Дата_рождения DATETIME

Пусть дана таблица Автор.

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Определить авторов, фамилии которых начинаются с буквы «Б» или «Г» и содержат слог «ор».

(1)

SELECT Фамилия
FROM Автор
WHERE (Фамилия Like ‘Б%’ Or Фамилия Like ‘Г%’)
And Фамилия Like ‘%ор%’

(2)

SELECT Фамилия
FROM Автор
WHERE Фамилия Like ‘Б’ Or Фамилия Like ‘Г’
And Фамилия Like ‘%ор%’

(3)

SELECT Фамилия
FROM Автор
WHERE (Фамилия Like ‘Б_’ AND Фамилия Like ‘Г_’)
And Фамилия Like ‘_ор_’

(4)

SELECT Фамилия
FROM Автор
WHERE (Фамилия Like ‘Б_%’ Or Фамилия Like ‘Г_%’)
Or Фамилия Like ‘%ор%’

Даны таблицы

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)

SELECT Автор.Фамилия
FROM Автор
WHERE Автор.Код_Автора IN (SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Издательство=»Мир» OR
Книга.Издательство=»АСТ»)

(2)

SELECT Автор.Фамилия
FROM Автор
WHERE Автор.Код_Автора IN (SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Издательство=»Мир» AND
Книга.Издательство=»АСТ»)

(3)

SELECT Автор.Фамилия
FROM Автор, Книга
WHERE Книга.Издательство=»Мир» AND
Книга.Издательство=»АСТ»

(4)

SELECT Автор.Фамилия
FROM Автор
WHERE Автор.Код_Автора= Книга.Код_Автора AND
Книга.Издательство=»Мир» AND
Книга.Издательство=»АСТ»

Даны таблицы

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,
Количество INT)

Определить авторов, написавших наибольшее количество книг.

(1)

SELECT Автор.Фамилия
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия
HAVING Count(Книга.Название)>=
All (SELECT Count(Книга.Название)
FROM Книга
GROUP BY Книга.Код_Автора)

(2)

SELECT Автор.Фамилия
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия
HAVING Count(Книга.Название)=MAX
(SELECT Count(Книга.Название)
FROM Книга
GROUP BY Книга.Код_Автора)

(3)

SELECT Автор.Фамилия
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия
HAVING Count(Книга.Название)>=All
(SELECT Count(Книга.Название)
FROM Книга)

(4)

SELECT Автор.Фамилия
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Count(Книга.Название)>=All
(SELECT Count(Книга.Название)
FROM Книга)

Пусть дана таблица Книга с полями:

Код_Книги 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 Издательство=»АСТ»

Даны таблицы Автор и Книга.

CREATE TABLE Автор
( Паспорт INT,
Фамилия VARCHAR(50) NULL,
Имя VARCHAR(50) NULL,
Отчество VARCHAR(50) NULL,
Пол CHAR(7),
Возраст INT ,
Телефон INT )

CREATE TABLE Книга
( Название VARCHAR(50),
Цена MONEY,
Тематика VARCHAR(50),
Издательство VARCHAR(50),
Количество INT)

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

(1)

ALTER TABLE Книга
ADD CONSTRAINT ch1 CHECK(тематика IN (
‘фантастика’,’роман’,’поэзия’))

(2)

ALTER TABLE Книга
ADD CHECK(тематика IN (
‘фантастика’,’роман’,’поэзия’))

(3)

ALTER TABLE Книга
ALTER тематика VARCHAR(20) CHECK(тематика IN (
‘фантастика’,’роман’,’поэзия’))

Дано представление с группировкой.

CREATE VIEW view4
AS
SELECT Издательство, Sum(Количество) AS
Общ_Количество
FROM Книга
GROUP BY Издательство
HAVING Издательство=»АСТ»

Предпринимается попытка удалить записи:

DELETE FROM view4
WHERE Издательство=’Мир’

(1) из таблицы Книга будут удалены записи о книгах издательства «Мир» и издательства «АСТ»

(2) из таблицы Книга будут удалены записи о книгах издательства «Мир»

(3) команда будет выполнена. Представление не изменится

(4) команда выполнена не будет

Определите команду для вызова функции, создаваемой следующей командой:

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,’Мир’)

В базе данных basa1 имеется таблица Книга. Из базы данных basa2 необходимо выполнить действие по увеличению цены всех книг на 10%. В какой базе данных должна быть создана процедура и как можно ее выполнить?

(1)

Создание процедуры

USE basa2
CREATE PROC my_proc4
AS
UPDATE basa1.dbo.Книга
SET basa1.dbo.Книга.Цена =basa1.dbo.Книга.Цена*1.1

Вызов процедуры

USE basa2
EXEC my_proc4

(2)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE Книга SET Цена =Цена*1.1

Вызов процедуры

USE basa2
EXEC basa1.my_proc4

(3)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE Книга SET Цена =Цена*1.1

Вызов процедуры

USE basa2
EXEC my_proc4

(4)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE basa1.dbo.Книга
SET basa1.dbo.Книга.Цена =
basa1.dbo.Книга.Цена*1.1

Вызов процедуры

USE basa2
EXEC basa1.my_proc4

Пусть в таблице Книга представлены записи, где значения поля Код_Книги равны 1, 2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 и 10. Создан курсор для вывода списка книг издательства «Мир».

DECLARE @n VARCHAR(50),
@iz VARCHAR(50),
@p MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ‘ Список книг’
DECLARE cursor1 CURSOR GLOBAL SCROLL KEYSET FOR
SELECT Название, Издательство, Цена
FROM Книга
WHERE Издательство=»Мир»

OPEN cursor1
SET @cur1=cursor1
FETCH ABSOLUTE 9 FROM cursor1 INTO @n, @iz, @p
DELETE Книга
WHERE CURRENT OF @cur1
FETCH RELATIVE -2 FROM cursor1 INTO @n, @iz, @p
UPDATE Книга SET Цена=Цена*1.5
WHERE CURRENT OF cursor1

SELECT @message=’Книга ‘+@n+’ Цена ‘+
CAST(@p AS VARCHAR(4))
PRINT @message
CLOSE cursor1
DEALLOCATE cursor1

Какие действия выполнит система?

(1) успешно удаляется запись, где Код_Книги=9 и изменяется запись, где Код_Книги=8

(2) успешно удаляется запись, где Код_Книги=9 и изменяется запись, где Код_Книги=7

(3) делается попытка удалить несуществующую запись

(4) объявление курсора не позволяет изменять и удалять записи

Дана таблица Книга. Разработать триггер, который выполняется вместо изменения цены одной книги в этой таблице. Изменение цены выполнить только в том случае, если количество экземпляров данной книги превышает 100.

CREATE TRIGGER trig_upd
ON Книга INSTEAD OF UPDATE
AS

Выберите операторы для продолжения текста триггера.

DECLARE @kod INT,
   @k INT,
   @p MONEY
SELECT @kod=Код_Книги, @k=количество, @p=цена
FROM inserted
IF @k>100
   UPDATE Книга SET цена=@p
   WHERE Код_Книги=@kod

(1)

IF (SELECT количество FROM inserted)>100

   UPDATE Книга SET цена=(
SELECT цена FROM inserted
   WHERE Код_Книги=(SELECT Код_Книги FROM inserted)

(2)

IF inserted.количество >100

   UPDATE Книга SET цена=inserted.цена
   WHERE Код_Книги=inserted.Код_Книги

(3)

IF EXISTS (
SELECT * FROM inserted WHERE количество >100)
   UPDATE Книга SET цена=inserted.цена
   WHERE Код_Книги=inserted.Код_Книги

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph
(nomer INT PRIMARY KEY, —номер дуги
outp INT, —номер вершины,
—из которой дуга выходит
inp INT) —номер вершины,
— в которую дуга входит

Создать триггер, обрабатывающий вставку одной записи и запрещающий ввод параллельных дуг.

CREATE TRIGGER trig
ON graph FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e1 INT, @e2 INT,@n INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
IF EXISTS(SELECT *
      FROM graph
      WHERE nomer<>@n AND
outp=@e1 AND inp=@e2 )
ROLLBACK TRAN

(2)

IF EXISTS(SELECT *
      FROM graph
      WHERE nomer<> inserted.nomer AND
outp= inserted.outp
      AND inp= inserted.inp)
ROLLBACK TRAN

(3)

IF EXISTS(SELECT *
      FROM graph
      WHERE nomer<>(SELECT nomer FROM inserted)
      AND outp= (SELECT outp FROM inserted)
      AND inp=(SELECT inp FROM inserted)
ROLLBACK TRAN

(4)

DECLARE @e1 INT, @e2 INT,@n INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
IF NOT EXISTS(SELECT *
      FROM graph
      WHERE nomer=@n AND
outp<>@e1 AND inp<>@e2 )
ROLLBACK TRAN

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL
SERIALIZABLE

BEGIN TRANSACTION TRA
1.SELECT * FROM Товар

3.UPDATE Товар SET
остаток=остаток+10 WHERE
Код_Товара=3

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION LEVEL
READ COMMITTED

BEGIN TRANSACTION TRB

2. INSERT
Товар(Код_Товара,Название,
остаток)
VALUES (3,’SS’,999)

4.SELECT * FROM Товар
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

(1)

1 2 3 4
Выполняется Блокируется Выполняется Блокируется

(2)

1 2 3 4
Блокируется Выполняется Выполняется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

9

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserB'
sp_addrolemember
'role1','UserC'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA

DENY INSERT ON
tab
TO role1

GRANT INSERT ON
tab TO UserC

   
10 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
11 ? ? ? ?

(1)

11 Выполнено Отклонено Отклонено Отклонено

(2)

11 Выполнено Отклонено Выполнено Отклонено

(3)

11 Отклонено Выполнено Отклонено Выполнено

(4)

11 Выполнено Отклонено Отклонено Выполнено

Дан фрагмент Java-программы для изменения данных в таблице Автор.

PreparedStatement mySt=Con.prepareStatement(
«update Автор set Телефон=? where Фамилия=?»);
mySt.setString(0, «12-23-34″);
mySt.setInt(1,»Иванов»);
int res=mySt.executeUpdate();

Указать правильные ответы.

(1) ошибок нет

(2) неправильно указаны типы параметров

(3) установки параметров не соответствуют следованию знаков «?»

(4) неправильно указаны номера параметров

Дан некоторый фрагмент SQL-кода:

DECLARE @a CHAR(12)
DECLARE @b DATETIME
DECLARE @c INT
SET @a=’12.2.04’
SET @b=’3.04.04’

Укажите правильные операторы для вычисления количества дней между датами:

(1) SET @c=CAST(@b-CAST(@a AS DATETIME) AS INT)

(2) SET @c=@b-CAST(@a AS DATETIME)

(3) SET @c=CAST(@b AS INT) +CAST(@a AS INT)

(4) SET @c=CAST((@b-@a) AS INT)

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%; для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1
ON PRIMARY
( NAME=b1, FILENAME=’D:userb1.mdf’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),
(NAME=b2, FILENAME=’D:userb2.mdf’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%)
LOG ON
(NAME=l1, FILENAME=’E:userl1.ldf’,
SIZE=50MB, MAXSIZE=100, FILEGROWTH=10)

Выберите правильный ответ.

(1) база данных будет успешно создана

(2) неправильно указано физическое имя базы данных

(3) неправильно указано логическое имя базы данных

(4) неправильно определен размер базы данных

Пусть дана таблица Автор.

Фамилия VARCHAR(50)
Пол CHAR(3)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Вывести в алфавитном порядке фамилии авторов из Самары, в телефонном номере которых на втором или третьем месте стоят цифры 5 или 8, а последними являются цифры 34.

(1)

SELECT Фамилия, Город, Телефон
FROM Автор
WHERE Город=’Самара’ AND
(Телефон Like ‘_[5,8]%’ Or
Телефон Like ‘__[5,8]%’) And
Телефон Like ‘%[3][4]’
ORDER BY Фамилия

(2)

SELECT Фамилия, Город, Телефон
FROM Автор
WHERE Город=’Самара’ AND
Телефон Like ‘_[5,8]%’ Or
Телефон Like ‘__[5,8]%’ And
Телефон Like ‘%[3][4]’
ORDER BY Фамилия

(3)

SELECT Фамилия, Город, Телефон
FROM Автор
WHERE Город=’Самара’ AND
(Телефон Like ‘_[5,8]%’ AND
Телефон Like ‘__[5,8]%’)
And Телефон Like ‘%[3][4]’
ORDER BY Фамилия

(4)

SELECT Фамилия, Город, Телефон
FROM Автор
WHERE Город=’Самара’ OR
(Телефон Like ‘_[5,8]%’ AND
Телефон Like ‘__[5,8]%’) OR
Телефон Like ‘%[3][4]’
ORDER BY Фамилия

Даны таблицы

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)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор
WHERE Автор.Код_Автора IN (SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Тематика=»Роман») AND
Автор.Код_Автора NOT IN (SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Тематика=»Фантастика»)

(2)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор
WHERE Автор.Код_Автора IN (SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Тематика=»Роман» AND
Книга.Тематика<>»Фантастика»)

(3)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор
WHERE Книга.Тематика=»Роман» AND
Книга.Тематика=»Фантастика»

(4)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор,Книга
WHERE Автор.Код_Автора= Книга.Код_Автора AND
Книга.Тематика=»Роман» AND
Книга.Тематика<>»Фантастика»

Даны таблицы

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,
Количество INT)

Определить авторов, у каждого из которых было продано более 1000 экземпляров книг.

(1)

SELECT Автор.Фамилия,
Sum(Книга.Количество) AS Общ_Количество
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия
HAVING Sum(Книга.Количество)>1000

(2)

SELECT Автор.Фамилия,
Sum(Книга.Количество) AS Общ_Количество
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия
WHERE Sum(Книга.Количество)>1000

(3)

SELECT Sum(Книга.Количество) AS
Общ_Количество
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия
HAVING Общ_Количество>1000

(4)

SELECT Автор.Фамилия,
Sum(Книга.Количество) AS Общ_Количество
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
HAVING Sum(Книга.Количество)>1000

Даны таблицы

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,
Количество INT)

Определить авторов, общая стоимость книг которых, выпущенных издательством «Мир», составила наименьшую сумму.

(1)

SELECT Автор.Фамилия,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Издательство=»Мир»
GROUP BY Автор.Фамилия
HAVING Sum(Книга.Цена*Книга.Количество)<=
All (SELECT Sum(Книга.Цена*Книга.Количество)
FROM Книга
WHERE Книга.Издательство=»Мир»
GROUP BY Книга.Код_Автора)

(2)

SELECT Автор.Фамилия,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Издательство=»Мир»
GROUP BY Автор.Фамилия
HAVING Sum(Книга.Цена*Книга.Количество)=
MIN(SELECT Sum(Книга.Цена*Книга.Количество)
FROM Книга
WHERE Книга.Издательство=»Мир»
GROUP BY Книга.Код_Автора)

(3)

SELECT Автор.Фамилия,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Издательство=»Мир»
HAVING Sum(Книга.Цена*Книга.Количество)<=
All (SELECT Sum(Книга.Цена*Книга.Количество)
FROM Книга
WHERE Книга.Издательство=»Мир»)

(4)

SELECT Автор.Фамилия,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Издательство=»Мир»
AND Sum(Книга.Цена*Книга.Количество)<=
All (SELECT Sum(Книга.Цена*Книга.Количество)
FROM Книга
WHERE Книга.Издательство=»Мир»
)

Даны таблицы

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 Книга)

Даны таблицы Автор и Книга.

CREATE TABLE Автор
( Паспорт INT,
Фамилия VARCHAR(50) NULL,
Имя VARCHAR(50) NULL,
Отчество VARCHAR(50) NULL,
Пол CHAR(7),
Возраст INT ,
Телефон INT )

CREATE TABLE Книга
( Название VARCHAR(50),
Цена MONEY,
Тематика VARCHAR(50),
Издательство VARCHAR(50),
Количество INT)

Для поля Пол таблицы Автор создать и применить правило для ввода только значений «Мужской» и «Женский».

(1)

CREATE RULE sex AS @p IN (‘Мужской’,’Женский’)
sp_bindrule ‘sex’, ‘Автор.Пол’

(2)

CREATE RULE sex AS @p=’Мужской’ OR @p=’Женский’
sp_bindrule ‘sex’, ‘Автор.Пол’

(3)

CREATE RULE sex AS @p=’Мужской’ OR @p=’Женский’
sp_bindrule ‘sex’, ‘Пол’

(4)

CREATE RULE sex (Автор.Пол IN (
‘Мужской’,’Женский’))
sp_bindrule ‘sex’, ‘Автор.Пол’

Дано представление.

CREATE VIEW view1
AS
SELECT Название, Цена, Цена*Количество AS Стоимость
FROM Книга
WHERE Издательство=’Мир’

Предпринимается попытка изменить в представлении запись.

UPDATE view1 SET Цена=Цена*1.5
WHERE Цена>50

Результатом выполнения команды является следующее:

(1) в таблице Книга для книг издательства «Мир» с ценой >50 руб. цена увеличится

(2) в таблице Книга цена дорогих (> 50 руб.) книг еще более возрастет

(3) цена дорогих (> 50 руб.) книг издательства «Мир» в представлении view1 будет успешно изменена

(4) команда не будет выполнена

Необходимо разработать функцию для получения списка книг заданной тематики, изданных тиражом менее указанного числа.
Функция создается командой:

(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

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

CREATE PROC my_proc
@f VARCHAR(20)=’Петров’,
@iz VARCHAR(20)=’АСТ’,
@k INT=1 OUTPUT
AS
SELECT @k=Sum(Книга.Количество)
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия, Книга.Издательство
HAVING Автор.Фамилия=@f AND
Книга.Издательство=@iz

Укажите правильный вызов процедуры

(1)

DECLARE @st INT
EXEC my_proc @iz=’Мир’,@f=’Иванов’, @k=@st OUTPUT
SELECT @st

(3)

DECLARE @st FLOAT
EXEC my_proc @st OUTPUT
SELECT @st

(4)

DECLARE @st INT
EXEC my_proc @k=@st OUTPUT
SELECT @st

Разработана процедура, возвращающая список книг некоторого автора.

CREATE PROC my_proc
@av VARCHAR(20),
@cur CURSOR VARYING OUTPUT
AS
SET @cur=CURSOR FORWARD_ONLY STATIC FOR
SELECT Книга.Название, Книга.Издательство,
Книга.Цена
FROM Автор INNER JOIN Книга ON
Автор.Код_Автора = Книга.Код_Автора
WHERE Автор.Фамилия=@av
OPEN @cur

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

DECLARE @my_cur CURSOR
DECLARE @n VARCHAR(20)
EXEC my_proc ‘Иванов’,@cur=@my_cur OUTPUT
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
WHILE (@@FETCH_STATUS=0)
BEGIN
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
END
CLOSE @my_cur
DEALLOCATE @my_cur

Укажите правильные ответы.

(1) ошибок ни в процедуре, ни в ее вызове нет

(2) процедура создана правильно. При вызове в обработке курсора дважды происходит обращение к первой записи

(3) неправильно осуществляется вызов процедуры

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

CREATE TRIGGER trig_del
ON Автор FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @av INT
SELECT @av=Код_Автора
FROM deleted
IF EXISTS (SELECT Книга.Код_Автора
      FROM Книга
      GROUP BY Книга.Код_Автора
      HAVING Книга.Код_Автора=@av AND
Sum(Книга.Количество)>1000)
ROLLBACK TRAN

(2)

IF EXISTS (SELECT Книга.Код_Автора
      FROM Книга
      WHERE Код_Автора=deleted.Код_Автора AND
Sum(Книга.Количество)>1000)
ROLLBACK TRAN

(3)

IF EXISTS (SELECT Код_Автора
      FROM Книга
      WHERE Sum(Книга.Количество)>1000)
ROLLBACK TRAN

(4)

IF EXISTS (SELECT Код_Автора
    FROM Книга
    WHERE Книга.Код_Автора=deleted.Код_Автора AND
            Sum(Книга.Количество)>1000)
ROLLBACK TRAN

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph
(nomer INT PRIMARY KEY, —номер дуги
outp INT, —номер вершины,
—из которой дуга выходит
inp INT) —номер вершины,
—в которую дуга входит

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

CREATE TRIGGER trig
ON graph FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
   SELECT @k=COUNT(inp)
   FROM graph
   WHERE inp=@e2
IF @k=0
   ROLLBACK

(2)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
   IF COUNT(inp)=0
   ROLLBACK

(3)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
IF (SELECT COUNT(outp)
   FROM graph
   WHERE outp=@e2)=1
   ROLLBACK

(4)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
IF (COUNT(inp)
   FROM graph
   WHERE outp=@e1)=1

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, ‘a’,10)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, ‘b’,20)
SAVE TRANSACTION p1
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, ‘c’,30)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, ‘d’,40)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (5, ‘e’,50)

SAVE TRANSACTION p2
DELETE FROM Товар WHERE Код_Товара=2
SAVE TRANSACTION p3
DELETE FROM Товар WHERE Код_Товара=5
SAVE TRANSACTION p4
DELETE FROM Товар WHERE Код_Товара<>1
ROLLBACK TRANSACTION p1
INSERT Товар (Код_Товара, Название, остаток)
VALUES (6, ‘f’,70)
COMMIT

После завершения транзакции в таблице Товар останутся записи о товарах с кодами:

(1) Код_Товара: 1, 3, 4, 5, 6

(2) Код_Товара: 1, 3, 4, 6

(3) Код_Товара: 3, 4, 6

(4) Код_Товара: 1, 2, 6

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2

3

4

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
GRANT INSERT ON tab
TO UserA

GRANT INSERT ON
tab TO UserB

   
5 INSERT INTO tab values
(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
6 ? ? ? ?

(1)

6 Выполнено Выполнено Отклонено Отклонено

(2)

6 Выполнено Отклонено Выполнено Отклонено

(3)

6 Отклонено Выполнено Отклонено Выполнено

(4)

6 Отклонено Отклонено Выполнено Отклонено

Дан фрагмент сценария VBScript для изменения и выборки данных из таблицы Автор, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject(«ADODB.Connection»)
Set rst=Server.CreateObject(«ADODB.Recordset»)
cn.open «pwd=user1;driver={SQL Server};
server=its; database = basa_user1»
cn.execute «UPDATE Автор
SET Телефон=’23-45-67′ WHERE Фамилия=’Иванов'»
rst.open «SELECT Фамилия, Телефон FROM Автор», cn
do until rst.eof
response.write rst.fields(0)
response.write rst.fields(1)
response.write rst.fields(2)&»<br>»
rst.movenext
loop

Указать правильные ответы.

(1) допущена ошибка в использовании оператора UPDATE

(2) при открытии запроса не указано соединение

(3) при обработке результата число полей не соответствует количеству полей в операторе SELECT

(4) в строке соединения не указан пользователь

Какие из следующих строк можно внести в поле, описанное как VARCHAR(6), чтобы данные хранились без потерь?

(1) Привет

(2) Здравствуйте

(3) 123456

Создана таблица Автор. Изменить тип поля Телефон на символьный и заменить поле Возраст полем Дата_рождения.

CREATE TABLE Автор
(Фамилия VARCHAR(50) NOT NULL,
Пол CHAR(3),
Возраст INT NOT NULL,
Телефон INT )

(1)

ALTER TABLE Автор
ALTER COLUMN Телефон CHAR(10)
ALTER TABLE Автор DROP COLUMN Возраст
ALTER TABLE Автор
ADD Дата_рождения DATETIME

(2)

ALTER TABLE Автор ALTER Телефон CHAR(10)
ALTER TABLE Автор ALTER Возраст DATETIME

(3)

ALTER TABLE Автор
ALTER COLUMN Телефон CHAR(10)
ALTER TABLE Автор DROP Возраст
ALTER TABLE Автор
ADD COLUMN Дата_рождения DATETIME

(4)

ALTER TABLE Автор ALTER Телефон CHAR(10)
ALTER TABLE Автор DROP Возраст
ALTER TABLE Автор
ADD Дата_рождения DATETIME

Дана таблица Автор с полями

Фамилия VARCHAR(50)
Пол CHAR(1)
Дата_рождения DATETIME
Телефон CHAR(9)
Количество_трудов INT
Город VARCHAR(15)

Найти города, в которых живут авторы, родившиеся позже 1 января 1982 года — мужчины, издавшие более 10 книг и имеющие телефон.

(1)

SELECT Город
FROM Автор
WHERE Дата_рождения>’1/1/1982′ AND
Количество_трудов>10 AND Пол=’м’ AND
Телефон is not null

(2)

SELECT Город, Дата_рождения, Количество_трудов
FROM Автор
WHERE Дата_рождения<‘1/1/1982′ AND
Количество_трудов>10 AND
Пол=’м’ AND Телефон=»

(3)

SELECT Город
FROM Автор
WHERE Дата_рождения>’1982/1/1′ OR
Количество_трудов>10 OR
Пол=’м’ AND Телефон not is null

(4)

SELECT DISTINCT Город
FROM Автор
WHERE Дата_рождения>’1/1/1982′ OR
Количество_трудов<10 AND
Пол=’м’ AND NOT Телефон

Даны таблицы Автор и Книга

CREATE TABLE Автор
(Код_Автора INT ,
Фамилия VARCHAR(50),
Пол VARCHAR(50) NOT NULL )

CREATE TABLE Книга
( Код_Книги INT,
Название VARCHAR(50) NOT NULL,
Тематика VARCHAR(50) NOT NULL,
Издательство VARCHAR(50) NOT NULL,
Код_Автора INT NOT NULL)

Вывести список авторов, работающих в жанре «детектив».

(1)

SELECT DISTINCT Автор.Фамилия, Книга.Издательство
FROM Автор INNER JOIN Книга ON
Автор.Код_Автора = Книга.Код_Автора
WHERE Книга.Тематика =’Детектив’

(2)

SELECT DISTINCT Автор.Фамилия, Книга.Издательство
FROM Автор, Книга
WHERE Автор.Код_Автора = Книга.Код_Автора AND
Книга.Тематика =’Детектив’

(3)

SELECT DISTINCT Автор.Фамилия, Книга.Издательство
FROM Автор JOIN Книга ON Автор = Книга
WHERE Книга.Тематика =’Детектив’

Даны таблицы Автор и Книга.

CREATE TABLE Автор
( Код_Автора INT ,
Фамилия VARCHAR(50) NULL)

CREATE TABLE Книга
( Код_Книги INT,
Название VARCHAR(50) NOT NULL,
Цена MONEY,
Издательство VARCHAR(50) NOT NULL,
Код_Автора INT NOT NULL,
Количество INT)

Книги каких авторов были проданы на сумму, превышающую 10000 руб.?

(1)

SELECT Автор.Фамилия,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия
HAVING Sum(Книга.Цена*Книга.Количество)>10000

(2)

SELECT Автор.Фамилия,
Стоимость =Sum(Книга.Цена*Книга.Количество)
FROM Книга
INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия
WHERE Sum(Книга.Цена*Книга.Количество)>10000

(3)

SELECT Автор.Фамилия,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
HAVING Sum(Книга.Цена*Книга.Количество)>10000

Даны таблицы Автор и Книга.

CREATE TABLE Автор
( Код_Автора INT ,
Фамилия VARCHAR(50))

CREATE TABLE Книга
( Код_Книги INT,
Название VARCHAR(50) NOT NULL,
Цена MONEY,
Издательство VARCHAR(50) NOT NULL,
Код_Автора INT NOT NULL,
Количество INT)

Определить авторов, чьи какие-либо книги проданы в наименьшем количестве.

(1)

SELECT Автор.Фамилия, Книга.Количество
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Количество=
(SELECT Min(Книга.Количество)
FROM Книга)

(2)

SELECT Автор.Фамилия, Книга.Количество
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Количество <=
ALL(SELECT Книга.Количество
FROM Книга)

(3)

SELECT Автор.Фамилия, Книга.Количество
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Количество =
Min(Книга. Количество)

(4)

SELECT Автор.Фамилия, Книга. Количество
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
WHERE Книга.Количество =
Min(SELECT Книга.Количество
FROM Книга)

Даны таблицы Автор и Книга. Удалить сведения об авторах, издавших только одну книгу.

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)

Даны таблицы Автор и Книга. Между ними необходимо установить связь «один-ко-многим» (один автор — много книг).

CREATE TABLE Автор
( Паспорт CHAR(20) PRIMARY KEY,
Фамилия VARCHAR(50),
Пол CHAR(3),
Телефон CHAR(12))

CREATE TABLE Книга
( УДК CHAR(20) PRIMARY KEY,
Название VARCHAR(50),
Цена MONEY,
Тематика VARCHAR(50),
Издательство VARCHAR(50),
Автор CHAR(20))

(1)

ALTER TABLE Книга
ADD CONSTRAINT fk_Книга
FOREIGN KEY(Автор)
REFERENCES Автор(паспорт)

(2)

ALTER TABLE Книга
ADD FOREIGN KEY(Паспорт) REFERENCES Автор

(3)

ALTER TABLE Автор
ADD FOREIGN KEY(Паспорт) REFERENCES Книга

(4)

ALTER TABLE Книга
ADD FOREIGN KEY(Автор) REFERENCES Автор(Телефон)

Дано представление.

CREATE VIEW view4
AS
SELECT Книга.Название, Книга.Издательство,
Автор.Фамилия
FROM Автор INNER JOIN Книга ON
Автор.Код_Автора = Книга.Код_Автора

Предпринимается попытка удалить из представления запись.

DELETE FROM view4
WHERE Фамилия=’Л.Толстой’

Результатом выполнения команды является следующее:

(1) из таблиц Автор и Книга будут удалены соответствующие записи

(2) запись будет удалена только из таблицы Автор

(3) данные из представления view4 будут успешно удалены

(4) команда не будет выполнена

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

(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

В базе данных basa1 имеется таблица Книга. Содержащуюся в ней информацию необходимо прочитать из базы данных basa2. В какой базе данных должна быть создана процедура, и как можно ее выполнить?

(1)

Создание процедуры

USE basa2
CREATE PROC my_proc
AS
SELECT * FROM basa1.dbo.Книга

Вызов процедуры

USE basa2
EXEC my_proc

(2)

Создание процедуры

USE basa1
CREATE PROC my_proc
AS
SELECT * FROM basa1.dbo.Книга

Вызов процедуры

USE basa2
EXEC basa1.my_proc

(3)

Создание процедуры

USE basa1
CREATE PROC my_proc
AS
SELECT * FROM basa1.dbo.Книга

Вызов процедуры

USE basa2
EXEC my_proc

(4)

Создание процедуры

USE basa2
CREATE PROC my_proc
AS
SELECT * FROM basa1.dbo.Книга

Вызов процедуры

USE basa1
EXEC basa1.my_proc

Пусть в таблице Книга представлены записи, значения поля Код_Книги в которых равны 1, 3, 4, 7, 9 и 10. Создан курсор для вывода списка книг издательства «Мир».

DECLARE @n VARCHAR(50),
@iz VARCHAR(50),
@p MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ‘ Список клиентов’
DECLARE cursor1 CURSOR GLOBAL SCROLL KEYSET FOR
SELECT Название, Издательство, Цена
FROM Книга
WHERE Издательство=’Мир’

OPEN cursor1
SET @cur1=cursor1
FETCH ABSOLUTE 3 FROM cursor1 INTO @n, @iz, @p
DELETE Книга
WHERE CURRENT OF @cur1
FETCH RELATIVE -2 FROM cursor1 INTO @n, @iz, @p
UPDATE Книга SET Цена=Цена*1.5
WHERE CURRENT OF cursor1

SELECT @message=’Книга ‘+@n+’ Цена ‘+
CAST(@p AS VARCHAR(4))
PRINT @message
CLOSE cursor1
DEALLOCATE cursor1

Какие действия выполнит система?

(1) успешно удаляется запись, где Код_Книги=3, и изменяется запись, где Код_Книги=4

(2) успешно удаляется запись, где Код_Книги=4, и изменяется запись, где Код_Книги=1

(3) делается попытка удалить несуществующую запись

(4) объявление курсора не позволяет изменять и удалять записи

Дана таблица Книга. Разработать триггер, который выполняется вместо изменения цены одной книги в этой таблице. Изменение цены выполнить только в том случае, если книга издается в издательстве ‘Мир’.

CREATE TRIGGER trig_upd
ON Книга INSTEAD OF UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @kod INT,
      @k VARCHAR(20),
      @p MONEY
SELECT @kod=Код_Книги, @k=издательство, @p=цена
FROM inserted
IF @k=’Мир’
   UPDATE Книга SET цена=@p
   WHERE Код_Книги=@kod

(2)

IF EXISTS(SELECT издательство FROM inserted
WHERE издательство=’Мир’)

   UPDATE Книга SET цена=(
SELECT цена FROM inserted
   WHERE Код_Книги=(SELECT Код_Книги FROM inserted))

(3)

IF inserted.издательство=’Мир’
   UPDATE Книга SET цена=inserted.цена
   WHERE Код_Книги=inserted.Код_Книги

(4)

IF EXISTS (SELECT * FROM inserted
WHERE издательство=’Мир’)
   UPDATE Книга SET цена=inserted.цена
   WHERE Код_Книги=inserted.Код_Книги

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL READ
UNCOMMITTED

BEGIN TRANSACTION TRA
1.SELECT * FROM Товар

3.UPDATE Товар SET
остаток=остаток+10 WHERE Код_Товара=4

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION
LEVEL REPEATABLE READ

BEGIN TRANSACTION TRB

2.DELETE FROM Товар WHERE
Код_Товара=4

4.SELECT * FROM Товар
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие заблокирует?

(1)

1 2 3 4
Выполняется Выполняется Блокируется Выполняется

(2)

1 2 3 4
Блокируется Выполняется Выполняется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

9

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'

sp_addrolemember
'role1','UserC'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA
WITH GRANT
OPTION

REVOKE INSERT ON
tab
TO role1

GRANT INSERT ON
tab TO UserB

   
10 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
11 ? ? ? ?

(1)

11 Выполнено Выполнено Выполнено Отклонено

(2)

11 Выполнено Отклонено Отклонено Отклонено

(3)

11 Отклонено Выполнено Отклонено Выполнено

(4)

11 Выполнено Выполнено Выполнено Выполнено

Дан фрагмент Java-программы для удаления и выборки данных из таблицы Автор, расположенной в источнике данных с именем DSN=mystud.

Class.forName(«sun.jdbc.odbc.JdbcOdbcDriver»);
Connection myCon= DriverManager.getConnection(
«jdbc:odbc:mystud»,»user1″,»user1″);
Statement mySt=myCon.createStatement();
int res=mySt.executeUpdate(«DELETE FROM Автор
WHERE Фамилия=’Иванов’»);
ResultSet rs=mySt.executeQuery(«SELECT Фамилия,
Телефон, Дата_рождения FROM Автор «);
while (rs.next()) {
String var1=rs.getString(1);
String var2=rs.getString(2);
String var3=rs.getString(3);

}

Указать правильные ответы.

(1) при выборке данных из результата запроса количество полей не соответствует количеству полей в операторе SELECT

(2) в цикле обработки результата запроса нет перехода на новую запись

(3) поля в операторе SELECT не соответствуют по типу значениям, которые выбираются из результата запроса

(4) ошибок нет

Какие из следующих описаний типов являются правильными?

(1) DECIMAL(5,5)

(2) NUMERIC(3,8)

(3) INT(14,3)

(4) FLOAT

Дана таблица Автор. Вывести в алфавитном порядке фамилии авторов из Самары, в телефонном номере которых на первом или третьем месте стоит цифра от 5 до 8, а последними являются цифры 7 и 8.

(1)

SELECT Фамилия, Город, Телефон
FROM Автор
WHERE Город=’Самара’ AND
(Телефон Like ‘[5-8]%’ Or
Телефон Like ‘__[5-8]%’)
And Телефон Like ‘%[7][8]’
ORDER BY Фамилия

(2)

SELECT Фамилия, Город, Телефон
FROM Автор
WHERE Город=’Самара’ AND
Телефон Like ‘[5,6,7,8]%’ Or
Телефон Like ‘[5_6_7_8]%’
And Телефон Like ‘%[7][8]’
ORDER BY Фамилия

(3)

SELECT Фамилия, Город, Телефон
FROM Автор
WHERE Город=’Самара’ AND
(Телефон Like ‘%[5-8]%’ AND
Телефон Like ‘%%%[5_8]%’)
And Телефон Like ‘%[7][8]’
ORDER BY Фамилия

(4)

SELECT Фамилия, Город, Телефон
FROM Автор
WHERE Город=’Самара’ OR
(Телефон Like ‘_[5-8]%’ AND
Телефон Like ‘__[5-8]%’)
OR Телефон Like ‘%[7][8]’
ORDER BY Фамилия

Вывести список авторов-женщин, работающих в жанре романа, но не в жанре фантастики.

CREATE TABLE Автор
(Код_Автора INT ,
Фамилия VARCHAR(50),
Пол VARCHAR(50) NOT NULL )

CREATE TABLE Книга
( Код_Книги INT,
Название VARCHAR(50) NOT NULL,
Тематика VARCHAR(50) NOT NULL,
Издательство VARCHAR(50) NOT NULL,
Код_Автора INT NOT NULL)

(1)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор
WHERE Автор.Пол=’ж’ AND
Автор.Код_Автора IN (SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Тематика=’Роман’) AND
Автор.Код_Автора NOT IN (SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Тематика=’Фантастика’)

(2)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор
WHERE Автор.Пол=’ж’ AND
Автор.Код_Автора IN (SELECT Книга.Код_Автора
FROM Книга
WHERE Книга.Тематика=’Роман’ AND
Книга.Тематика<>’Фантастика’)

(3)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор
WHERE Автор.Пол=’ж’ AND
Книга.Тематика=’Роман’ AND
Книга.Тематика=’Фантастика’

(4)

SELECT Автор.Фамилия, Автор.Код_Автора
FROM Автор,Книга
WHERE Автор.Пол=’ж’ AND
Автор.Код_Автора= Книга.Код_Автора AND
Книга.Тематика=’Роман’ AND
(Книга.Тематика<>’Фантастика’)

В каком количестве и на какую сумму издавал свои книги автор Борисов в каждом издательстве?

(1)

SELECT Sum(Книга.Количество) AS Общее_Количество,
Sum(Книга.Цена*Книга.Количество) AS Общ_Стоимость,
Книга.Издательство
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Книга.Издательство, Автор.Фамилия
HAVING Автор.Фамилия=’Борисов’

(2)

SELECT Sum(Книга.Количество) AS Общее_Количество,
Sum(Книга.Цена*Книга.Количество) AS Общ_Стоимость,
Книга.Издательство
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Книга.Издательство
HAVING Автор.Фамилия=’Борисов’

(3)

SELECT Sum(Книга.Количество) AS Общее_Количество,
Sum(Цена*Количество) AS Общ_Стоимость,
Книга.Издательство
FROM Книга INNER JOIN Автор ON
Книга.Код_Автора = Автор.Код_Автора
GROUP BY Автор.Фамилия
HAVING Автор.Фамилия=’Борисов’

Определить издательства, выручившие от продажи книг наименьшую сумму.

(1)

SELECT Книга.Издательство,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга
GROUP BY Книга.Издательство
HAVING Sum(Книга.Цена*Книга.Количество)<=ALL(
      SELECT Sum(Книга.Цена*Книга.Количество)
      FROM Книга
      GROUP BY Книга.Издательство)

(2)

SELECT Книга.Издательство,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга
HAVING Sum(Книга.Цена*Книга.Количество)<=ALL(
      SELECT Sum(Книга.Цена*Книга.Количество)
      FROM Книга
      GROUP BY Книга.Издательство)

(3)

SELECT Книга.Издательство,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга
GROUP BY Книга.Издательство
WHERE Sum(Книга.Цена*Книга.Количество)<=ALL(
      SELECT Sum(Книга.Цена*Книга.Количество)
      FROM Книга
      GROUP BY Книга.Издательство)

(4)

SELECT Книга.Издательство,
Sum(Книга.Цена*Книга.Количество) AS Стоимость
FROM Книга
GROUP BY Книга.Издательство
HAVING Sum(Книга.Цена*Книга.Количество)<=ALL(
Sum(Книга.Цена*Книга.Количество)
      FROM Книга
      GROUP BY Книга.Издательство)

Увеличить на 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 Книга)

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

(1)

ALTER TABLE Автор
ADD CONSTRAINT ch1 CHECK(
пол IN (‘м’, ‘ж’, ‘муж’, ‘жен’))

(2)

ALTER TABLE Автор
ADD CHECK(пол IN (‘м’, ‘ж’, ‘муж’, ‘жен’))

(3)

ALTER TABLE Автор
ALTER пол VARCHAR(3) CHECK(
пол IN (‘м’,’ж’,’муж’,’жен’))

Каковы основные функции СУБД?

(1) создание и уничтожение БД

(2) хранение данных

(3) выборка данных по требованию пользователя

Дано представление.

CREATE VIEW view1
AS
SELECT Номер_рейса, Стоимость, Дата_вылета
FROM Рейс
WHERE Конечный_пункт=’Москва’
WITH CHECK OPTION

Предпринимается попытка выполнить команду вставки данных в представление.

INSERT INTO view1(
Номер_рейса, Стоимость, Дата_вылета)
VALUES (2367,1459.00,’12/09/03′)

Результатом выполнения команды (при отсутствии каких-либо ограничений при создании таблицы) является следующее:

(1) в таблицу Рейс будет добавлена запись

Номер_рейса Стоимость Дата_вылета Конечный_пункт
2367 1459.00 12/09/03 Москва

(2) в таблицу Рейс будет добавлена запись

Номер_рейса Стоимость Дата_вылета Конечный_пункт
2367 1459.00 12/09/03 NULL

(3) данные в представление view1 будут успешно добавлены

(4) команда не будет выполнена

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

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=’Москва’

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

CREATE PROC my_proc1
@p FLOAT,
@c VARCHAR(20)
AS
UPDATE Рейс SET Стоимость = Стоимость*(1+@p)
WHERE Конечный_пункт=@c

Определите правильную команду для выполнения процедуры.

(1)

EXEC my_proc1 0.2,’Москва’

(2)

EXEC my_proc1 ‘Москва’, 0.2

(3)

EXEC my_proc1 0.2,@с=’Москва’

(4)

EXEC my_proc1 @c=’Москва’,@p=0.3

Разработан курсор для вывода списка рейсов до Москвы.

DECLARE @n INT,
@k VARCHAR(50),
@p MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ‘ Список рейсов’
DECLARE cursor1 CURSOR FOR
SELECT Номер_рейса, Стоимость, Конечный_пункт
FROM Рейс
WHERE Конечный_пункт=»Москва»

OPEN cursor1
SET @cur1=cursor1
FETCH NEXT FROM cursor1 INTO @p, @n, @k
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @message=’Рейс ‘+
CAST(@n AS VARCHAR(20))+
‘ Стоимость ‘+ CAST(@p AS VARCHAR(4))
PRINT @message
FETCH NEXT FROM cursor1 INTO @p, @n, @k
END
DEALLOCATE cursor1
CLOSE cursor1

Укажите правильные ответы.

(1) курсор написан без ошибок

(2) в операторе FETCH порядок следования переменных не соответствует полям оператора SELECT в объявлении курсора

(3) освобождение ресурсов производится до закрытия курсора, что недопустимо

(4) переприсваивание открытого курсора (оператор SET) недопустимо

Даны таблицы Рейс и Билет. Создать триггер, обрабатывающий вставку одной записи в таблицу Билет. При этом в таблице Рейс должно уменьшиться число свободных мест для соответствующего рейса.

CREATE TRIGGER trig_ins
ON Билет FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @r INT
SELECT @r=Номер_рейса
FROM inserted
UPDATE Рейс SET число_мест=число_мест-1
WHERE Номер_рейса=@r

(2)

UPDATE Рейс
SET число_мест=число_мест-1
WHERE Номер_рейса=inserted.Номер_рейса

(3)

UPDATE Рейс
SET число_мест=число_мест-1
WHERE Номер_рейса=(
SELECT Номер_рейса FROM inserted)

(4)

UPDATE Рейс
SET число_мест=число_мест-1
WHERE Рейс.Номер_рейса=(
SELECT Номер_рейса FROM inserted)

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, —номер работы
нач_соб INT, —начальное событие
кон_соб INT, —конечное событие
длит INT) —длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1».

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

CREATE TRIGGER trig_ins
ON Граф FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

IF EXISTS(SELECT * FROM inserted
      WHERE нач_соб>кон_соб)
ROLLBACK TRAN

(2)

IF (SELECT * FROM inserted
WHERE нач_соб>кон_соб)
ROLLBACK TRAN

(3)

IF inserted.нач_соб>inserted.кон_соб)
ROLLBACK TRAN

(4)

IF NOT EXISTS(SELECT * FROM inserted
      WHERE нач_соб<=кон_соб)
ROLLBACK TRAN

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN
SAVE TRANSACTION p1
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, ‘a’,10)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, ‘b’,20)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, ‘c’,30)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, ‘d’,40)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (5, ‘e’,50)

SAVE TRANSACTION p2
DELETE FROM Товар WHERE Код_Товара=4
SAVE TRANSACTION p3
UPDATE Товар SET Название =’g’ WHERE Код_Товара=2
SAVE TRANSACTION p4
DELETE FROM Товар
WHERE Код_Товара<>1 AND Код_Товара<>4
ROLLBACK TRANSACTION p3
INSERT Товар (Код_Товара, Название, остаток)
VALUES (6, ‘f’,70)
ROLLBACK TRANSACTION p2
DELETE FROM Товар WHERE Код_Товара=3

COMMIT

После завершения транзакции в таблице Товар останутся товары с названиями:

(1) Названия: ‘a’, ‘g’, ‘e’

(2) Названия: ‘a’, ‘g’, ‘c’, ‘e’

(3) Названия: ‘f’, ‘b’, ‘c’, ‘e’, ‘f’

(4) Названия: ‘a’, ‘b’, ‘d’, ‘e’

В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?

Basa_user
Администратор UserA UserB
GRANT ALL TO UserA GRANT ALL TO UserB

CREATE TABLE tab
(id_t INT PRIMARY KEY,
nam_t VARCHAR(20))

 
INSERT INTO userA.tab values
(1,'aa')
INSERT INTO tab values (2,'bb') SELECT * FROM
userA.tab
? ? ?

(1)

Выполнено Выполнено Отклонено

(2)

Отклонено Выполнено Выполнено

(3)

Отклонено Выполнено Отклонено

(4)

Выполнено Выполнено Выполнено

Дан фрагмент сценария VBScript для выборки данных из таблицы Рейс, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject(«ADODB.Connection»)
Set rst=Server.CreateObject(«ADODB.Recordset»)
cn.open uid=user1;pwd=user1;driver={SQL Server};
server=its; database = basa_user1
rst.open «SELECT Конечный_пункт,
Дата_вылета, Продолжительность_маршрута FROM Рейс»
do until rst.eof
response.write rst.fields(0)
response.write rst.fields(1)
response.write rst.fields(2)&»<br>»
rst.movenext
loop

Указать правильные ответы.

(1) при открытии запроса не указано соединение

(2) при обработке результата число полей не соответствует количеству полей в операторе SELECT

(3) в строке соединения не указан пользователь

Пусть номер страхового пенсионного свидетельства состоит из 11 цифр, разделенных знаками «-«, например: 063-840-013-82. Укажите правильный тип данных для его описания.

(1) Пенс_свидетельство CHAR(14)

(2) Пенс.свид. CHAR(14)

(3) Пенс_свид FLOAT

(4) Pens_svid INT(11)

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 %.

CREATE DATABASE basa1
ON PRIMARY
( NAME=b1, FILENAME=’D:user’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),
(NAME=b2, FILENAME=’D:userb2’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%)
LOG ON
(NAME=l1, FILENAME=’E:user11’,
SIZE=50MB, MAXSIZE=100, FILEGROWTH=10%)

Выберите правильный ответ.

(1) база данных будет успешно создана

(2) неправильно указано физическое имя базы данных

(3) неправильно указано логическое имя базы данных

(4) неправильно определен размер базы данных

Пусть дана таблица Рейс с полями

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Число_билетов INT
Стоимость MONEY

Вывести список рейсов, продолжительность маршрутов которых не более 500 км и не менее 100 км, а стоимость билета — от 800 до 1500 руб.

(1)

SELECT Номер_рейса, Продолжительность_маршрута,
Стоимость
FROM Рейс
WHERE Продолжительность_маршрута>=100
And Продолжительность_маршрута<=500 AND
Стоимость>=800 And Стоимость<=1500

(2)

SELECT Номер_рейса, Продолжительность_маршрута,
Стоимость
FROM Рейс
WHERE Продолжительность_маршрута>=100
And Продолжительность_маршрута<500 OR
Стоимость>=800 And Стоимость<=1500

(3)

SELECT Номер_рейса, Продолжительность_маршрута,
Стоимость
FROM Рейс
WHERE (Продолжительность_маршрута Between 100
And 500) AND (Стоимость Between 800 And 1500)

(4)

SELECT Номер_рейса, Продолжительность_маршрута,
Стоимость
FROM Рейс
WHERE Продолжительность_маршрута Between
100 OR 500 AND Стоимость Between 800 OR 1500

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса INT,
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Вывести номера мест и дату продажи билетов на рейсы до Москвы.

(1)

SELECT Билет.Номер_места, Билет.Дата_продажи
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт=’Москва’

(2)

SELECT Билет.Номер_места, Билет.Дата_продажи
FROM Билет, Рейс
WHERE Билет.Номер_рейса = Рейс.Номер_рейса AND
Рейс.Конечный_пункт=’Москва’

(3)

SELECT Билет.Номер_места, Билет.Дата_продажи
FROM Билет JOIN Рейс ON
Номер_рейса = Номер_рейса
WHERE Рейс.Конечный_пункт=’Москва’

(4)

SELECT Билет.Номер_места, Билет.Дата_продажи
FROM Билет INNER Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
AND Рейс.Конечный_пункт=’Москва’

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса CHAR(6),
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Рассчитать общую стоимость билетов для рейса, 5% налог с продаж и общий доход рейса.

(1)

SELECT Номер_рейса,
Стоимость*Число_билетов AS Общ_стоимость,
Стоимость*Число_билетов*0.05 AS Налог,
Стоимость*Число_билетов*0.95 AS Доход
FROM Рейс

(2)

SELECT Номер_рейса,
Стоимость*Число_билетов AS Общ_стоимость,
Общ_стоимость*0.05 AS Налог,
Общ_стоимость*0.95 AS Доход
FROM Рейс

(3)

SELECT Номер_рейса,
Общ_стоимость =Стоимость*Число_билетов,
Налог =Общ_стоимость*0.05,
Доход =Общ_стоимость*0.95
FROM Рейс

(4)

SELECT Номер_рейса,
@s=Стоимость*Число_билетов,
@n=Стоимость*Число_билетов*0.05,
@d=Стоимость*Число_билетов*0.95
FROM Рейс

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса INT,
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Определить список пассажиров, покупающих билеты на самые дальние рейсы.

(1)

SELECT Билет.Фамилия_пассажира,
Рейс.Продолжительность_маршрута
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Рейс.Продолжительность_маршрута=
(SELECT Max(Рейс.Продолжительность_маршрута)
FROM Рейс)

(2)

SELECT Билет.Фамилия_пассажира,
Рейс.Продолжительность_маршрута
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Рейс.Продолжительность_маршрута=
MAX(Рейс.Продолжительность_маршрута)

(3)

SELECT Билет.Фамилия_пассажира,
Рейс.Продолжительность_маршрута
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Рейс.Продолжительность_маршрута=
MAX(SELECT Рейс.Продолжительность_маршрута
FROM Рейс)

(4)

SELECT Билет.Фамилия_пассажира,
Рейс.Продолжительность_маршрута
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Рейс.Продолжительность_маршрута>=
ALL(SELECT Рейс.Продолжительность_маршрута
FROM Рейс)

Дана таблица Билет с полями:

номер_места 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)

Даны две таблицы. Определить в них первичные ключи.

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(20),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE Билет
(Номер_места INT,
Номер_рейса INT,
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(30))

(1)

ALTER TABLE Рейс
ALTER COLUMN Номер_рейса INT NOT NULL
ALTER TABLE Рейс
ADD CONSTRAINT pk1 PRIMARY KEY (Номер_рейса)

ALTER TABLE Билет
ALTER COLUMN Номер_места INT NOT NULL
ALTER TABLE Билет
ALTER COLUMN Номер_рейса INT NOT NULL
ALTER TABLE Билет
ADD CONSTRAINT pk2 PRIMARY KEY (Номер_рейса, Номер_места)

(2)

ALTER TABLE Рейс
ALTER COLUMN Номер_рейса INT NOT NULL
ALTER TABLE Рейс
ADD CONSTRAINT pk1 PRIMARY KEY (Номер_рейса)

ALTER TABLE Билет
ALTER COLUMN Номер_места INT NOT NULL
ALTER TABLE Билет
ADD CONSTRAINT pk2 PRIMARY KEY (номер_места)

(3)

ALTER TABLE Рейс
ALTER COLUMN Номер_рейса INT NOT NULL
ALTER TABLE Рейс
ADD CONSTRAINT pk1 PRIMARY KEY (Номер_рейса)

ALTER TABLE Билет
ALTER COLUMN Номер_места INT NOT NULL
ALTER TABLE Билет
ALTER COLUMN Номер_рейса INT NOT NULL
ALTER TABLE Билет
ADD CONSTRAINT pk2 PRIMARY KEY (Номер_рейса)
ALTER TABLE Билет
ADD CONSTRAINT pk2 PRIMARY KEY (Номер_места)

(4)

ALTER TABLE Рейс
ALTER COLUMN Номер_рейса INT NOT NULL
ALTER TABLE Рейс
ADD PRIMARY KEY (Номер_рейса)

ALTER TABLE Билет
ALTER COLUMN Номер_места INT NOT NULL
ALTER TABLE Билет
ALTER COLUMN Номер_рейса INT NOT NULL
ALTER TABLE Билет
ADD PRIMARY KEY (Номер_рейса, Номер_места)

На какое представление данных ориентирован язык SQL?

(1) на логически связанные совокупности отношений

(2) на логические записи файлов

(3) на физические записи на магнитном носителе

(4) на физические записи с указателями связей

Дано представление с вычислениями.

CREATE VIEW view2
AS
SELECT Номер_рейса, Конечный_пункт,
Стоимость, Стоимость*0.05 AS Налог
FROM Рейс
WHERE Рейс.Стоимость>100

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Стоимость = Стоимость *1.5
WHERE Конечный_пункт=’Москва’

Результатом выполнения команды является следующее:

(1) в таблице Рейс будет изменена стоимость билетов до Москвы дороже 100 руб

(2) в таблице Рейс будет изменена стоимость всех билетов до Москвы

(3) команда не будет выполнена

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

(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()

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

CREATE PROC my_proc2
@c VARCHAR(20),
@m INT,
@k INT OUTPUT
AS
SELECT @k=Count(Билет.Фамилия_пассажира)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Рейс.Конечный_пункт,
Month(Рейс.Дата_вылета)
HAVING Рейс.Конечный_пункт=@c AND
Month(Рейс.Дата_вылета)=@m

Укажите правильный вызов процедуры

(1)

DECLARE @st INT
EXEC my_proc2 ‘Москва’,2,@st OUTPUT
SELECT @st

(2)

DECLARE @st INT
EXEC my_proc2 3,’Москва’,@st OUTPUT
SELECT @st

(3)

DECLARE @st INT
EXEC my_proc2 @c=’Москва’,@m=2,@k=@st OUTPUT
SELECT @st

(4)

DECLARE @st INT
EXEC my_proc2 ‘Москва’,@m=2,@st OUTPUT
SELECT @st

Разработана процедура, возвращающая список номеров рейсов до Москвы.

CREATE PROC my_proc
@cur CURSOR VARYING OUTPUT
AS
SET @cur=CURSOR FORWARD_ONLY STATIC FOR
SELECT Номер_рейса, Стоимость, Конечный_пункт
FROM Рейс
WHERE Конечный_пункт=»Москва»
OPEN @cur

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

DECLARE @my_cur CURSOR
DECLARE @n INT
EXEC my_proc @cur=@my_cur OUTPUT
WHILE (@@FETCH_STATUS=0)
BEGIN
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
END
CLOSE @my_cur
DEALLOCATE @my_cur

Укажите правильный ответ.

(1) ошибок ни в процедуре, ни в ее вызове нет

(2) процедура создана правильно. При вызове процедуры в обработке курсора отсутствует оператор установки на первую запись в курсоре

(3) в процедуре не следует открывать курсор. Он должен быть открыт при вызове процедуры

(4) процедура создана правильно. При вызове процедуры для обработки курсора в операторе INTO список переменных не соответствует полям оператора SELECT в создании курсора в процедуре

Даны таблицы Рейс и Билет. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление записи о некотором рейсе из таблицы Рейс. При этом из таблицы Билет необходимо удалить записи обо всех билетах, проданных на этот рейс.

CREATE TRIGGER trig_del
ON Рейс FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @r INT
SELECT @r=Номер_рейса
FROM deleted
DELETE FROM Билет
WHERE Номер_рейса=@r

(2)

DELETE FROM Билет
WHERE Номер_рейса=deleted.Номер_рейса

(3)

DELETE FROM Билет
WHERE Номер_рейса=(SELECT Номер_рейса
      FROM deleted)

(4)

DELETE FROM Билет
WHERE Номер_рейса=(SELECT Номер_рейса
    FROM deleted
    WHERE Рейс.Номер_рейса=deleted.Номер_рейса)

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, —номер работы
нач_соб INT, —начальное событие
кон_соб INT, —конечное событие
длит INT) —длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой «1».

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

CREATE TRIGGER trig_del
ON Граф FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e INT,@n INT
SELECT @n=номер, @e=нач_соб FROM deleted
IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер<>@n AND нач_соб=@e )
ROLLBACK TRAN

(2)

DECLARE @e INT,@n INT
SELECT @n=номер, @e=нач_соб FROM deleted
IF EXISTS(SELECT *
      FROM Граф
      WHERE номер<>@n AND нач_соб<>@e )
ROLLBACK TRAN

(3)

   IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер<>deleted.номер AND
нач_соб=deleted.нач_соб )
   ROLLBACK TRAN

(4)

   IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер<> (SELECT номер FROM deleted)
      AND нач_соб=(SELECT нач_соб FROM deleted))
   ROLLBACK TRAN

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN A
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, ‘v’,40)
BEGIN TRAN B
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, ‘n’,50)
BEGIN TRAN C
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, ‘m’,60)
ROLLBACK TRAN B
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, ‘k’,70)
COMMIT

После завершения транзакции в таблице Товар останутся товары с кодами:

(1) Код_Товара: 1, 4

(2) Код_Товара: 4

(3) Код_Товара: 1, 2, 4

(4) Код_Товара: 1, 2, 3, 4


В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2

3

4

5

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
GRANT INSERT, SELECT
ON tab TO UserA
WITH GRANT OPTION
GRANT INSERT ON tab
TO UserC

REVOKE INSERT ON tab
TO UserA CASCADE

GRANT SELECT,
INSERT ON tab TO
UserB

   
6 INSERT INTO tab(1,'aa') INSERT INTO
tab(2,'bb')
SELECT * FROM
tab
INSERT INTO
tab(4,'bb')
7 ? ? ? ?

(1)

7 Выполнено Отклонено Выполнено Выполнено

(2)

7 Выполнено Отклонено Выполнено Отклонено

(3)

7 Отклонено Выполнено Отклонено Выполнено

(4)

7 Отклонено Отклонено Выполнено Отклонено

Дан фрагмент Java-программы для выборки данных из таблицы Рейс, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection myCon= DriverManager.getConnection(
"jdbc:odbc:mystud","user1","user1");
Statement mySt=myCon.createStatement();
ResultSet rs=mySt.executeQuery(
"SELECT Конечный_пункт, Дата_вылета,
Продолжительность_маршрута FROM Рейс ");
while {
String var1=rs.getString(1);
String var2=rs.getString(2);
int var3=rs.getInt(3);
rs.next();
...
}

Указать правильные ответы.

(1) при выборке данных из результата запроса число полей не соответствует количеству полей в операторе SELECT

(2) в цикле обработки результата запроса неправильно указан переход на новую запись

(3) поля в операторе SELECT не соответствуют по типу значениям, которые выбираются из результата запроса

(4) ошибок нет

Какое из следующих чисел можно внести в поле, описанное как NUMERIC(5,3)?

(1) 16.245

(2) 123.42

(3) -145.34

(4) 1678.9

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

(1)

Номер_рейса INT NOT NULL
Конечный_пункт VARCHAR(30)
Дата_вылета DATETIME NOT NULL
Продолжительность_маршрута FLOAT
Число_мест INT
Стоимость_билета MONEY

(2)

Номер_рейса INT NOT NULL
Конечный_пункт VARCHAR(30)
Дата_вылета DECIMAL(8,4) NOT NULL
Продолжительность_маршрута DATETIME
Число_мест INT
Стоимость билета MONEY

(3)

Номер_рейса INT NOT NULL
Конечный_пункт INT
Дата_вылета DATETIME NOT NULL
Продолжительность маршрута DATETIME
Число_мест DECIMAL(3,6)
Стоимость_билета INT

(4)

Номер_рейса INT NOT NULL
Конечный_пункт VARCHAR(30)
Дата_вылета DATETIME NOT NULL
Продолжительность_маршрута DATETIME
Число_мест INT
Стоимость_билета NUMERIC(3,4)

Пусть дана таблица Рейс.

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Число_билетов INT
Стоимость MONEY

Вывести номера рейсов до Москвы с датой вылета не позднее 8 марта, но не ранее 1 марта.

(1)

SELECT Номер_рейса, Конечный_пункт, Дата_вылета
FROM Рейс
WHERE Конечный_пункт='Москва' AND
Дата_вылета>='3/1/2004' And
Дата_вылета<='3/8/2004'

(2)

SELECT Номер_рейса, Конечный_пункт, Дата_вылета
FROM Рейс
WHERE Конечный_пункт='Москва' OR
Дата_вылета>='3/1/2004' And
Дата_вылета<='3/8/2004'

(3)

SELECT Номер_рейса, Конечный_пункт, Дата_вылета
FROM Рейс
WHERE Конечный_пункт='Москва' AND
Дата_вылета>='3/1/2004' OR
Дата_вылета<='3/8/2004'

(4)

SELECT Номер_рейса, Конечный_пункт, Дата_вылета
FROM Рейс
WHERE Конечный_пункт='Москва' AND
(Дата_вылета>='3/1/2004' OR
Дата_вылета<='3/8/2004')

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT)

CREATE TABLE БИЛЕТ
(Номер_места INT,
Номер_рейса INT,
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Вывести список рейсов, на которые не были проданы билеты.

(1)

SELECT Рейс.Номер_рейса, Билет.Номер_места
FROM Билет RIGHT JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Билет.Номер_места Is Null

(2)

SELECT Рейс.Номер_рейса, Билет.Номер_места
FROM Билет LEFT JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Билет.Номер_места Is Null

(3)

SELECT Рейс.Номер_рейса, Билет.Номер_места
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Билет.Номер_места Is Null

(4)

SELECT Рейс.Номер_рейса, Билет.Номер_места
FROM Билет, Рейс
WHERE Билет.Номер_рейса = Рейс.Номер_рейса
AND Билет.Номер_места Is Null

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса CHAR(6),
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Определить количество проданных на каждый рейс билетов.

(1)

SELECT Рейс.Номер_рейса,
Count(Билет.Фамилия_пассажира) AS Кол_пассажиров
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
GROUP BY Рейс.Номер_рейса

(2)

SELECT Рейс.Номер_рейса,
Кол_пассажиров= Count(Билет.Фамилия_пассажира)
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
GROUP BY Рейс.Номер_рейса

(3)

SELECT Рейс.Номер_рейса,
Count(Билет.Фамилия_пассажира) AS Кол_пассажиров
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса

(4)

SELECT Номер_рейса,
Count(Фамилия_пассажира) AS Кол_пассажиров
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
GROUP BY Номер_рейса

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса CHAR(6),
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Вывести список пассажиров, не летающих в Самару.

(1)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Фамилия_пассажира NOT IN
(SELECT Билет.Фамилия_пассажира
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Рейс.Конечный_пункт="Самара")

(2)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет, Рейс
WHERE Рейс.Конечный_пункт<>"Самара"

(3)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Рейс.Конечный_пункт<>"Самара"

(4)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE NOT EXISTS (SELECT Билет.Фамилия_пассажира
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Рейс.Конечный_пункт="Самара")

Дана таблица Билет с полями:

номер_места 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

Даны таблицы Рейс и Билет.

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(20),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE Билет
(Номер_места INT,
Номер_рейса INT,
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(30))

Между ними необходимо установить связь "один-ко-многим" (один рейс - много мест) с учетом первичных ключей.

(1)

ALTER TABLE Билет
ADD CONSTRAINT fk_Билет
FOREIGN KEY(номер_рейса) REFERENCES Рейс

(2)

ALTER TABLE Билет
ADD FOREIGN KEY(Номер_рейса) REFERENCES Рейс

(3)

ALTER TABLE Рейс
ADD FOREIGN KEY(Номер_рейса) REFERENCES Билет

(4)

ALTER TABLE Рейс
ADD Номер_места INT NOT NULL
FOREIGN KEY(Номер_места)
REFERENCES Билет

Определите роль сервера в двухуровневой архитектуре «клиент-сервер».

(1) обеспечение целостности данных

(2) создание пользовательского интерфейса

(3) управление параллельной работой пользователей

Дано представление с данными из разных таблиц.

CREATE VIEW view3
AS
SELECT Билет.Номер_места, Билет.Номер_рейса,
Рейс.Конечный_пункт
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса

Предпринимается попытка добавить в представление запись.

INSERT INTO view3(
Номер_места, Номер_рейса, Конечный_пункт)
VALUES(12, 8978, 'Москва')

Результатом выполнения команды является следующее:

(1) в таблицы Рейс и Билет будут добавлены записи

(2) запись будет добавлена только в таблицу Рейс

(3) данные в представление view3 будут успешно добавлены

(4) команда не будет выполнена

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

(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

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

CREATE PROC my_proc3
@c VARCHAR(20)=’Самара’,
@m INT=4,
@k INT=0 OUTPUT
AS
SELECT @k=Count(Билет.Фамилия_пассажира)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Рейс.Конечный_пункт,
Month(Рейс.Дата_вылета)
HAVING Рейс.Конечный_пункт=@c AND
Month(Рейс.Дата_вылета)=@m

Укажите правильный вызов процедуры

(1)

DECLARE @st INT
EXEC my_proc3 'Москва',2,@st OUTPUT
SELECT @st

(2)

DECLARE @st INT
EXEC my_proc3 2,'Москва',@st OUTPUT
SELECT @st

(3)

DECLARE @st INT
EXEC my_proc3 @m=2,@k=@st OUTPUT
SELECT @st

(4)

DECLARE @st INT
EXEC my_proc3 @k=@st OUTPUT
SELECT @st

Разработан курсор для печати списка номеров рейсов.

DECLARE @n INT,
@k VARCHAR(50),
@p MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ' Список клиентов'
DECLARE cursor1 CURSOR GLOBAL SCROLL STATIC FOR
SELECT Номер_рейса, Стоимость, Конечный_пункт
FROM Рейс
WHERE Конечный_пункт="Москва"

OPEN cursor1
SET @cur1=cursor1
FETCH FIRST FROM cursor1 INTO @n, @p, @k
FETCH ABSOLUTE 3 FROM cursor1 INTO @n, @p, @k
FETCH NEXT FROM cursor1 INTO @n, @p, @k

SELECT @message='Рейс '+CAST(@n AS VARCHAR(20))+
' Стоимость '+ CAST(@p AS VARCHAR(4))
PRINT @message
CLOSE cursor1
DEALLOCATE cursor1

Какая из имеющихся в курсоре записей будет распечатана?

(1) четвертая запись

(2) произошло обращение к строке за пределами курсора

(3) объявление курсора запрещает произвольный переход по записям

(4) вторая запись

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

CREATE TRIGGER trig_upd
ON Билет FOR UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @r_i INT, @r_d INT
SELECT @r_d=Номер_рейса FROM deleted
SELECT @r_i=Номер_рейса FROM inserted
UPDATE Рейс SET число_мест=число_мест+1
WHERE номер_рейса=@r_d
UPDATE Рейс SET число_мест=число_мест-1
WHERE номер_рейса=@r_i

(2)

UPDATE Рейс SET число_мест=число_мест+1
WHERE номер_рейса=deleted.номер_рейса
UPDATE Рейс SET число_мест=число_мест-1
WHERE номер_рейса=inserted.номер_рейса

(3)

UPDATE Рейс
SET число_мест=
число_мест+
deleted.число_мест-inserterd.число_мест
WHERE номер_рейса=inserted.номер_рейса

(4)

UPDATE Рейс SET число_мест=число_мест+1
WHERE Номер_рейса=(SELECT Номер_рейса
      FROM deleted
      WHERE Рейс.Номер_рейса=deleted.Номер_рейса)
UPDATE Рейс SET число_мест=число_мест-1
WHERE Номер_рейса=(SELECT Номер_рейса
      FROM inserted
      WHERE Рейс.Номер_рейса=
       inserted.Номер_рейса)

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, --номер работы
нач_соб INT, --начальное событие
кон_соб INT, --конечное событие
длит INT) --длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1".

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

CREATE TRIGGER trig_upd
ON Граф FOR UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

IF (COLUMNS_UPDATED() & 14)=14
   ROLLBACK TRAN

(2)

IF (нач_соб) AND
UPDATE(кон_соб) AND UPDATE(длит)
   ROLLBACK TRAN

(3)

IF UPDATE(нач_соб AND кон_соб AND длит)
   ROLLBACK TRAN

(4)

IF (COLUMNS_UPDATED() & 15)=15
   ROLLBACK TRAN

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL
REPEATABLE READ

BEGIN TRANSACTION TRA
1.SELECT * FROM Товар

3.UPDATE Товар SET
остаток=остаток+10 WHERE Код_Товара=4

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION
LEVEL READ UNCOMMITTED

BEGIN TRANSACTION TRB

2.SELECT * FROM Товар

4.SELECT * FROM Товар
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

(1)

1 2 3 4
Выполняется Выполняется Выполняется Выполняется

(2)

1 2 3 4
Блокируется Выполняется Блокируется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserB'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA
WITH GRANT
OPTION

REVOKE INSERT ON
tab TO role1

GRANT INSERT ON
tab TO UserC

   
9 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
10 ? ? ? ?

(1)

10 Выполнено Выполнено Отклонено Выполнено

(2)

10 Выполнено Отклонено Отклонено Выполнено

(3)

10 Отклонено Выполнено Отклонено Выполнено

(4)

10 Выполнено Отклонено Выполнено Отклонено

Дан фрагмент сценария VBScript для изменения данных в таблице Рейс.

prm1=Server.CreateObject("ADODB.Parameter")
prm2=Server.CreateObject("ADODB.Parameter")
cmd.CommandText = "update Рейс set Стоимость=?
where Конечный_пункт=?"
cmd.CommandType = adCmdText
cmd.Prepared = True
Set prm1 = сmd.CreateParameter(
"p1", adVarChar, adParamInput,20 ,'Москва')
Set prm2 = сmd.CreateParameter(
"p2", adInteger, adParamInput, ,231290.50)
cmd.Parameters.Append prm1
cmd.Parameters.Append prm2
cmd.Execute

Указать правильные ответы.

(1) ошибок нет

(2) неправильно указаны типы параметров

(3) последовательность добавления параметров в коллекцию параметров не соответствует следованию знаков «?»

(4) параметры неправильно добавляются в коллекцию параметров

Какое из следующих описаний типов является неправильным?

(1) DECIMAL(12,14)

(2) DECIMAL(8,8)

(3) DECIMAL(6,3)

В таблицу Рейс необходимо добавить бортовой номер и увеличить длину поля Конечный_пункт.

(1)

ALTER TABLE Рейс ADD COLUMN борт CHAR(5)
ALTER TABLE Рейс
ALTER COLUMN Конечный_пункт VARCHAR(50)

(2)

ALTER TABLE Рейс
ADD COLUMN борт VARCHAR(3,1) NOT NULL
ALTER TABLE Рейс DROP Конечный_пункт
ALTER TABLE Рейс
ADD COLUMN Конечный_пункт VARCHAR(50)

(3)

ALTER TABLE Рейс ADD борт INT(5)
ALTER TABLE Рейс
ALTER ADD Конечный пункт VARCHAR(50)

(4)

ALTER TABLE Рейс
ADD COLUMN борт FLOAT(8,3)
ALTER TABLE Рейс
ALTER Конечный_пункт VARCHAR(50)

Пусть дана таблица Рейс.

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Число_билетов INT
Стоимость MONEY

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

(1)

SELECT Номер_рейса, Дата_вылета, Конечный_пункт
FROM Рейс
WHERE Конечный_пункт Like '%ц%' And
Конечный_пункт Like '%х%'

(2)

SELECT Номер_рейса, Дата_вылета,Конечный_пункт
FROM Рейс
WHERE Конечный_пункт Like '%ц%' And Like '%х%'

(3)

SELECT Номер_рейса, Дата_вылета,Конечный_пункт
FROM Рейс
WHERE Конечный_пункт Like '%ц%' Or
Конечный_пункт Like '%х%'

(4)

SELECT Номер_рейса, Дата_вылета,Конечный_пункт
FROM Рейс
WHERE Конечный_пункт Like '%ц_х%' And
Конечный_пункт Like '%х_ц%'

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса CHAR(6),
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Составить список пассажиров, которые летают и в Москву, и в Киев.

(1)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Фамилия_пассажира In (
SELECT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва") AND
Билет.Фамилия_пассажира In(
SELECT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Киев")

(2)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет, Рейс
WHERE Рейс.Конечный_пункт="Москва" AND
Рейс.Конечный_пункт="Киев"

(3)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва" OR
Рейс.Конечный_пункт="Киев"

(4)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Фамилия_пассажира In (
SELECT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва" AND
Рейс.Конечный_пункт="Киев")

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Стоимость MONEY,
Число_билетов INT)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса INT,
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Определить, кто из пассажиров потратил наибольшую сумму на покупку авиабилетов.

(1)

SELECT Билет.Фамилия_пассажира,
Sum(Рейс.Стоимость) AS Sum_Стоимость
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Билет.Фамилия_пассажира
HAVING Sum(Рейс.Стоимость)>=
ALL(SELECT Sum(Рейс.Стоимость)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Билет.Фамилия_пассажира)

(2)

SELECT Билет.Фамилия_пассажира,
Sum(Рейс.Стоимость) AS Sum_Стоимость
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Билет.Фамилия_пассажира
HAVING Sum(Рейс.Стоимость)=
MAX(SELECT Sum(Рейс.Стоимость)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Билет.Фамилия_пассажира)

(3)

SELECT Билет.Фамилия_пассажира,
Sum(Рейс.Стоимость) AS Sum_Стоимость
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Билет.Фамилия_пассажира
HAVING Sum(Рейс.Стоимость)>=
ALL(SELECT Sum(Рейс.Стоимость)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса)

(4)

SELECT Билет.Фамилия_пассажира,
Sum(Рейс.Стоимость) AS Sum_Стоимость
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Sum(Рейс.Стоимость)>=
ALL(SELECT Sum(Рейс.Стоимость)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса)

Дана таблица Билет с полями:

номер_места 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'

Даны таблицы Рейс и Билет.

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(20),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE Билет
(Номер_места INT,
Номер_рейса INT,
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(30))

В таблице Рейс ограничить конечный пункт заданным списком: Москва, Самара, Киев.

(1)

ALTER TABLE Рейс
ADD CONSTRAINT ch1 CHECK(конечный_пункт IN (
'Москва','Самара','Киев'))

(2)

ALTER TABLE Рейс
ADD CHECK(конечный_пункт IN (
'Москва','Самара','Киев'))

(3)

ALTER TABLE Рейс
ALTER конечный_пункт VARCHAR(20) CHECK(
конечный_пункт IN ('Москва','Самара','Киев'))

(4)

ALTER TABLE Рейс
ADD CHECK((конечный_пункт ='Москва') OR
(конечный_пункт = 'Самара') OR (конечный_пункт = 'Киев'))

Дано представление с группировкой.

CREATE VIEW view4
AS
SELECT Конечный_пункт, Sum(Число_билетов) AS
Общ_Число_билетов
FROM Рейс
GROUP BY Конечный_пункт
HAVING Конечный_пункт=’Москва’

Предпринимается попытка удалить записи:

DELETE FROM view4
WHERE Конечный_пункт=’Самара’

(1) из таблицы Рейс будет удалена информация о рейсах до Самары и Москвы

(2) из таблицы Рейс будет удалена информация о рейсах до Самары

(3) команда будет выполнена. Представление не изменится

(4) команда выполнена не будет

Определите команду для вызова функции, создаваемой следующей командой:

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’, ’Москва’)

В базе данных basa1 имеется таблица Рейс. Из базы данных basa2 необходимо выполнить действие по увеличению стоимости билетов на все рейсы на 25%. В какой базе данных должна быть создана процедура и как можно ее выполнить?

(1)

Создание процедуры

USE basa2
CREATE PROC my_proc4
AS
UPDATE basa1.dbo.Рейс
SET basa1.dbo.Рейс.Стоимость =
basa1.dbo.Рейс. Стоимость*1.25

Вызов процедуры

USE basa2
EXEC my_proc4

(2)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE Рейс SET Стоимость = Стоимость*1.25

Вызов процедуры

USE basa2
EXEC basa1.my_proc4

(3)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE Рейс SET Стоимость = Стоимость*1.25

Вызов процедуры

USE basa2
EXEC my_proc4

(4)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE basa1.dbo.Рейс
SET basa1.dbo.Рейс Стоимость =
basa1.dbo.Рейс.Стоимость*1.25

Вызов процедуры

USE basa2
EXEC basa1.my_proc4

Пусть в таблице Рейс представлены записи, где значения поля Номер_рейса равны 1, 3 ,5 ,7 ,9. Создан курсор для печати списка рейсов до Москвы.

DECLARE @n INT,
@k VARCHAR(50),
@p MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ' Список рейсов'
DECLARE cursor1
CURSOR GLOBAL SCROLL DYNAMIC READ_ONLY FOR
SELECT Номер_рейса, Стоимость, Конечный_пункт
FROM Рейс
WHERE Конечный_пункт="Москва"

OPEN cursor1
SET @cur1=cursor1
FETCH RELATIVE 3 FROM cursor1 INTO @n, @p, @k
UPDATE Рейс SET Стоимость=Стоимость*1.5
WHERE CURRENT OF cursor1
FETCH RELATIVE -2 FROM cursor1 INTO @n, @p, @k
DELETE Рейс
WHERE CURRENT OF cursor1
SELECT @message='Рейс '+CAST(@n AS VARCHAR(20))+
' Стоимость '+ CAST(@p AS VARCHAR(4))
CLOSE cursor1
DEALLOCATE cursor1

Какие действия выполнит система?

(1) успешно удаляется запись, где Номер_рейса=1 и изменяется запись, где номер_рейса=5

(2) успешно удаляется запись, где Номер_рейса=1 и изменяется запись, где номер_рейса=3

(3) делается попытка удалить несуществующую запись

(4) объявление курсора не позволяет изменять и удалять записи

Дана таблица Билет. Разработать триггер, который выполняется вместо изменения стоимости одного билета. Изменение стоимости билета выполнить только в том случае, если на этот рейс продано не менее 20 билетов.

CREATE TRIGGER trig_upd
ON Билет INSTEAD OF UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @r INT, @m INT,
      @k INT,
      @s MONEY
SELECT @r=номер_рейса, @s=стоимость,
@m=номер_места
FROM inserted
SELECT @k=COUNT(номер_места)
FROM Билет
GROUP BY номер_рейса
HAVING номер_рейса=@r

IF @k>20
   UPDATE Билет SET стоимость=@s
   WHERE номер_места=@m

(2)

IF (SELECT COUNT(номер_места)
FROM Билет GROUP BY номер_рейса)>20
   UPDATE Билет SET стоимость=(
SELECT стоимость FROM inserted
   WHERE номер_места=(
SELECT номер_места FROM inserted))

(3)

IF COUNT(inserted.номер_места)>20

   UPDATE Билет SET стоимость=inserted.стоимость
   WHERE номер_места=inserted.номер_места

(4)

IF (SELECT COUNT(номер_места)
FROM Билет GROUP BY номер_рейса)>20
UPDATE Билет SET стоимость=inserted.стоимость
WHERE номер_места=inserted.номер_места

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph
(nomer INT PRIMARY KEY, --номер дуги
outp INT, --номер вершины,
--из которой дуга выходит
inp INT) --номер вершины,
--в которую дуга входит

Создать триггер, обрабатывающий вставку одной записи и запрещающий ввод дуги, если в соответствующую вершину уже входят 3 дуги.

CREATE TRIGGER trig
ON graph FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
   SELECT @k=COUNT(inp)
   FROM graph
   WHERE inp=@e2
IF @k>3
   ROLLBACK

(2)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
   IF COUNT(outp)>=3
   ROLLBACK

(3)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
IF (SELECT COUNT(inp)
   FROM graph
   WHERE inp=@e1)>=3
   ROLLBACK

(4)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
IF (COUNT(inp)
   FROM graph
   WHERE inp=@e1)>=3
   ROLLBACK

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL READ
COMMITTED

BEGIN TRANSACTION TRA
1.SELECT * FROM Товар

3.UPDATE Товар SET
остаток=остаток+10 WHERE Код_Товара=4

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE

BEGIN TRANSACTION TRB

2. INSERT
Товар(Код_Товара,Название,
остаток)
VALUES (2,'SS',999)

4.SELECT * FROM Товар
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

(1)

1 2 3 4
Выполняется Выполняется Блокируется Выполняется

(2)

1 2 3 4
Блокируется Выполняется Блокируется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

9

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserB'

GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA
WITH GRANT
OPTION

REVOKE INSERT ON
tab TO UserB

GRANT INSERT ON
tab TO UserC

   
10 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
11 ? ? ? ?

(1)

11 Выполнено Отклонено Выполнено Отклонено

(2)

11 Выполнено Отклонено Выполнено Выполнено

(3)

11 Выполнено Выполнено Отклонено Выполнено

(4)

11 Выполнено Выполнено Выполнено Отклонено

Дан фрагмент Java-программы для изменения данных в таблице Рейс.

PreparedStatement mySt=Con.prepareStatement(
"update Рейс set Стоимость=?
where Конечный_пункт=?");
mySt.setFloat (1, 1200.50);
mySt.setString(2,'Москва');
int res=mySt.executeUpdate();

Указать правильные ответы.

(1) ошибок нет

(2) неправильно указаны типы параметров

(3) установки параметров не соответствуют следованию знаков «?»

(4) неправильно указаны номера параметров

Дан некоторый фрагмент SQL-кода:

DECLARE @a CHAR(12)
DECLARE @b DATETIME
DECLARE @c INT
SET @a=’12.2.04’
SET @c=6

Укажите правильный оператор для вычисления новой даты:

(1) SET @b=@a+@c

(2) SET @b=@a+CAST(@c AS DATETIME)

(3) SET @b=CAST(@a AS @DATETIME) - @c

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%; для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1
ON PRIMARY
( NAME=b1, FILENAME=’D:user’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),
(NAME=b2, FILENAME=’D:user’,
SIZE=100MB, MAXSIZE=200, FILEGROWTH=10%)
LOG ON
(NAME=l1, FILENAME=’E:userl1’,
SIZE=50MB, MAXSIZE=100, FILEGROWTH=10)

Выберите правильный ответ.

(1) база данных будет успешно создана

(2) неправильно указано физическое имя и размер базы данных

(3) неправильно указано логическое имя базы данных

(4) неправильно определен только размер базы данных

Пусть дана таблица Рейс.

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Число_билетов INT
Стоимость MONEY

Определить в убывающем порядке стоимость билетов на рейсы, вылетающие в Москву, Петербург или Самару не позднее 1 апреля, а в Саратов – не позднее 7 апреля.

(1)

SELECT Номер_рейса, Стоимость, Конечный_пункт,
Дата_вылета
FROM Рейс
WHERE (Конечный_пункт In
('Москва', 'Петербург', 'Самара') AND
Дата_вылета<='4/1/2004') OR
(Конечный_пункт='Саратов' AND
Дата_вылета<='4/7/2004')
ORDER BY Стоимость DESC

(2)

SELECT Номер_рейса, Стоимость, Конечный_пункт,
Дата_вылета
FROM Рейс
WHERE Конечный_пункт In
('Москва', 'Петербург', 'Самара') OR
Дата_вылета<='4/1/2004' OR
(Конечный_пункт='Саратов' AND
Дата_вылета<='4/7/2004')
ORDER BY Стоимость DESC

(3)

SELECT Номер_рейса, Стоимость, Конечный_пункт,
Дата_вылета
FROM Рейс
WHERE Конечный_пункт In
('Москва', 'Петербург', 'Самара') AND
Дата_вылета<='4/1/2004' OR
Конечный_пункт='Саратов' AND
Дата_вылета<='4/7/2004'
ORDER BY Стоимость DESC

(4)

SELECT Номер_рейса, Стоимость, Конечный_пункт,
Дата_вылета
FROM Рейс
WHERE (Конечный_пункт In
('Москва', 'Петербург', 'Самара') AND
Дата_вылета<='4/1/2004') OR
(Конечный_пункт='Саратов' OR
Дата_вылета<='4/7/2004')
ORDER BY Стоимость DESC

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса CHAR(6),
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Составить список пассажиров, которые летают в Москву, но не летают в Киев.

(1)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Фамилия_пассажира In (
SELECT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва") AND
Билет.Фамилия_пассажира NOT In(
SELECT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Киев")

(2)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Фамилия_пассажира In (
SELECT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва" AND
Рейс.Конечный_пункт="Киев")

(3)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE Рейс.Конечный_пункт="Москва" AND
Рейс.Конечный_пункт<>"Киев")

(4)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва" AND
Рейс.Конечный_пункт<>"Киев"

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса INT,
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Вывести список городов, куда было продано не менее 200 билетов на сумму, превышающую 10000 руб.

(1)

SELECT Рейс.Конечный_пункт,
Count(Билет.Фамилия_пассажира) AS
Кол_пассажиров, Sum(Рейс.Стоимость) AS
Общ_Стоимость
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Рейс.Конечный_пункт
HAVING Count(Билет.Фамилия_пассажира)>=200 AND
Sum(Рейс.Стоимость)>10000

(2)

SELECT Рейс.Конечный_пункт,
Count(Билет.Фамилия_пассажира) AS
Кол_пассажиров, Sum(Рейс.Стоимость) AS
Общ_Стоимость
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
GROUP BY Рейс.Конечный_пункт
HAVING Кол_пассажиров>=200 AND
Общ_Стоимость>10000

(3)

SELECT Рейс.Конечный_пункт,
Count(Билет.Фамилия_пассажира) AS Кол_пассажиров,
Sum(Рейс.Стоимость) AS Общ_Стоимость
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
HAVING Count(Билет.Фамилия_пассажира)>=200 AND
Sum(Рейс.Стоимость)>10000

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса CHAR(6),
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(20))

Определить пассажиров, реже других летающих в Москву.

(1)

SELECT Билет.Фамилия_пассажира,
Count(Рейс.Номер_рейса) AS Кол_рейсов
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва"
GROUP BY Билет.Фамилия_пассажира
HAVING Count(Рейс.Номер_рейса)<=
ALL(SELECT Count(Рейс.Конечный_пункт)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва"
GROUP BY Билет.Фамилия_пассажира)

(2)

SELECT Билет.Фамилия_пассажира,
Count(Рейс.Номер_рейса) AS Кол_рейсов
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва"
GROUP BY Билет.Фамилия_пассажира
HAVING Count(Рейс.Номер_рейса)<=
MIN(SELECT Count(Рейс.Конечный_пункт)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва"
GROUP BY Билет.Фамилия_пассажира)

(3)

SELECT Билет.Фамилия_пассажира,
Count(Рейс.Номер_рейса) AS Кол_рейсов
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва"
HAVING Count(Рейс.Номер_рейса)<=
ALL(SELECT Count(Рейс.Конечный_пункт)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва")

(4)

SELECT Билет.Фамилия_пассажира,
Count(Рейс.Номер_рейса) AS Кол_рейсов
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва"
AND Count(Рейс.Номер_рейса)<=
ALL(SELECT Count(Рейс.Конечный_пункт)
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт="Москва")

Даны таблицы Рейс и Билет.

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(20),
Дата_вылета DATETIME,
Продолжительность_маршрута INT,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE Билет
(Номер_места INT,
Номер_рейса INT,
Дата_продажи DATETIME,
Стоимость MONEY,
Фамилия_пассажира VARCHAR(30))

Для полей Дата_продажи таблицы Билет и Дата_вылета таблицы Рейс создать и применить умолчание для ввода текущей даты.

(1)

CREATE DEFAULT df1 AS GETDATE()
sp_bindefault 'df1', 'Билет.Дата_продажи'
sp_bindefault 'df1', 'Рейс.Дата_вылета'

(2)

CREATE DEFAULT df1 AS GETDATE()
sp_bindefault 'df1', 'Билет.Дата_продажи',
'Рейс.Дата_вылета'

(3)

CREATE Билет.Дата_продажи DEFAULT GETDATE()
CREATE Рейс.Дата_вылета DEFAULT GETDATE()

(4)

CREATE DEFAULT df1 AS GETDATE()
sp_bindefault 'df1',’Билет’, 'Дата_продажи'
sp_bindefault 'df1',’Рейс’, 'Дата_вылета'

Дано представление.

CREATE VIEW view2
AS
SELECT Номер_рейса, Стоимость,
Стоимость*0.05 AS Налог
FROM Рейс
WHERE Конечный_пункт=’Москва’

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Стоимость = Стоимость *1.5
WHERE Стоимость>100

Результатом выполнения команды является следующее:

(1) в таблице Рейс будет изменена стоимость тех билетов до Москвы, которые продаются дороже 100 руб

(2) в таблице Рейс увеличится стоимость дорогих (> 100 руб.) билетов

(3) команда не будет выполнена

Необходимо разработать функцию для вывода списка пассажиров, купивших билеты в определенный день на некоторый рейс.
Функция создается командой:

(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)

Для определения числа рейсов в указанный город за определенный месяц разработана процедура, в которой заданы значения параметров по умолчанию:

CREATE PROC my_proc
@c VARCHAR(20)=’Самара’,
@m INT=4,
@k INT=0 OUTPUT
AS
SELECT @k=Count(Рейс.Номер_рейса)
FROM Рейс
GROUP BY Рейс.Конечный_пункт,
Month(Рейс.Дата_вылета)
HAVING Рейс.Конечный_пункт=@c AND
Month(Рейс.Дата_вылета)=@m

Укажите правильный вызов процедуры

(1)

DECLARE @st INT
EXEC my_proc 'Москва',2,@st OUTPUT
SELECT @st

(2)

DECLARE @st INT
EXEC my_proc 2,'Москва',@st OUTPUT
SELECT @st

(3)

DECLARE @st INT
EXEC my_proc @m=2,@k=@st OUTPUT
SELECT @st

(4)

DECLARE @st INT
EXEC my_proc @k=@st OUTPUT
SELECT @st

Разработана процедура, возвращающая номера рейсов до заданного пункта.

CREATE PROC my_proc
@p VARCHAR(20),
@cur CURSOR VARYING OUTPUT
AS
SET @cur=CURSOR FORWARD_ONLY STATIC FOR
SELECT Номер_рейса, Стоимость, Конечный_пункт
FROM Рейс
WHERE Конечный_пункт=@p
OPEN @cur

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

DECLARE @my_cur CURSOR
DECLARE @n INT
EXEC my_proc @p='Москва',@cur=@my_cur OUTPUT
WHILE (@@FETCH_STATUS=0)
BEGIN
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
END
CLOSE @my_cur
DEALLOCATE @my_cur

Укажите правильные ответы.

(1) ошибок в процедуре нет, есть ошибка в ее вызове

(2) процедура создана правильно. При вызове в обработке курсора отсутствует оператор установки на первую запись в курсоре

(3) в процедуре не следует открывать курсор. Он должен быть открыт при вызове процедуры

(4) процедура создана неправильно

Даны таблицы Рейс и Билет. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление записи о некотором рейсе из таблицы Рейс. При этом в таблице Билет необходимо его номер заменить на номер запасного рейса 111 для билетов, проданных на удаленный рейс.

CREATE TRIGGER trig_del
ON Рейс FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @r INT
SELECT @r=Номер_рейса
FROM deleted
UPDATE Билет SET номер_рейса=111
WHERE Номер_рейса=@r

(2)

UPDATE Билет SET номер_рейса=111
WHERE Номер_рейса=deleted.Номер_рейса

(3)

UPDATE Билет SET номер_рейса=111
WHERE Номер_рейса=(SELECT Номер_рейса
      FROM deleted)

(4)

UPDATE Билет SET номер_рейса=111
WHERE Номер_рейса=(SELECT Номер_рейса
      FROM deleted
      WHERE Билет.Номер_рейса=deleted.Номер_рейса)

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph
(nomer INT PRIMARY KEY, --номер дуги
outp INT, --номер вершины,
--из которой дуга выходит
inp INT) --номер вершины,
--в которую дуга входит

Создать триггер, обрабатывающий удаление одной дуги, причем следует запретить удаление, если эта дуга единственная, связывающая некоторые вершины.

CREATE TRIGGER trig
ON graph FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e1 INT, @e2 INT,@n INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
IF NOT EXISTS(SELECT *
      FROM graph
      WHERE nomer<>@n AND
outp=@e1 AND inp=@e2 )
ROLLBACK TRAN

(2)

IF NOT EXISTS(SELECT *
      FROM graph
      WHERE nomer<> deleted.nomer AND
outp= deleted.outp
      AND outp= deleted.inp)
ROLLBACK TRAN

(3)

IF NOT EXISTS(SELECT *
      FROM graph
      WHERE nomer<>(SELECT nomer FROM deleted)
      AND outp= (SELECT outp FROM deleted)
      AND inp)
ROLLBACK TRAN

(4)

DECLARE @e1 INT, @e2 INT,@n INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
IF EXISTS(SELECT *
      FROM graph
      WHERE nomer=@n AND
outp<>@e1 AND inp<>@e2 )
ROLLBACK TRAN

Задание: Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, 'a',10)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, 'b',20)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, 'c',30)
SAVE TRANSACTION p1
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, 'd',40)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (5, 'e',50)

SAVE TRANSACTION p2
DELETE FROM Товар WHERE Код_Товара=4
SAVE TRANSACTION p3
UPDATE Товар SET Название ='g' WHERE Код_Товара=2
SAVE TRANSACTION p4
DELETE FROM Товар
WHERE Код_Товара<>1 AND Код_Товара<>4
ROLLBACK TRANSACTION p3
INSERT Товар (Код_Товара, Название, остаток)
VALUES (6, 'f',70)
ROLLBACK TRANSACTION p1
DELETE FROM Товар WHERE Код_Товара=3

COMMIT

После завершения транзакции в таблице Товар останутся записи о товарах с названиями:

(1) Названия: ‘a’, ‘g’, ‘e’

(2) Названия: ‘a’, ‘g’, ‘c’, ‘e’

(3) Названия: ‘f’, ‘b’, ‘c’, ‘e’, ‘f’

(4) Названия: ‘a’, ‘b’

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2

3

4

5

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
GRANT INSERT, SELECT
ON tab TO UserA
WITH GRANT OPTION
GRANT INSERT ON tab
TO UserC

REVOKE INSERT ON tab
TO UserA CASCADE

GRANT SELECT,
INSERT ON tab TO
UserC

   
6 INSERT INTO tab(1,'aa') INSERT INTO
tab(2,'bb')
SELECT * FROM
tab
INSERT INTO
tab(4,'bb')
7 ? ? ? ?

(1)

7 Выполнено Отклонено Отклонено Выполнено

(2)

7 Выполнено Отклонено Выполнено Отклонено

(3)

7 Отклонено Выполнено Отклонено Выполнено

(4)

7 Отклонено Отклонено Выполнено Отклонено

Дан фрагмент сценария VBScript для изменения и выборки данных из таблицы Рейс, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject("ADODB.Connection")
Set rst=Server.CreateObject("ADODB.Recordset")
cn.open " uid=user1;pwd=user1;driver={SQL Server};
server=its; database = basa_user1"
cn.execute "UPDATE Рейс
SET Дата_вылета=3.09.2003 WHERE номер_рейса=123”
rst.open "SELECT Конечный_пункт, Дата_вылета,
Продолжительность_маршрута FROM Рейс", cn
do until rst.eof
response.write rst.fields(0)
response.write rst.fields(1)
response.write rst.fields(2)&"<br>"
rst.movenext
loop

Указать правильные ответы.

(1) допущена ошибка в использовании оператора UPDATE

(2) при открытии запроса не указано соединение

(3) при обработке результата число полей не соответствует количеству полей в операторе SELECT

(4) в строке соединения не указан пользователь

Какие из следующих строк можно внести в поле, описанное как CHAR(4)?

(1) Уроки

(2) Ура

(3) Салют

(4) 11

Создана таблица Рейс. Изменить тип поля Стоимость_билета на денежный и добавить поле Число_мест.

CREATE TABLE Рейс
(Номер_рейса INT NOT NULL,
Конечный_пункт VARCHAR(30),
Стоимость_билета INT)

(1)

ALTER TABLE Рейс ADD Число_мест INT
ALTER TABLE Рейс DROP column Стоимость_билета
ALTER TABLE Рейс
ADD Стоимость_билета MONEY

(2)

ALTER TABLE Рейс
ADD COLUMN Число_мест INT
ALTER TABLE Рейс
ALTER Стоимость_билета MONEY

(3)

ALTER TABLE Рейс ADD Число_мест INT
ALTER TABLE Рейс DROP Стоимость_билета
ALTER TABLE Рейс
ADD COLUMN Стоимость_билета MONEY

Дана таблица Рейс с полями

Номер_рейса INT
Конечный_пункт CHAR(10)
Дата_вылета DATETIME
Продолжительность_маршрута INT
Стоимость MONEY

Вывести информацию о рейсах до Москвы с датой вылета не позднее 8 марта, но не ранее 1 марта, со стоимостью билетов от 500 до 1000 руб.

(1)

SELECT Номер_рейса, Конечный_пункт, Дата_вылета
FROM Рейс
WHERE Конечный_пункт='Москва' AND
Дата_вылета>='3/1/2004' And
Дата_вылета<='3/8/2004' And
Стоимость Between 500 and 1000

(2)

SELECT Номер_рейса, Конечный_пункт, Дата_вылета
FROM Рейс
WHERE Конечный_пункт='Москва' OR
Дата_вылета>='3/1/2004' And
Дата_вылета<='3/8/2004' And
Стоимость >= 500 <= 1000

(3)

SELECT Номер_рейса, Конечный_пункт, Дата_вылета
FROM Рейс
WHERE Конечный_пункт='Москва' AND
Дата_вылета>='3/1/2004' OR
Дата_вылета<='3/8/2004'
Стоимость Between 500 OR 1000

(4)

SELECT Номер_рейса, Конечный_пункт, Дата_вылета
FROM Рейс
WHERE Конечный_пункт='Москва' AND
(Дата_вылета>='3/1/2004' OR
Дата_вылета<='3/8/2004') And
Стоимость >= 500 And
Стоимость <= 1000

Даны таблицы Рейс и Билет.

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса INT,
Дата_продажи DATETIME,
Фамилия_пассажира VARCHAR(30))

Определить номера мест и дату продажи билетов на рейсы до Москвы с датой вылета 1 мая 2004 года

(1)

SELECT Билет.Номер_места, Билет.Дата_продажи
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт='Москва' AND
Рейс.Дата_вылета='05/01/2004'

(2)

SELECT Билет.Номер_места, Билет.Дата_продажи
FROM Билет, Рейс
WHERE Билет.Номер_рейса = Рейс.Номер_рейса AND
Рейс.Конечный_пункт='Москва' AND
Рейс.Дата_вылета='05/01/2004'

(3)

SELECT Билет.Номер_места, Билет.Дата_продажи
FROM Билет JOIN Рейс ON Номер_рейса = Номер_рейса
WHERE Рейс.Конечный_пункт='Москва' AND
Рейс.Дата_вылета='05/01/2004'

(4)

SELECT Билет.Номер_места, Билет.Дата_продажи
FROM Билет INNER Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса ON
Рейс.Дата_вылета='05/01/2004'
AND Рейс.Конечный_пункт='Москва'

Даны таблицы

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME,
Число_билетов INT,
Стоимость MONEY)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса CHAR(6),
Дата_продажи DATETIME,
Стоимость MONEY)

Рассчитать общую стоимость билетов для каждого рейса, 5% налог с продаж и доход от рейсов до Москвы.

(1)

SELECT Номер_рейса,
Стоимость*Число_билетов AS Общ_стоимость,
Стоимость*Число_билетов*0.05 AS Налог,
Стоимость*Число_билетов*0.95 AS Доход
FROM Рейс
WHERE Конечный_пункт='Москва'

(2)

SELECT Номер_рейса,
Стоимость*Число_билетов AS Общ_стоимость,
Общ_стоимость* 0.05 AS Налог,
Общ_стоимость *0.95 AS Доход
FROM Рейс
HAVING Конечный_пункт='Москва'

(3)

SELECT Номер_рейса,
Общ_стоимость =Стоимость*Число_билетов,
Налог =Общ_стоимость* 0.05,
Доход =Общ_стоимость *0.95
FROM Рейс
WHERE Конечный_пункт='Москва'

(4)

SELECT Номер_рейса,
@s=Стоимость*Число_билетов,
@n=Стоимость*Число_билетов* 0.05,
@d=Стоимость*Число_билетов* 0.95
FROM Рейс
HAVING Конечный_пункт='Москва'

Даны таблицы Рейс и Билет.

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Продолжительность_маршрута INT)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса CHAR(6),
Фамилия_пассажира VARCHAR(20))

Определить самый продолжительный рейс.

(1)

SELECT Рейс.Номер_рейса,
Рейс.Конечный_пункт,
Рейс.Продолжительность_маршрута
FROM Рейс
WHERE Рейс.Продолжительность_маршрута=
   (SELECT Max(Рейс.Продолжительность_маршрута)
      FROM Рейс)

(2)

SELECT Рейс.Номер_рейса,
Рейс.Конечный_пункт,
Рейс.Продолжительность_маршрута
FROM Рейс
WHERE Рейс.Продолжительность_маршрута=
   Max(Рейс.Продолжительность_маршрута)

(3)

SELECT Рейс.Номер_рейса,
Рейс.Конечный_пункт,
Рейс.Продолжительность_маршрута
FROM Рейс
WHERE Рейс.Продолжительность_маршрута=
   (Max(SELECT Рейс.Продолжительность_маршрута
    FROM Рейс))

(4)

SELECT Рейс.Номер_рейса,
Рейс.Конечный_пункт,
Рейс.Продолжительность_маршрута
FROM Рейс
WHERE Рейс.Продолжительность_маршрута>=ALL
   (SELECT Рейс.Продолжительность_маршрута
   FROM Рейс)

Даны таблицы Рейс и Билет. Между ними необходимо установить связь "один-ко-многим" (один рейс - много мест).

CREATE TABLE Рейс
(Номер_рейса INT PRIMARY KEY,
Номер_борта CHAR(5) UNIQUE,
Конечный_пункт VARCHAR(20),
Дата_вылета DATETIME)

CREATE TABLE Билет
(Номер_места INT,
Номер_рейса INT,
Дата_продажи DATETIME,
СтоимостьMONEY,
PRIMARY KEY(Номер_места, Номер_рейса))

(1)

ALTER TABLE Билет
ADD CONSTRAINT fk_Билет
FOREIGN KEY(Номер_рейса) REFERENCES Рейс

(2)

ALTER TABLE Билет
ADD FOREIGN KEY(Номер_рейса)
REFERENCES Рейс(Номер_борта)

(3)

ALTER TABLE Рейс
ADD FOREIGN KEY(Номер_рейса) REFERENCES Билет

(4)

ALTER TABLE Рейс
FOREIGN KEY(Номер_места) REFERENCES Билет

Дано представление.

CREATE VIEW view5
AS
SELECT Билет.Номер_места, Билет.Номер_рейса,
Рейс.Конечный_пункт
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса

Предпринимается попытка удалить из представления запись.

DELETE FROM view5
WHERE Конечный_пункт ='Москва'

Результатом выполнения команды является следующее:

(1) из таблиц Рейс и Билет будут удалены соответствующие записи

(2) запись будет удалена только из таблицы Рейс

(3) данные из представления view5 будут успешно удалены

(4) команда не будет выполнена

Необходимо разработать функцию для вывода списка пассажиров, купивших билеты в определенный день на некоторый рейс. Определите команду для ее вызова.

(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’

В базе данных basa1 имеется таблица Рейс. Содержащуюся в ней информацию необходимо прочитать из базы данных basa2. В какой базе данных должна быть создана процедура, и как можно ее выполнить?

(1)

Создание процедуры

USE basa2
CREATE PROC my_proc
AS
SELECT * FROM basa1.Рейс

Вызов процедуры

USE basa2
EXEC my_proc

(2)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
SELECT * FROM basa1.dbo.Рейс

Вызов процедуры

USE basa2
EXEC basa1.my_proc

(3)

Создание процедуры

USE basa1
CREATE PROC my_proc
AS
SELECT * FROM Рейс

Вызов процедуры

USE basa2
EXEC my_proc

(4)

Создание процедуры

USE basa1
CREATE PROC my_proc
AS
SELECT * FROM basa1.dbo.Рейс

Вызов процедуры

USE basa2
EXEC basa1.dbo.my_proc

Пусть в таблице Рейс представлены записи, значения поля Номер_рейса в которых равны 2, 4, 6, 8 ,9. Создан курсор для вывода списка рейсов до Москвы.

DECLARE @n INT,
@k VARCHAR(50),
@p MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ' Список рейсов'
DECLARE cursor1 CURSOR GLOBAL SCROLL DYNAMIC FOR
SELECT Номер_рейса, Стоимость, Конечный_пункт
FROM Рейс
WHERE Конечный_пункт=’Москва’

OPEN cursor1
SET @cur1=cursor1
FETCH ABSOLUTE 3 FROM cursor1 INTO @n, @p, @k
UPDATE Рейс SET Стоимость=Стоимость*1.5
WHERE CURRENT OF cursor1
FETCH RELATIVE -2 FROM cursor1 INTO @n, @p, @k
DELETE Рейс
WHERE CURRENT OF cursor1
SELECT @message='Рейс '+CAST(@n AS VARCHAR(20))+
' Стоимость '+ CAST(@p AS VARCHAR(4))
CLOSE cursor1
DEALLOCATE cursor1

Какие действия выполнит система?

(1) успешно удаляется запись, где номер_рейса=2, и изменяется запись, где номер_рейса=6

(2) успешно удаляется запись, где номер_рейса=1, и изменяется запись, где номер_рейса=3

(3) делается попытка удалить несуществующую запись

(4) объявление курсора не позволяет изменять и удалять записи

Дана таблица Билет. Разработать триггер, который выполняется вместо изменения стоимости одного билета. Изменение стоимости билета выполнить только в том случае, если этот рейс отправляется в Москву.

CREATE TRIGGER trig_upd
ON Билет INSTEAD OF UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @r INT, @m INT,
      @c VARCHAR(20),
      @s MONEY
SELECT @r=номер_рейса, @s=стоимость,
@m=номер_места
FROM inserted
SELECT @c=Рейс.Конечный_пункт
FROM Рейс
WHERE Рейс.Номер_рейса=@r
IF @c='Москва'
   UPDATE Билет SET стоимость=@s
   WHERE номер_места=@m AND
Номер_рейса=@r

(2)

DECLARE @r INT, @m INT,
      @c VARCHAR(20),
      @s MONEY
SELECT @r=номер_рейса, @s=стоимость,
@m=номер_места
FROM inserted
IF (SELECT Рейс.Конечный_пункт
FROM Рейс
WHERE Рейс.номер_рейса=@r AND
Рейс.Конечный_пункт='Москва')
   UPDATE Билет SET стоимость=@s
   WHERE номер_места=@m AND
Номер_рейса=@r

(3)

DECLARE @r INT, @m INT,
      @c VARCHAR(20),
      @s MONEY
SELECT @r=номер_рейса, @s=стоимость,
@m=номер_места
FROM inserted
   UPDATE Билет SET стоимость=@s
   WHERE номер_места=@m AND
Номер_рейса=@r AND Рейс.Конечный_пункт='Москва'

(4)

DECLARE @r INT, @m INT,
      @c VARCHAR(20),
      @s MONEY
SELECT @r=номер_рейса, @s=стоимость,
@m=номер_места
FROM inserted
IF Рейс.Конечный_пункт='Москва'
   UPDATE Билет SET стоимость=@s
   WHERE номер_места=@m AND
Номер_рейса=@r

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL
REPEATABLE READ

BEGIN TRANSACTION TRA
1.SELECT * FROM Товар WHERE
Код_Товара=1

3.UPDATE Товар SET
остаток=остаток+10 WHERE Код_Товара=4

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION
LEVEL READ UNCOMMITTED

BEGIN TRANSACTION TRB

2.UPDATE Товар SET
остаток=остаток+10 WHERE
Код_Товара=4

4.SELECT * FROM Товар
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие заблокирует?

(1)

1 2 3 4
Выполняется Выполняется Блокируется Выполняется

(2)

1 2 3 4
Блокируется Выполняется Блокируется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserB'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA

REVOKE INSERT ON
tab TO role1

GRANT INSERT ON
tab TO UserC

   
9 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
10 ? ? ? ?

(1)

10 Выполнено Выполнено Отклонено Отклонено

(2)

10 Выполнено Отклонено Отклонено Выполнено

(3)

10 Отклонено Выполнено Отклонено Выполнено

(4)

10 Выполнено Отклонено Выполнено Отклонено

Дан фрагмент Java-программы для удаления и выборки данных из таблицы Рейс, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection myCon= DriverManager.getConnection(
"jdbc:odbc:mystud","user1","user1");
Statement mySt=myCon.createStatement();
int res=mySt.executeUpdate("DELETE FROM Рейс
WHERE Дата_вылета=1.3.2004");
ResultSet rs=mySt.executeQuery(
"SELECT Конечный_пункт, Дата_вылета,
Продолжительность_маршрута FROM Рейс ");
while {
String var1=rs.getString(1);
String var2=rs.getString(2);
int var3=rs.getInt(3);
rs.next();
...
}

Указать правильные ответы.

(1) при выборке данных из результата запроса количество полей не соответствует количеству полей в операторе SELECT

(2) в цикле обработки результата запроса неправильно указан переход на новую запись

(3) поля в операторе SELECT не соответствуют по типу значениям, которые выбираются из результата запроса

(4) допущена ошибка в операторе удаления

Какие из следующих описаний типов являются правильными?

(1) DECIMAL(12,14)

(2) NUMERIC(8,6)

(3) INTEGER

(4) REAL(40,20)

Дана таблица Рейс. Вывести в убывающем порядке список рейсов, вылетающих не позднее 1 апреля в Москву, Петербург или Самару, стоимость билета не более 1500 р.; в Саратов – не позднее 7 апреля, стоимость билета - от 500 до 800 р.

(1)

SELECT Номер_рейса, Стоимость, Конечный_пункт,
Дата_вылета
FROM Рейс
WHERE (Конечный_пункт In
('Москва', 'Петербург', 'Самара') AND
Дата_вылета<='4/1/2004' AND
Стоимость<=1500) OR
(Конечный_пункт='Саратов' AND
Дата_вылета<='4/7/2004' AND
Стоимость>=500 AND Стоимость<=800)
ORDER BY Стоимость DESC

(2)

SELECT Номер_рейса, Стоимость, Конечный_пункт,
Дата_вылета
FROM Рейс
WHERE Конечный_пункт In
('Москва', 'Петербург', 'Самара') OR
Дата_вылета<='4/1/2004' AND
Стоимость<=1500 OR
(Конечный_пункт='Саратов' AND
Дата_вылета<='4/7/2004' OR
Стоимость>=500 OR Стоимость<=800)
ORDER BY Стоимость DESC

(3)

SELECT Номер_рейса, Стоимость, Конечный_пункт,
Дата_вылета
FROM Рейс
WHERE Конечный_пункт In
('Москва', 'Петербург', 'Самара') AND
Дата_вылета<='4/1/2004' AND
Стоимость<=1500 OR
Конечный_пункт='Саратов' AND
Дата_вылета<='4/7/2004' AND
Стоимость Between 500 and 800
ORDER BY Стоимость DESC

(4)

SELECT Номер_рейса, Стоимость, Конечный_пункт,
Дата_вылета
FROM Рейс
WHERE (Конечный_пункт In
('Москва', 'Петербург', 'Самара') AND
Дата_вылета<='4/1/2004' AND
Стоимость<=1500) OR
(Конечный_пункт='Саратов' OR
Дата_вылета<='4/7/2004' AND
Стоимость Between 500 and 800)
ORDER BY Стоимость DESC

Вывести список пассажиров, которые летали в апреле в Москву, но не летали в Киев в январе.

CREATE TABLE Рейс
(Номер_рейса INT,
Конечный_пункт VARCHAR(30),
Дата_вылета DATETIME)

CREATE TABLE БИЛЕТ
(Номер_места CHAR(3),
Номер_рейса CHAR(6),
Дата_продажи DATETIME,
Фамилия_пассажира VARCHAR(30))

(1)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE Билет.Фамилия_пассажира In (
SELECT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт='Москва' AND
Month(Рейс.Дата_вылета)=4) AND
Билет.Фамилия_пассажира NOT In(
SELECT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт='Киев' AND
Month(Рейс.Дата_вылета)=1)

(2)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE Month(Рейс.Дата_вылета)=4 AND
Билет.Фамилия_пассажира In (
SELECT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт='Москва' AND
Рейс.Конечный_пункт='Киев' AND
Month(Рейс.Дата_вылета)=1)

(3)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет
WHERE Рейс.Конечный_пункт='Москва' AND
Month(Рейс.Дата_вылета)=4 OR
Рейс.Конечный_пункт<>'Киев' AND
Month(Рейс.Дата_вылета)=1)

(4)

SELECT DISTINCT Билет.Фамилия_пассажира
FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
WHERE Рейс.Конечный_пункт='Москва' AND
Month(Рейс.Дата_вылета)=4 OR
Рейс.Конечный_пункт<>'Киев' AND
Month(Рейс.Дата_вылета)=1

На какую сумму были проданы билеты на рейс до Москвы в день вылета?

(1)

SELECT Sum(Билет.Стоимость) AS Общ_Стоимость,
Билет.Дата_продажи
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Билет.Дата_продажи=Рейс.Дата_вылета AND
Рейс.Конечный_пункт='Москва'
GROUP BY Билет.Дата_продажи

(2)

SELECT Sum(Билет.Стоимость) AS Общ_Стоимость,
Билет.Дата_продажи
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
GROUP BY Билет.Дата_продажи
HAVING Билет.Дата_продажи=Рейс.Дата_вылета AND
Рейс.Конечный_пункт='Москва'

(3)

SELECT Sum(Билет.Стоимость) AS Общ_Стоимость
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Билет.Дата_продажи=Рейс.Дата_вылета AND
Рейс.Конечный_пункт='Москва'
GROUP BY Билет.Дата_продажи

(4)

SELECT Билет.Дата_продажи,
Общ_Стоимость =Sum(Билет.Стоимость)
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
WHERE Билет.Дата_продажи=Рейс.Дата_вылета AND
Рейс.Конечный_пункт='Москва'
GROUP BY Билет.Дата_продажи

Определить конечный пункт, в который вылетело наименьшее число пассажиров.

(1)

SELECT Рейс.Конечный_пункт,
Count(Билет.Фамилия_пассажира)
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
GROUP BY Рейс.Конечный_пункт
HAVING Count(Билет.Фамилия_пассажира)<=All
      (SELECT Count(Билет.Фамилия_пассажира)
      FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
      GROUP BY Рейс.Конечный_пункт)

(2)

SELECT Рейс.Конечный_пункт,
Count(Билет.Фамилия_пассажира)
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
GROUP BY Рейс.Конечный_пункт
HAVING Count(Билет.Фамилия_пассажира)<=(SELECT
      Count(Билет.Фамилия_пассажира)
      FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
      GROUP BY Рейс.Конечный_пункт)

(3)

SELECT Рейс.Конечный_пункт,
Count(Билет.Фамилия_пассажира)
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
GROUP BY Рейс.Конечный_пункт
HAVING Count(Билет.Фамилия_пассажира)=MIN
      (SELECT Count(Билет.Фамилия_пассажира)
      FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
      GROUP BY Рейс.Конечный_пункт)

(4)

SELECT Рейс.Конечный_пункт,
Count(Билет.Фамилия_пассажира)
FROM Рейс INNER JOIN Билет ON
Рейс.Номер_рейса = Билет.Номер_рейса
GROUP BY Рейс.Конечный_пункт
WHERE Count(Билет.Фамилия_пассажира)<=All
      (SELECT Count(Билет.Фамилия_пассажира)
      FROM Билет INNER JOIN Рейс ON
Билет.Номер_рейса = Рейс.Номер_рейса
      GROUP BY Рейс.Конечный_пункт)

Увеличить на 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 Рейс.Дата_вылета=Билет.Дата_продажи

В таблице Билет ограничить поле Номер_места диапазоном от 0 до 250.

(1)

ALTER TABLE Билет
ADD CONSTRAINT ch1 CHECK(
Номер_места Between 0 and 250)

(2)

ALTER TABLE Билет
ADD CHECK(Номер_места Between 0 and 250)

(3)

ALTER TABLE Билет
ALTER Номер_места INT CHECK(
Номер_места Between 0 and 250)

Назовите отличительные черты реляционных баз данных.

(1) основой реляционной БД является понятие математических отношений

(2) основной объект реляционной БД - двумерные таблицы и связи между ними

(3) основной объект реляционной БД - записи и указатели на них

(4) основной объект реляционной БД - иерархические структуры типа бинарных деревьев

Дано представление.

CREATE VIEW view1
AS
SELECT Название_блюда, Калорийность, Стоимость
FROM Блюдо
WHERE Тип_блюда=’Десерт’
WITH CHECK OPTION

Предпринимается попытка выполнить команду вставки данных в представление.

INSERT INTO view1(
Название_блюда, Калорийность, Стоимость)
VALUES ('Торт Киевский',458,78.50)

Результатом выполнения команды (при отсутствии каких-либо ограничений при создании таблицы) является следующее:

(1) в таблицу Блюдо будет добавлена запись

Название_блюда Калорийность Стоимость Тип_блюда
Торт Киевский 458 78.50 Десерт

(2) в таблицу Блюдо будет добавлена запись

Название_блюда Калорийность Стоимость Тип_блюда
Торт Киевский 458 78.50 NULL

(3) данные в представление view1 будут успешно добавлены

(4) команда не будет выполнена.

Разработана функция, определяющая для указанного типа блюд среднюю стоимость.

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='Десерт'

Создана процедура для увеличения на заданный % стоимости блюд определенного типа.

CREATE PROC my_proc1
@p FLOAT,
@t VARCHAR(20)
AS
UPDATE Блюдо SET Стоимость = Стоимость*(1+@p)
WHERE Тип_блюда=@t

Определите правильную команду для выполнения процедуры.

(1)

EXEC my_proc1 0.2,'Десерт'

(2)

EXEC my_proc1 @p=0.2,'Десерт'

(3)

EXEC my_proc1 'Десерт', 0.2

Разработан курсор для вывода списка десертов.

DECLARE @b VARCHAR(50),
@t VARCHAR(50),
@k INT,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ' Меню'
DECLARE cursor1 CURSOR FOR
SELECT Название_блюда, Калорийность, Тип_блюда
FROM Блюдо
WHERE Тип_блюда="Десерт"

OPEN cursor1
SET @cur1=cursor1
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @message='Блюдо '+@b+
' Калорийность '+ CAST(@k AS VARCHAR(4))
PRINT @message
FETCH NEXT FROM cursor1 INTO @t, @b, @k
END
CLOSE cursor1
DEALLOCATE cursor1

Укажите правильные ответы.

(1) курсор написан без ошибок

(2) в операторе FETCH порядок следования переменных не соответствует полям оператора SELECT в объявлении курсора

(3) нет установки на первую запись курсора

(4) переприсваивание открытого курсора (оператор SET) недопустимо

Даны таблицы Блюдо и Компонент. Создать триггер, обрабатывающий вставку одной записи в таблицу Компонент. При этом в таблице Блюдо должна увеличиться стоимость соответствующего блюда.

CREATE TRIGGER trig_ins
ON Компонент FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @b VARCHAR(20),
      @s MONEY
SELECT @b=Название_блюда,
@s=Стоимость_компонента
FROM inserted
UPDATE Блюдо
SET Стоимость_блюда=Стоимость_блюда+@s
WHERE Название_блюда=@b

(2)

UPDATE Блюдо
SET Стоимость_блюда=
Стоимость_блюда+inserted.Стоимость_компонента
WHERE Название_блюда=inserted.Название_блюда

(3)

UPDATE Блюдо
SET Стоимость_блюда=Стоимость_блюда+(
SELECT Стоимость_компонента
      FROM inserted)
WHERE Блюдо.Название_блюда=
inserted.Название_блюда

(4)

UPDATE Блюдо
SET Стоимость_блюда=Стоимость_блюда+(
SELECT Стоимость_компонента
      FROM inserted
   WHERE Блюдо.Название_блюда=
inserted.Название_блюда)

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, --номер работы
нач_соб INT, --начальное событие
кон_соб INT, --конечное событие
длит INT) --длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1".

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

CREATE TRIGGER trig_ins
ON Граф FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e INT
SELECT @e=нач_соб FROM inserted
IF EXISTS(SELECT * FROM Граф WHERE кон_соб>@e)
ROLLBACK TRAN

(2)

IF EXISTS(SELECT * FROM Граф
      WHERE кон_соб>ANY(SELECT @e=нач_соб
FROM inserted)
ROLLBACK TRAN

(3)

IF EXISTS(SELECT * FROM Граф
      WHERE кон_соб>(SELECT @e=нач_соб
FROM inserted)
ROLLBACK TRAN

(4)

DECLARE @e INT
SELECT @e=нач_соб FROM inserted
IF NOT EXISTS(SELECT * FROM Граф
WHERE кон_соб<@e)
ROLLBACK TRAN

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN
SAVE TRANSACTION p1
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, 'a',10)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, 'b',20)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, 'c',30)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, 'd',40)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (5, 'e',50)

SAVE TRANSACTION p2
DELETE FROM Товар WHERE Код_Товара=2
SAVE TRANSACTION p3
DELETE FROM Товар WHERE Код_Товара=5
SAVE TRANSACTION p4
DELETE FROM Товар
WHERE Код_Товара<2 OR Код_Товара>4
ROLLBACK TRANSACTION p3
INSERT Товар (Код_Товара, Название, остаток)
VALUES (6, 'f',60)
SAVE TRANSACTION p5
INSERT Товар (Код_Товара, Название, остаток)
VALUES (7, 'g',70)
ROLLBACK TRANSACTION p5
COMMIT

После завершения транзакции в таблице Товар останутся товары с кодами:

(1) Код_Товара: 1, 3, 4, 5, 6

(2) Код_Товара: 1, 3, 4, 6

(3) Код_Товара: 3, 4, 6,7

(4) в таблице записей нет

В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?

Basa_user
Администратор UserA UserB
GRANT ALL TO UserB    CREATE TABLE tab
(id_t INT PRIMARY KEY,
nam_t VARCHAR(20))
INSERT INTO tab values (1,'aa') INSERT INTO tab values
(2,'bb')
INSERT INTO tab values
(3,'cc')
? ? ?

(1)

Выполнено Выполнено Отклонено

(2)

Отклонено Выполнено Выполнено

(3)

Отклонено Отклонено Выполнено

(4)

Выполнено Выполнено Выполнено

Дан фрагмент сценария VBScript для выборки данных из таблицы Блюдо, расположенной в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject("ADODB.Connection")
Set rst=Server.CreateObject("ADODB.Recordset")
cn.open "pwd=user1;driver={SQL Server};
server=its; database = basa_user1"
rst.open "SELECT Название_блюда,
Время_приготовления, Калорийность FROM Блюдо"
do until rst.eof
response.write rst.fields(0)
response.write rst.fields(1)
response.write rst.fields(2)&"<br>"
loop

Указать правильные ответы.

(1) при открытии запроса не указано соединение

(2) при обработке результата число полей не соответствует количеству полей в операторе SELECT

(3) при открытии соединения не указан пользователь

(4) ошибок нет

Пусть номер паспорта состоит из 6 цифр, например: 321285. Укажите правильный тип данных для его описания.

(1) Digits CHAR(6)

(2) Паспорт CHAR(4)

(3) Pasport FLOAT

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1
ON PRIMARY
( NAME=b1, FILENAME=’D:userb1.mdf’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),
(NAME=b2, FILENAME=’D:userb2.mdf’,
SIZE=10MB, MAXSIZE=500, FILEGROWTH=10%)
LOG ON
(NAME=l1, FILENAME=’E:userl1.ldf’,
SIZE=50MB, MAXSIZE=10, FILEGROWTH=10)

Выберите правильный ответ.

(1) база данных будет успешно создана

(2) неправильно указано физическое имя базы данных

(3) неправильно указано логическое имя базы данных

(4) неправильно определен размер базы данных

Пусть дана таблица Блюдо с полями

Название_блюда VARCHAR(20)
Время_приготовления DATETIME
Калорийность INT
Повар VARCHAR(20)
Стоимость MONEY

Определить повара, стоимость блюд которого не превышает 100 руб., а калорийность – 400 ккал.

(1)

SELECT Повар, Калорийность, Стоимость
FROM Блюдо
WHERE Калорийность<=400 AND Стоимость<=100

(2)

SELECT Повар, Калорийность, Стоимость
FROM Блюдо
WHERE Калорийность>400 OR Стоимость<100

(3)

SELECT Повар, Калорийность, Стоимость
FROM Блюдо
WHERE Between(Калорийность<400 AND Стоимость<100)

(4)

SELECT Повар, Калорийность, Стоимость
FROM Блюдо
WHERE Калорийность<=400 OR Стоимость<=100

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость INT )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Жиры INT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость_100_грамм FLOAT NOT NULL)

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

(1)

SELECT Компонент.Название_компонента, Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Блюдо.Повар="Иванов"

(2)

SELECT Компонент.Название_компонента, Блюдо.Повар
FROM Блюдо,Компонент
WHERE Блюдо.Название_блюда = Компонент.Блюдо AND
Блюдо.Повар="Иванов"

(3)

SELECT Компонент.Название_компонента, Блюдо.Повар
FROM Блюдо INNER Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
AND Блюдо.Повар="Иванов"

(4)

SELECT Компонент.Название_компонента, Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Повар="Иванов"
AND Блюдо.Название_блюда = Компонент.Блюдо

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость MONEY )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Вес FLOAT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость MONEY NOT NULL)

Рассчитать общую стоимость и калорийность компонентов блюда.

(1)

SELECT Название_компонента,
Стоимость*Вес AS Общ_Стоимость,
Калорийность*Вес AS Общ_калорийность
FROM Компонент

(2)

SELECT Название_компонента,
Общ_Стоимость =Стоимость*Вес,
Общ_калорийность =Калорийность*Вес
FROM Компонент

(3)

SELECT Название_компонента,
@s=Стоимость*Вес, @k=Калорийность*Вес
FROM Компонент

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость MONEY )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Вес FLOAT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость MONEY NOT NULL)

Определить блюдо, которое можно приготовить быстрее всех остальных блюд.

(1)

SELECT Блюдо.Название_блюда,
Блюдо.Время_приготовления
FROM Блюдо
WHERE Блюдо.Время_приготовления=
(SELECT Min(Блюдо.Время_приготовления)
FROM Блюдо)

(2)

SELECT Блюдо.Название_блюда,
Блюдо.Время_приготовления
FROM Блюдо
WHERE Блюдо.Время_приготовления<=
ALL(SELECT Блюдо.Время_приготовления
FROM Блюдо)

(3)

SELECT Блюдо.Название_блюда,
Блюдо.Время_приготовления
FROM Блюдо
WHERE Блюдо.Время_приготовления=
Min(Блюдо.Время_приготовления)

(4)

SELECT Блюдо.Название_блюда,
Блюдо.Время_приготовления
FROM Блюдо
WHERE Блюдо.Время_приготовления=
Min (SELECT Блюдо.Время_приготовления)
FROM Блюдо)

Пусть дана таблица Блюдо с полями

Название_блюда 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,’Второе’)

Даны две таблицы. Определить в них первичные ключи.

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20),
Время_приготовления INT,
Общая_калорийность INT,
Повар VARCHAR(20),
Стоимость MONEY,
Тип_блюда VARCHAR(20))

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT,
Стоимость_компонента FLOAT )

(1)

ALTER TABLE Блюдо
ALTER
COLUMN Название_блюда VARCHAR(20) NOT NULL
ALTER TABLE Блюдо
ADD CONSTRAINT pk1 PRIMARY KEY (
Название_блюда)

ALTER TABLE Компонент
ALTER
COLUMN Название_компонента VARCHAR(20) NOT NULL
ALTER TABLE Компонент
ADD CONSTRAINT pk2 PRIMARY KEY (
Название_компонента)

(2)

ALTER TABLE Блюдо
ALTER
COLUMN Название_блюда VARCHAR(20) NOT NULL
ALTER TABLE Блюдо
ADD PRIMARY KEY (Название_блюда)

ALTER TABLE Компонент
ALTER
COLUMN Название_компонента VARCHAR(20) NOT NULL
ALTER TABLE Компонент
ADD PRIMARY KEY (Название_компонента)

(3)

ALTER TABLE Блюдо
ADD PRIMARY KEY (Название_блюда)

ALTER TABLE Компонент
ALTER
COLUMN Название_компонента VARCHAR(20) NOT NULL
ALTER TABLE Компонент
ADD COLUMN Блюдо VARCHAR(20) NOT NULL
ALTER TABLE Компонент
ADD PRIMARY KEY (Название_компонента, Блюдо)

Определите роль языка SQL в создании информационных систем.

(1) разработка структуры БД

(2) организация пользовательского интерфейса

(3) обеспечение различных представлений данных

(4) преобразование данных

Дано представление с вычислениями.

CREATE VIEW view2
AS
SELECT Название_блюда, Тип_блюда,
Стоимость, Стоимость*0.05 AS Налог
FROM Блюдо
WHERE Стоимость>100

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Стоимость=Стоимость*1.5
WHERE Тип_блюда='Десерт'

Результатом выполнения команды является следующее:

(1) в таблице Блюдо будет изменена стоимость десертов дороже 100 руб

(2) в таблице Блюдо будет изменена стоимость всех десертов

(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()

Для определения общей калорийности блюд указанного типа, приготовленных заданным поваром, разработана процедура:

CREATE PROC my_proc2
@t VARCHAR(20),
@p VARCHAR(20),
@k FLOAT OUTPUT
AS
SELECT @k=Sum(Компонент.Калорийность*Компонент.Вес)
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
GROUP BY Блюдо.Тип_блюда, Блюдо.Повар
HAVING Блюдо.Тип_блюда=@t AND Блюдо.Повар=@p

Укажите правильный вызов процедуры

(1)

DECLARE @st FLOAT
EXEC my_proc2 'Десерт',’Иванов’,@st OUTPUT
SELECT @st

(2)

DECLARE @st FLOAT
EXEC my_proc2 @k=@st OUTPUT, 'Десерт',’Иванов’
SELECT @st

(3)

DECLARE @st FLOAT
EXEC my_proc2 @p=’Иванов’,'Десерт', @st OUTPUT
SELECT @st

(4)

DECLARE @st FLOAT
EXEC my_proc2 @p=’Иванов’, @t='Десерт',
@k=@st OUTPUT
SELECT @st

Разработана процедура, возвращающая список названий десертов.

CREATE PROC my_proc
@cur CURSOR VARYING OUTPUT
AS
SET @cur=CURSOR FORWARD_ONLY STATIC FOR
SELECT Название_блюда, Калорийность, Тип_блюда
FROM Блюдо
WHERE Тип_блюда="Десерт"

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

DECLARE @my_cur CURSOR
DECLARE @n VARCHAR(20)
EXEC my_proc @cur=@my_cur OUTPUT
OPEN @cur
WHILE (@@FETCH_STATUS=0)
BEGIN
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
END
CLOSE @my_cur
DEALLOCATE @my_cur

Укажите правильные ответы.

(1) ошибок ни в процедуре, ни в ее вызове нет

(2) при вызове процедуры в обработке курсора осуществляется переход на первую запись в курсоре

(3) в процедуре следует открыть курсор

Даны таблицы Блюдо и Компонент. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором блюде из таблицы Блюдо. При этом в таблице Компонент необходимо для всех компонентов удаленного блюда в качестве значения поля Название_блюда поставить значение NULL.

CREATE TRIGGER trig_del
ON Блюдо FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @b VARCHAR(20)
SELECT @b=Название_блюда
FROM deleted
UPDATE Компонент SET Название_блюда=NULL
WHERE Название_блюда=@b

(2)

DECLARE @b VARCHAR(20)
SELECT @b=Название_блюдаFROM deleted
UPDATE Компонент SET Название_блюда is NULL
WHERE Название_блюда=@b

(3)

UPDATE Компонент SET Название_блюда is NULL
WHERE Название_блюда=deleted.Название_блюда

(4)

UPDATE Компонент SET Название_блюда = NULL
WHERE Название_блюда=(SELECT Название_блюда
      FROM deleted)

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, --номер работы
нач_соб INT, --начальное событие
кон_соб INT, --конечное событие
длит INT) --длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1".

Разработать триггер для удаления работы, причем при попытке удаления единственной работы, приводящей к данному конечному событию, отменить удаление, заменив в удаляемой работе начальное событие на исток (т.е. на начальное событие под номером 1).

CREATE TRIGGER trig_del
ON Граф INSTEAD OF DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e INT,@n INT
SELECT @n=номер, @e=кон_соб FROM deleted
IF NOT EXISTS(SELECT * FROM Граф
      WHERE номер<>@n AND кон_соб=@e )
   UPDATE Граф SET нач_соб=1 WHERE номер=@n
ELSE
   DELETE FROM Граф WHERE номер=@n

(2)

DECLARE @e INT,@n INT
SELECT @n=номер, @e=кон_соб FROM deleted
IF EXISTS(SELECT * FROM Граф
      WHERE номер<>@n AND кон_соб<>@e )
   UPDATE Граф SET нач_соб=1 WHERE номер=@n
ELSE
   DELETE FROM Граф WHERE @e=кон_соб

(3)

DECLARE @e INT,@n INT
SELECT @n=номер, @e=кон_соб FROM deleted
IF NOT EXISTS(SELECT * FROM Граф
      WHERE номер<>@n AND кон_соб=@e )
   UPDATE Граф SET нач_соб=1 WHERE кон_соб=@e
ELSE
   DELETE FROM Граф WHERE кон_соб=@e

(4)

DECLARE @e INT,@n INT
SELECT @n=номер, @e=кон_соб FROM deleted
IF номер<>@n AND кон_соб=@e
   UPDATE Граф SET нач_соб=1 WHERE номер=@n
ELSE
   DELETE FROM Граф WHERE номер=@n

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN A
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, 'a',40)
BEGIN TRAN B
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, 'b',50)
UPDATE Товар SET Название =’m’ WHERE Код_Товара=1
BEGIN TRAN C
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, 'c',60)
ROLLBACK TRAN C
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, 'd',70)
UPDATE Товар SET Название =’k’ WHERE Код_Товара=1
ROLLBACK TRAN

После завершения транзакции в таблице Товар останутся товары с названиями:

(1) в таблице записей нет.

(2) Названия: ‘k’, ‘b’, ‘c’, ‘d’

(3) Названия: ‘k’

(4) Названия: ‘d’, ‘k’

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2

3

4

5

GRANT ALL TO
UserA

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8));

GRANT INSERT ON
tab TO UserB
WITH GRANT
OPTION;

REVOKE INSERT ON
tab
TO UserB CASCADE

GRANT INSERT ON
UserA.tab TO UserC

 
6 INSERT INTO
UserA.tab
values(1,'aa')
INSERT INTO
UserA.tab values
(2,'bb')
INSERT INTO
UserA.tab values
(3,'сс')
SELECT * FROM
UserA.tab
7 ? ? ? ?

(1)

7 Выполнено Выполнено Отклонено Отклонено

(2)

7 Выполнено Отклонено Выполнено Отклонено

(3)

7 Отклонено Выполнено Отклонено Выполнено

(4)

7 Отклонено Отклонено Выполнено Отклонено

Дан фрагмент Java-программы для выборки данных из таблицы Блюдо, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection myCon= DriverManager.getConnection(
"jdbc:odbc:mystud","user1","user1");
Statement mySt=myCon.createStatement();
ResultSet rs=mySt.executeQuery(
"SELECT Название_блюда,
Калорийность FROM Блюдо ");
while (rs.next()) {
String var1=rs.getString(1);
String var2=rs.getString(2);
String var3=rs.getString(3);
...
}

Указать правильные ответы.

(1) при выборке данных из результата запроса число полей не соответствует количеству полей в операторе SELECT

(2) в цикле обработки результата запроса нет перехода на новую запись

(3) поля в операторе SELECT не соответствуют по типу значениям, которые выбираются из результата запроса

(4) ошибок нет

Какое из следующих чисел можно внести в поле, описанное как DECIMAL(6,3)?

(1) 56716.222

(2) -123.423

(3) -415.3567

В базе данных в таблице Блюдо необходимо хранить сведения о входящих в меню блюдах с указанием названия, времени приготовления, калорийности, стоимости, веса и фамилии повара. Для описания данных используются следующие поля:

(1)

Название_блюда VARCHAR(20)
Время_приготовления INT NOT NULL
Калорийность INT NOT NULL
Повар VARCHAR(20)
Вес FLOAT
Стоимость MONEY

(2)

Название_блюда VARCHAR(20)
Время_приготовления DATETIME NOT NULL
Калорийность CHAR(4) NOT NULL
Повар VARCHAR(20)
Вес INT(5)
Стоимость DECIMAL(2,2)

(3)

Название_блюда VARCHAR(20)
Время_приготовления CHAR(2:2:2)
Калорийность INT NOT NULL
Повар VARCHAR(20)
Вес FLOAT
Стоимость MONEY

(4)

Название_блюда VARCHAR(20)
Время_приготовления INT(6) NOT NULL
Калорийность INT(4) NOT NULL
Повар VARCHAR(20)
Вес FLOAT(7,2)
Стоимость MONEY(4,2)

Пусть дана таблица Блюдо.

Название_блюда VARCHAR(20)
Время_приготовления DATETIME
Калорийность INT
Повар VARCHAR(20)
Стоимость MONEY

Определить список блюд, приготовленных поваром Ивановым менее чем за 3 мин или более чем за 20 мин.

(1)

SELECT Название_блюда, Повар,
Время_приготовления
FROM Блюдо
WHERE Повар='Иванов' AND (Время_приготовления<3
Or Время_приготовления>20)

(2)

SELECT Название_блюда, Повар,
Время_приготовления
FROM Блюдо
WHERE Повар='Иванов' AND Время_приготовления<3
Or Время_приготовления>20

(3)

SELECT Название_блюда, Повар,
Время_приготовления
FROM Блюдо
WHERE Повар='Иванов' OR Время_приготовления<3
OR Время_приготовления>20

(4)

SELECT Название_блюда, Повар,
Время_приготовления
FROM Блюдо
WHERE Повар='Иванов' AND
Время_приготовления Between (<3 Or >20)

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость INT )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Жиры INT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость_100_грамм FLOAT NOT NULL)

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

(1)

SELECT Блюдо.Повар, Блюдо.Название_блюда,
Компонент.Название_компонента
FROM Блюдо LEFT JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента Is Null

(2)

SELECT Блюдо.Повар, Блюдо.Название_блюда,
Компонент.Название_компонента
FROM Блюдо RIGHT JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента Is Null

(3)

SELECT Блюдо.Повар, Блюдо.Название_блюда,
Компонент.Название_компонента
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента Is Null

(4)

SELECT Блюдо.Повар, Блюдо.Название_блюда,
Компонент.Название_компонента
FROM Блюдо,Компонент
WHERE Блюдо.Название_блюда = Компонент.Блюдо
AND Компонент.Название_компонента Is Null

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость MONEY )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Вес FLOAT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость MONEY NOT NULL)

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

(1)

SELECT Блюдо.Повар,
Sum(Компонент.Вес*Компонент.Стоимость)
AS Общ_Стоимость,
Count(Компонент.Название_компонента)
AS Кол_компонент
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
GROUP BY Блюдо.Повар

(2)

SELECT Блюдо.Повар,
Sum(Компонент.Вес*Компонент.Стоимость)
AS Общ_Стоимость,
Count(Компонент.Название_компонента)
AS Кол_компонент
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо

(3)

SELECT Sum(Вес* Стоимость) AS Общ_Стоимость,
Count(Название_компонента) AS Кол_компонент
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
GROUP BY Повар

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Тип_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость MONEY )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Вес FLOAT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость MONEY NOT NULL)

Определить, кто из поваров не готовит десерт.

(1)

SELECT DISTINCT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Повар NOT IN (SELECT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт")

(2)

SELECT DISTINCT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Тип_блюда<>"Десерт"

(3)

SELECT DISTINCT Блюдо.Повар
FROM Блюдо
WHERE NOT EXISTS (SELECT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт")

(4)

SELECT DISTINCT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Повар<> ALL (SELECT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт")

Пусть дана таблица Блюдо с полями

Название_блюда 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

Даны таблицы Блюдо и Компонент.

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20),
Время_приготовления INT,
Общая_калорийность INT,
Повар VARCHAR(20),
Стоимость MONEY,
Тип_блюда VARCHAR(20))

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT,
Стоимость_компонента FLOAT )

Между ними необходимо установить связь "один-ко-многим" (одно блюдо - много компонент) с учетом первичных ключей.

(1)

ALTER TABLE Компонент
ADD Блюдо VARCHAR(20)
ALTER TABLE Компонент
ALTER COLUMN Блюдо VARCHAR(20) NOT NULL
ALTER TABLE Компонент
ADD CONSTRAINT fk_Компонент
FOREIGN KEY(Блюдо)
REFERENCES Блюдо(Название_блюда)

(2)

ALTER TABLE Компонент
ADD Название_блюда VARCHAR(20)

ALTER TABLE Компонент
ADD FOREIGN KEY(Название_блюда)
REFERENCES Блюдо

(3)

ALTER TABLE Компонент
ADD COLUMN Название_блюда VARCHAR(20) NOT NULL

ALTER TABLE Блюдо
ADD FOREIGN KEY(Название_компонента)
REFERENCES Компонент

(4)

ALTER TABLE Компонент
ADD COLUMN Название_блюда VARCHAR(20) FOREIGN KEY
REFERENCES Блюдо

Какие функции перешли к среднему уровню обработки данных в трехуровневой архитектуре «клиент-сервер»?

(1) управление пользовательским интерфейсом

(2) управление логикой приложения

(3) хранение данных

(4) обработка запросов

Дано представление с данными из разных таблиц.

CREATE VIEW view3
AS
SELECT Блюдо.Название_блюда,
Компонент.Название_компонента, Компонент.Вес
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо;

Предпринимается попытка добавить в представление запись.

INSERT INTO view3(
Название_блюда, Название_компонента, Вес)
VALUES('Щи','Капуста',0.350)

Результатом выполнения команды является следующее:

(1) в таблицы Блюдо и Компонент будут добавлены записи

(2) запись будет добавлена только в таблицу Блюдо

(3) данные в представление view3 будут успешно добавлены

(4) команда не будет выполнена

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

(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 Название_компонента

Для определения общей калорийности блюд установленного типа, приготовленных заданным поваром, разработана процедура:

CREATE PROC my_proc3
@t varchar(50),
@p varchar(50),
@k FLOAT =10.0 OUTPUT
AS
SELECT @k=Sum(Компонент.Калорийность*Компонент.Вес)
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
GROUP BY Блюдо.Тип_блюда, Блюдо.Повар
HAVING Блюдо.Тип_блюда=@t AND Блюдо.Повар=@p

Укажите правильный вызов процедуры

(1)

DECLARE @st FLOAT
EXEC my_proc3 'Десерт',’Иванов’,@st OUTPUT
SELECT @st

(2)

DECLARE @st FLOAT
EXEC my_proc3 ’Иванов’,'Десерт', @st OUTPUT
SELECT @st

(3)

DECLARE @st FLOAT
EXEC my_proc3 @p=’Иванов’,@k=@st OUTPUT
SELECT @st

(4)

DECLARE @st FLOAT
EXEC my_proc3 @st OUTPUT
SELECT @st

Разработан курсор для вывода списка десертов.

DECLARE @b VARCHAR(50),
@t VARCHAR(50),
@k INT,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ' Меню'
DECLARE cursor1 CURSOR GLOBAL
FORWARD_ONLY DYNAMIC FOR
SELECT Название_блюда, Калорийность, Тип_блюда
FROM Блюдо
WHERE Тип_блюда="Десерт"

OPEN cursor1
SET @cur1=cursor1
FETCH LAST FROM cursor1 INTO @t, @b, @k
FETCH ABSOLUTE 2 FROM cursor1 INTO @t, @b, @k
FETCH RELATIVE -2 FROM cursor1 INTO @t, @b, @k

SELECT @message='Блюдо '+@b+
' Калорийность '+ CAST(@k AS VARCHAR(4))
PRINT @message
CLOSE cursor1
DEALLOCATE cursor1

Какая из имеющихся в курсоре записей будет распечатана?

(1) первая запись

(2) произошло обращение к строке за пределами курсора

(3) объявление курсора запрещает произвольный переход по записям

(4) вторая запись

Даны таблицы Блюдо и Компонент. Создать триггер, обрабатывающий изменение стоимости одного компонента в таблице Компонент. При этом в таблице Блюдо должна измениться стоимость соответствующего блюда.

CREATE TRIGGER trig_upd
ON Компонент FOR UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @b_i VARCHAR(20),@b_d VARCHAR(20),
      @s_i MONEY,@s_d MONEY
SELECT @b_i=Название_блюда, @s_i=
Стоимость_компонента
FROM inserted
SELECT @b_d=Название_блюда, @s_d=
Стоимость_компонента
FROM deleted
UPDATE Блюдо SET Стоимость_блюда=
Стоимость_блюда-@s_d
WHERE Название_блюда=@b_d
UPDATE Блюдо SET Стоимость_блюда=
Стоимость_блюда+@s_i
WHERE Название_блюда=@b_i

(2)

UPDATE Блюдо
SET Стоимость_блюда=
Стоимость_блюда-deleted.Стоимость_компонента
WHERE Название_блюда=deleted.Название_блюда
UPDATE Блюдо SET Стоимость_блюда=Стоимость_блюда+
inserted.Стоимость_компонента
WHERE Название_блюда=inserted.Название_блюда

(3)

UPDATE Блюдо
SET Стоимость_блюда=
Стоимость_блюда-deleted.Стоимость_компонента
+inserted.Стоимость_компонента
WHERE Название_блюда=inserted.Название_блюда

(4)

UPDATE Блюдо
SET Стоимость_блюда=
Стоимость_блюда-(SELECT Стоимость_компонента
      FROM deleted)
   WHERE Название_блюда=(SELECT Название_блюда
      FROM deleted)
UPDATE Блюдо SET Стоимость_блюда=
Стоимость_блюда+(SELECT Стоимость_клмпонента
      FROM inserted)
   WHERE Название_блюда=(SELECT Название_блюда
      FROM inserted)

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, --номер работы
нач_соб INT, --начальное событие
кон_соб INT, --конечное событие
длит INT) --длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1".

Если изменяется только номер конечного события и это изменение приводит к появлению параллельной работы, отменить изменение.

CREATE TRIGGER trig_upd
ON Граф FOR UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

IF (COLUMNS_UPDATED() ^ 4)=4
   BEGIN
      DECLARE @e1 INT, @e2 INT,@n INT
      SELECT @n=номер, @e1=нач_соб, @e2=кон_соб
      FROM inserted
      IF EXISTS(SELECT *
         FROM Граф
         WHERE номер<>@n AND
нач_соб=@e1 AND кон_соб=@e2 )
      ROLLBACK TRAN
   END

(2)

IF UPDATE(кон_соб)
   BEGIN
      DECLARE @e1 INT, @e2 INT,@n INT
      SELECT @n=номер, @e1=нач_соб, @e2=кон_соб
      FROM inserted
      IF EXISTS(SELECT *
         FROM Граф
         WHERE номер<>@n AND
нач_соб=@e1 AND кон_соб=@e2 )
      ROLLBACK TRAN
   END

(3)

      DECLARE @e1 INT, @e2 INT,@n INT
      SELECT @n=номер, @e1=нач_соб, @e2=кон_соб
      FROM inserted
IF UPDATE(кон_соб)

      IF EXISTS(SELECT *
         FROM Граф
         WHERE номер<>@n AND
нач_соб=@e1 AND кон_соб=@e2 )
      ROLLBACK TRAN

(4)

      DECLARE @e1 INT, @e2 INT,@n INT
      SELECT @e1=нач_соб, @e2=кон_соб
      FROM inserted
IF (COLUMNS_UPDATED() & 4)=4
      IF EXISTS(SELECT *
         FROM Граф
         WHERE нач_соб=@e1 AND кон_соб=@e2 )
      ROLLBACK TRAN

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL
SERIALIZABLE

BEGIN TRANSACTION TRA
1.SELECT * FROM Товар

3.UPDATE Товар SET
остаток=остаток+10 WHERE Код_Товара=4

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION
LEVEL REPEATABLE READ

BEGIN TRANSACTION TRB

2.SELECT * FROM Товар

4.DELETE FROM Товар WHERE
Код_Товара=4
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

(1)

1 2 3 4
Выполняется Выполняется Выполняется Выполняется

(2)

1 2 3 4
Блокируется Выполняется Блокируется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserB'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA
WITH GRANT
OPTION

REVOKE INSERT ON
tab
TO UserA CASCADE

GRANT INSERT ON
tab TO UserC

   
9 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
10 ? ? ? ?

(1)

10 Выполнено Выполнено Выполнено Отклонено

(2)

10 Выполнено Отклонено Выполнено Отклонено

(3)

10 Отклонено Выполнено Отклонено Выполнено

(4)

10 Выполнено Отклонено Выполнено Выполнено

Дан фрагмент сценария VBScript для изменения данных в таблице Блюдо.

prm1=Server.CreateObject("ADODB.Parameter")
prm2=Server.CreateObject("ADODB.Parameter")
cmd.CommandText = "update Блюдо set Калорийность=?
where Тип_блюда=?"
cmd.CommandType = adCmdText
cmd.Prepared = True
Set prm1 = сmd.CreateParameter(
"p1", adVarChar, adParamInput,8 ,'200')
Set prm2 = сmd.CreateParameter(
"p2", adVarChar, adParamInput,20 ,'Десерт')
cmd.Parameters.Append prm1
cmd.Parameters.Append prm2
cmd.Execute

Указать правильные ответы.

(1) ошибок нет

(2) неправильно указаны типы параметров

(3) последовательность добавления параметров в коллекцию параметров не соответствует следованию знаков «?»

(4) параметры неправильно добавляются в коллекцию параметров

Какие из следующих описаний типов являются неправильными?

(1) NUMERIC(7,7)

(2) NUMERIC(3,4)

(3) NUMERIC(11,2)

(4) NUMERIC(65,34)

В таблицу Блюдо необходимо добавить сведения о содержании жиров в блюде (в %) и заменить тип поля Время_приготовления на вещественный.

(1)

ALTER TABLE Блюдо ADD Жиры INT
ALTER TABLE ALTER
COLUMN Время_приготовления DECIMAL(6,3)

(2)

ALTER TABLE Блюдо ADD COLUMN Жиры INT
ALTER TABLE Блюдо DROP Время_приготовления
ALTER TABLE Блюдо
ADD COLUMN Время_приготовления FLOAT(3,4)

(3)

ALTER TABLE Блюдо
ADD COLUMN Жиры INT(4)
ALTER TABLE Блюдо
ALTER COLUMN Время_приготовления FLOAT

(4)

ALTER TABLE Блюдо
ADD COLUMN Жиры INT
ALTER TABLE Блюдо
ALTER COLUMN Время_приготовления FLOAT

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость INT )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Жиры INT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость_100_грамм FLOAT NOT NULL)

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

(1)

SELECT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Повар IN
(SELECT Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента='Масло')
AND Блюдо.Повар IN(
SELECT Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента='Молоко');

(2)

SELECT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Повар IN
(SELECT Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента='Масло' AND
Компонент.Название_компонента='Молоко')

(3)

SELECT Блюдо.Повар
FROM Блюдо
WHERE Компонент.Название_компонента='Масло' AND
Компонент.Название_компонента="Молоко"

(4)

SELECT Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента='Масло' AND
Компонент.Название_компонента='Молоко'

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость MONEY )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Вес FLOAT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость MONEY NOT NULL)

Определить самое калорийное блюдо.

(1)

SELECT Компонент.Блюдо,
Sum(Компонент.Калорийность*Компонент.Вес) AS
Общ_калорийность
FROM Компонент
GROUP BY Компонент.Блюдо
HAVING Sum(Компонент.Калорийность*Компонент.Вес)>=
ALL(SELECT
Sum(Компонент.Калорийность*Компонент.Вес)
FROM Компонент
GROUP BY Компонент.Блюдо)

(2)

SELECT Компонент.Блюдо,
Sum(Компонент.Калорийность*Компонент.Вес) AS
Общ_калорийность
FROM Компонент
GROUP BY Компонент.Блюдо
HAVING Sum(Компонент.Калорийность*Компонент.Вес)=
MAX(SELECT
Sum(Компонент.Калорийность*Компонент.Вес)
FROM Компонент
GROUP BY Компонент.Блюдо)

(3)

SELECT Компонент.Блюдо,
Sum(Компонент.Калорийность*Компонент.Вес) AS
Общ_калорийность
FROM Компонент
GROUP BY Компонент.Блюдо
HAVING Sum(Компонент.Калорийность*Компонент.Вес)>=
ALL(SELECT
Sum(Компонент.Калорийность*Компонент.Вес)
FROM Компонент)

(4)

SELECT Компонент.Блюдо,
Sum(Компонент.Калорийность*Компонент.Вес) AS
Общ_калорийность
FROM Компонент
WHERE Sum(Компонент.Калорийность*Компонент.Вес)>=
ALL(SELECT
Sum(Компонент.Калорийность*Компонент.Вес)
FROM Компонент)

Пусть дана таблица Блюдо с полями

Название_блюда 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

Даны таблицы Блюдо и Компонент.

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20),
Время_приготовления INT,
Общая_калорийность INT,
Повар VARCHAR(20),
Стоимость MONEY,
Тип_блюда VARCHAR(20))

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT,
Стоимость_компонента FLOAT )

В таблице Блюдо ограничить тип блюда заданным списком: десерт, выпечка, закуска.

(1)

ALTER TABLE Блюдо
ADD CONSTRAINT ch1 CHECK(тип_блюда IN (
'десерт', 'выпечка', 'закуска'))

(2)

ALTER TABLE Блюдо
ADD CHECK(тип_блюда IN (
'десерт', 'выпечка', 'закуска'))

(3)

ALTER TABLE Блюдо
ALTER тип_блюда VARCHAR(20) CHECK(
тип_блюда IN ('десерт', 'выпечка', 'закуска'))

(4)

ALTER TABLE Блюдо
ADD CHECK((тип_блюда ='десерт') OR
(тип_блюда = 'закуска') OR (тип_блюда = 'выпечка'))

Дано представление с группировкой.

CREATE VIEW view4
AS
SELECT Повар, Sum(Стоимость) AS Общ_Стоимость
FROM Блюдо
GROUP BY Повар
HAVING Повар="Иванов"

Предпринимается попытка удалить записи:

DELETE FROM view4
WHERE Повар=’Петров’

(1) из таблицы Блюдо будут удалены блюда, приготовленные поварами Ивановым и Петровым

(2) из таблицы Блюдо будут удалены блюда, приготовленные поваром Петровым

(3) команда будет выполнена. Представление не изменится

(4) команда выполнена не будет

Определите команду для вызова функции, создаваемой следующей командой:

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,’Пирожное’)

В базе данных basa1 имеется таблица Блюдо. Из базы данных basa2 необходимо выполнить действие по увеличению стоимости всех блюд на 50%. В какой базе данных должна быть создана процедура и как можно ее выполнить?

(1)

Создание процедуры

USE basa2
CREATE PROC my_proc4
AS
UPDATE basa1.dbo.Блюдо
SET basa1.dbo.Блюдо.Стоимость =
basa1.dbo.Блюдо. Стоимость*1.5

Вызов процедуры

USE basa2
EXEC my_proc4

(2)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE basa1. Блюдо
SET basa1. Стоимость = Стоимость*1.5

Вызов процедуры

USE basa2
EXEC basa1.my_proc4

(3)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE Блюдо
SET basa1. Стоимость = Стоимость*1.5

Вызов процедуры

USE basa2
EXEC my_proc4

(4)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE basa1.dbo.Блюдо
SET basa1.dbo.Блюдо.Стоимость =
basa1.dbo.Блюдо. Стоимость*0.5

Вызов процедуры

USE basa2
EXEC basa1.my_proc4

Пусть в таблице Блюдо есть поле Номер_блюда, и его значения равны 2, 4, 6 ,8 ,10. Создан курсор для вывода списка десертов

DECLARE @b VARCHAR(50),
@t VARCHAR(50),
@k INT,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ' Меню'
DECLARE cursor1 CURSOR LOCAL SCROLL STATIC FOR
SELECT Название_блюда, Калорийность, Номер_блюда
FROM Блюдо
WHERE Тип_блюда="Десерт"

OPEN cursor1
SET @cur1=cursor1
FETCH LAST FROM cursor1 INTO @t, @b, @k
FETCH RELATIVE -3 FROM cursor1 INTO @t, @b, @k
DELETE Блюдо
WHERE CURRENT OF @cur1
FETCH RELATIVE 2 FROM cursor1 INTO @t, @b, @k
UPDATE Блюдо SET Калорийность=Калорийность*1.5
WHERE CURRENT OF cursor1

SELECT @message='Блюдо '+@b+' Калорийность '+
CAST(@k AS VARCHAR(4))
PRINT @message
CLOSE cursor1
DEALLOCATE cursor1

Какие действия выполнит система?

(1) успешно удаляется запись, где Номер_блюда=4 и изменяется запись, где Номер_блюда=10

(2) успешно удаляется запись, где Номер_блюда=6 и изменяется запись, где Номер_блюда=10

(3) делается попытка удалить несуществующую запись

(4) объявление курсора не позволяет изменять и удалять записи

Дана таблица Компонент. Разработать триггер, выполняющийся вместо изменения калорийности одного компонента. Выполнить изменение калорийности только в том случае, если общая калорийность блюда, в состав которого входит изменяемый компонент, не превышает 400 ккал.

CREATE TRIGGER trig_upd
ON Компонент INSTEAD OF UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @n VARCHAR(20),
      @b VARCHAR(20),
      @k INT, @sk INT
SELECT @n=название_компонента,
@b=Название_блюда, @k=калорийность
FROM inserted
SELECT @sk=SUM(калорийность)
FROM Компонент
GROUP BY Название_блюда
HAVING Название_блюда=@b
IF @sk<=400
   UPDATE Компонент SET калорийность=@k
   WHERE название_компонента=@n

(2)

IF SUM(inserted.калорийность)<=400
   UPDATE Компонент
SET калорийность=inserted.калорийность
   WHERE название_компонента=
inserted.название_компонента

(3)

IF (SELECT SUM(калорийность)
FROM Компонент GROUP BY Название_блюда)<=400
   UPDATE Компонент
SET калорийность=inserted.калорийность
   WHERE название_компонента=
inserted.название_компонента

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph
(nomer INT PRIMARY KEY, --номер дуги
outp INT, --номер вершины,
--из которой дуга выходит
inp INT) --номер вершины,
--в которую дуга входит

Создать триггер, обрабатывающий вставку одной записи и запрещающий ввод дуги, если из соответствующей вершины уже выходят 3 дуги.

CREATE TRIGGER trig
ON graph FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
   SELECT @k=COUNT(outp)
   FROM graph
   WHERE outp=@e1
IF @k>3
   ROLLBACK

(2)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
   IF COUNT(outp)>3
   ROLLBACK

(3)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
IF (SELECT COUNT(outp)
   FROM graph
   WHERE outp=@e2)>3
   ROLLBACK

(4)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM inserted
IF (COUNT(outp)
   FROM graph
   WHERE outp=@e2)>3
   ROLLBACK

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL READ
UNCOMMITTED

BEGIN TRANSACTION TRA
1. INSERT Товар(Код_Товара,Название,
остаток)
VALUES (3,'SS',999)

3.UPDATE Товар SET
остаток=остаток+10 WHERE Код_Товара=4

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION
LEVEL READ
COMMITTED

BEGIN TRANSACTION TRB

2.SELECT * FROM Товар

4.DELETE FROM Товар WHERE
Код_Товара=3
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

(1)

1 2 3 4
Выполняется Блокируется Выполняется Блокируется

(2)

1 2 3 4
Блокируется Выполняется Блокируется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserB'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserC
WITH GRANT
OPTION

DENY INSERT ON
tab role1

 

GRANT INSERT ON
tab TO UserA

 
9 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
10 ? ? ? ?

(1)

10 Выполнено Отклонено Отклонено Выполнено

(2)

10 Выполнено Отклонено Выполнено Отклонено

(3)

10 Выполнено Выполнено Отклонено Выполнено

(4)

10 Отклонено Отклонено Выполнено Отклонено

Дан фрагмент Java-программы для изменения данных в таблице Блюдо.

PreparedStatement mySt=Con.prepareStatement(
"update Блюдо set Калорийность=?
where Тип_блюда=?");
mySt.setString(1,’Десерт’);
mySt.setString(2, ’200’);
int res=mySt.executeUpdate();

Указать правильные ответы.

(1) ошибок нет

(2) неправильно указаны типы параметров

(3) установки параметров не соответствуют следованию знаков «?»

(4) неправильно указаны номера параметров

Дан некоторый фрагмент SQL-кода:

DECLARE @a CHAR(12)
DECLARE @b DATETIME
DECLARE @c INT
SET @b=’3.04.04’
SET @c=6

Укажите правильные операторы для вычисления новой даты:

(1) SET @a=@b-@c

(2) SET @a=CAST(@b-CAST(@c AS DATETIME) AS CHAR(12))

(3) SET @a=CAST(@b AS CHAR(8)) - CAST(@c AS CHAR(12))

(4) SET @a=CAST((@b-@c) AS CHAR(12))

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%; для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1
ON PRIMARY
( NAME=b1, FILENAME=’D:userb1.mdf’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),
(NAME=b2, FILENAME=’D:userb2.mdf’,
SIZE=10MB, MAXSIZE=200, FILEGROWTH=10%)
LOG ON
(NAME=l1, FILENAME=’E:userl1.ldf’,
SIZE=50MB, MAXSIZE=10, FILEGROWTH=10)

Выберите правильный ответ.

(1) база данных будет успешно создана

(2) неправильно указано физическое имя базы данных

(3) неправильно указано логическое имя базы данных

(4) неправильно определен размер базы данных

Пусть дана таблица Блюдо.

Название_блюда VARCHAR(20)
Тип_блюда VARCHAR(20)
Время_приготовления DATETIME
Калорийность INT
Повар VARCHAR(20)
Стоимость MONEY

Вывести в алфавитном порядке фамилии поваров, блюда которых относятся к десерту или выпечке, стоимость не превышает 50 руб., а калорийность не больше 300 ккал.

(1)

SELECT Повар, Тип_блюда, Стоимость, Калорийность
FROM Блюдо
WHERE Тип_блюда In ('десерт', 'выпечка') AND
Стоимость<=50 AND Калорийность<=300
ORDER BY Повар

(2)

SELECT Повар, Тип_блюда, Стоимость, Калорийность
FROM Блюдо
WHERE Тип_блюда In ('десерт', 'выпечка') OR
Стоимость<=50 OR Калорийность<=300
ORDER BY Повар

(3)

SELECT Повар, Тип_блюда, Стоимость, Калорийность
FROM Блюдо
WHERE (Тип_блюда In ('десерт', 'выпечка'))
AND (Стоимость<=50 OR Калорийность<=300)
ORDER BY Повар

(4)

SELECT Повар, Тип_блюда, Стоимость, Калорийность
FROM Блюдо
WHERE (Тип_блюда='десерт' OR
Тип_блюда= 'выпечка')
AND Стоимость<=50 AND Калорийность<=300
ORDER BY Повар

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость INT )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Жиры INT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость_100_грамм FLOAT NOT NULL)

Сформировать список поваров, которые используют масло, но обходятся без молока.

(1)

SELECT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Повар IN
(SELECT Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента="Масло")
AND Блюдо.Повар NOT IN(
SELECT Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента="Молоко");

(2)

SELECT Блюдо.Повар
FROM Блюдо
WHERE Блюдо.Повар IN
(SELECT Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента="Масло"
AND Компонент.Название_компонента<>"Молоко");

(3)

SELECT Блюдо.Повар
FROM Блюдо
WHERE Компонент.Название_компонента="Масло"
AND Компонент.Название_компонента<>"Молоко

(4)

SELECT Блюдо.Повар
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Компонент.Название_компонента="Масло"
AND Компонент.Название_компонента<>"Молоко"

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость MONEY )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Вес FLOAT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость MONEY NOT NULL)

Определить поваров, которые на приготовление каждого из своих блюд тратят в среднем менее 10 мин, а общий вес блюд превосходит 500 г.

(1)

SELECT Блюдо.Повар,
Avg(Блюдо.Время_приготовления) AS Ср_время,
Sum(Компонент.Вес) AS Общ_вес
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
GROUP BY Блюдо.Повар
HAVING Avg(Блюдо.Время_приготовления)<10 AND
Sum(Компонент.Вес)>500

(2)

SELECT Блюдо.Повар,
Avg(Блюдо.Время_приготовления) AS Ср_время,
Sum(Компонент.Вес) AS Общ_вес
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
GROUP BY Блюдо.Повар
HAVING Ср_время <10 AND Общ_вес >500

(3)

SELECT Блюдо.Повар,
Avg(Блюдо.Время_приготовления) AS
Ср_время, Sum(Компонент.Вес) AS Общ_вес
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
GROUP BY Блюдо.Повар
WHERE Avg(Блюдо.Время_приготовления<10) AND
Sum(Компонент.Вес>500)

(4)

SELECT Блюдо.Повар,
Avg(Блюдо.Время_приготовления) AS Ср_время,
Sum(Компонент.Вес) AS Общ_вес
FROM Блюдо INNER JOIN Компонент ON
Блюдо.Название_блюда = Компонент.Блюдо
WHERE Avg(Блюдо.Время_приготовления<10 AND
Sum(Компонент.Вес>500)

Даны таблицы

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20) NOT NULL,
Тип_блюда VARCHAR(20) NOT NULL,
Время_приготовления INT NOT NULL,
Общая_калорийность INT NOT NULL,
Номер_рецепта INT,
Повар VARCHAR(20),
Стоимость MONEY )

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT NOT NULL,
Вес FLOAT,
Белки INT,
Блюдо VARCHAR(20),
Углеводы INT,
Стоимость MONEY NOT NULL)

Определить поваров, которые готовят десерты чаще, чем другие.

(1)

SELECT Блюдо.Повар,
Count(Блюдо.Название_блюда) AS Кол_блюд
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт"
GROUP BY Блюдо.Повар
HAVING Count(Блюдо.Название_блюда)>=
ALL(SELECT Count(Блюдо.Название_блюда)
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт"
GROUP BY Блюдо.Повар)

(2)

SELECT Блюдо.Повар,
Count(Блюдо.Название_блюда) AS Кол_блюд
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт"
GROUP BY Блюдо.Повар
HAVING Count(Блюдо.Название_блюда)>=
MAX(SELECT Count(Блюдо.Название_блюда)
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт"
GROUP BY Блюдо.Повар)

(3)

SELECT Блюдо.Повар,
Count(Блюдо.Название_блюда) AS Кол_блюд
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт"
HAVING Count(Блюдо.Название_блюда)>=
ALL(SELECT Count(Блюдо.Название_блюда)
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт")

(4)

SELECT Блюдо.Повар,
Count(Блюдо.Название_блюда) AS Кол_блюд
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт"
AND Count(Блюдо.Название_блюда)>=
ALL(SELECT Count(Блюдо.Название_блюда)
FROM Блюдо
WHERE Блюдо.Тип_блюда="Десерт")

Даны таблицы

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 Компонент

Даны таблицы Блюдо и Компонент.

CREATE TABLE Блюдо
(Название_блюда VARCHAR(20),
Время_приготовления INT,
Общая_калорийность INT,
Повар VARCHAR(20),
Стоимость MONEY,
Тип_блюда VARCHAR(20))

CREATE TABLE Компонент
(Название_компонента VARCHAR(20),
Калорийность INT,
Стоимость_компонента FLOAT )

Для полей Стоимость в таблице Блюдо и Стоимость_компонента в таблице Компонент создать и применить правило ввода значений больше 0 и меньше 100.

(1)

CREATE RULE r1 AS @p >0 AND @p<100
sp_bindrule 'r1', 'Блюдо.Стоимость'
sp_bindrule 'r1',
'Компонент.Стоимость_компонента'

(2)

CREATE RULE r1 AS @p BETWEEN 1 AND 99
sp_bindrule 'r1', 'Блюдо.Стоимость'
sp_bindrule 'r1',
'Компонент.Стоимость_компонента'

(3)

CREATE RULE r1 AS @p >0 AND @p<100
sp_bindrule 'r1', 'Блюдо’,’Стоимость'
sp_bindrule 'r1', 'Компонент’,
’Стоимость_компонента'

(4)

CREATE RULE r1 AS
Блюдо.Стоимость BETWEEN 1 AND 99
CREATE RULE r1 AS
Компонент.Стоимость_компонента BETWEEN 1 AND 99

Дано представление.

CREATE VIEW view3
AS
SELECT Название, Тариф, Тариф*0.05 AS Налог
FROM Город
WHERE Регион=’Поволжье’

Предпринимается попытка изменить в представлении запись.

UPDATE view3 SET Тариф=Тариф*1.5
WHERE Тариф>10

Результатом выполнения команды является следующее:

(1) в таблице Город будет увеличена стоимость 1 минуты разговора с городами Поволжья, если она уже установлена > 10 р

(2) в таблице Город будет увеличена стоимость 1 минуты разговора, если она уже установлена > 10 р

(3) тарифы на телефонные разговоры с городами Поволжья в представлении view3 будут успешно изменены

(4) команда не будет выполнена.

Необходимо разработать функцию для получения списка абонентов, звонивших в указанный город в заданный месяц. Функция создается командой:

(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)

Для определения общей стоимости разговоров некоторого абонента за определенный месяц разработана процедура, в которой указаны значения параметров по умолчанию:

CREATE PROC my_proc
@f VARCHAR(20)=’Иванов’,
@m INT=2,
@st FLOAT=5.0 OUTPUT
AS
SELECT @st=Sum(
Город.Тариф*Разговор.Продолжительность)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города, Разговор.Фамилия
GROUP BY Город.Регион, Month(Разговор.Дата)
HAVING Разговор.Фамилия=@f AND
Month(Разговор.Дата)=@m

Укажите правильный вызов процедуры

(1)

DECLARE @st FLOAT
EXEC my_proc 'Петров',3,@st OUTPUT
SELECT @st

(2)

DECLARE @st FLOAT
EXEC my_proc @m=3,@st=@st OUTPUT
SELECT @st

(3)

DECLARE @st FLOAT
EXEC my_proc @r='Поволжье',@st OUTPUT
SELECT @st

(4)

DECLARE @st FLOAT
EXEC my_proc @st OUTPUT
SELECT @st

Разработана процедура, возвращающая тарифы городов указанного региона.

CREATE PROC my_proc
@r VARCHAR(20),
@cur CURSOR VARYING OUTPUT
AS
SET @cur=CURSOR FORWARD_ONLY STATIC FOR
SELECT Название, Тариф, Регион
FROM Город
WHERE Регион=@r
OPEN @cur

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

DECLARE @my_cur CURSOR
DECLARE @n VARCHAR(20)
EXEC my_proc @cur=@my_cur OUTPUT, ‘Поволжье’
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
WHILE (@@FETCH_STATUS=0)
BEGIN
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
END
CLOSE @my_cur
DEALLOCATE @my_cur

Укажите правильные ответы.

(1) ошибок ни в процедуре, ни в ее вызове нет

(2) процедура создана правильно. При вызове в обработке курсора дважды происходит обращение к первой записи

(3) в процедуре не следует открывать курсор. Он должен быть открыт при вызове процедуры

(4) процедура создана правильно. Неправильно осуществляется ее вызов

Даны таблицы Город и Разговор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором городе из таблицы Город. При этом в таблице Разговор необходимо также удалить записи обо всех телефонных разговорах с удаленным городом.

CREATE TRIGGER trig_del
ON Город FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @c INT
SELECT @c=Код_Города
FROM deleted
DELETE FROM Разговор
WHERE Код_Города=@c

(2)

DELETE FROM Разговор
WHERE Код_Города=deleted.Код_Города

(3)

DELETE FROM Разговор
WHERE Код_Города=(SELECT Код_Города
      FROM deleted)

(4)

DELETE FROM Разговор
WHERE Код_Города= (SELECT Код_Города
      FROM deleted
   WHERE Город.Код_Города=deleted.кодГорода)

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph
(nomer INT PRIMARY KEY, --номер дуги
outp INT, --номер вершины,
--из которой дуга выходит
inp INT) --номер вершины,
--в которую дуга входит

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

CREATE TRIGGER trig
ON graph FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
   SELECT @k=COUNT(outp)
   FROM graph
   WHERE outp=@e1
IF @k=1
   ROLLBACK

(2)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
   IF COUNT(outp)=1
   ROLLBACK

(3)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
IF (SELECT COUNT(inp)
   FROM graph
   WHERE inp=@e1)=1
   ROLLBACK

(4)

DECLARE @e1 INT, @e2 INT,@n INT,@k INT
SELECT @n=nomer, @e1=outp, @e2=inp
FROM deleted
IF (COUNT(outp)
   FROM graph
   WHERE outp=@e1)=1
   ROLLBACK

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN
SAVE TRANSACTION p1
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, 'a',10)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, 'b',20)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, 'c',30)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, 'd',40)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (5, 'e',50)

SAVE TRANSACTION p2
DELETE FROM Товар WHERE Код_Товара=2
SAVE TRANSACTION p3
DELETE FROM Товар WHERE Код_Товара=5
SAVE TRANSACTION p4
DELETE FROM Товар
WHERE Код_Товара<2 OR Код_Товара>4
ROLLBACK TRANSACTION p3
INSERT Товар (Код_Товара, Название, остаток)
VALUES (6, 'f',60)
SAVE TRANSACTION p5
INSERT Товар (Код_Товара, Название, остаток)
VALUES (7, 'g',70)
ROLLBACK TRANSACTION p2
COMMIT

После завершения транзакции в таблице Товар останутся записи о товарах с кодами:

(1) Код_Товара: 1, 2, 3, 4, 5

(2) Код_Товара: 1, 3, 4, 6

(3) Код_Товара: 3, 4, 6, 7

(4) в таблице записей нет

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2

3

4

5

GRANT ALL TO
UserA

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))

GRANT SELECT,
INSERT ON tab TO
UserB
WITH GRANT
OPTION

REVOKE INSERT ON
tab
TO UserB CASCADE

GRANT SELECT ON
UserA.tab TO UserC

 
6 INSERT INTO
UserA.tab
values(1,'aa')
INSERT INTO
UserA.tab values
(2,'bb')
INSERT INTO
UserA.tab values
(3,'сс')
SELECT * FROM
UserA.tab
7 ? ? ? ?

(1)

7 Выполнено Выполнено Отклонено Выполнено

(2)

7 Выполнено Отклонено Выполнено Отклонено

(3)

7 Отклонено Выполнено Отклонено Отклонено

(4)

7 Отклонено Отклонено Выполнено Отклонено

Дан фрагмент сценария VBScript для удаления и выборки данных из таблицы Город в базе данных basa_user1 на SQL Server с именем its.

Set cn=Server.CreateObject("ADODB.Connection")
Set rst=Server.CreateObject("ADODB.Recordset")
cn.open "pwd=user1;driver={SQL Server};
server=its; database = basa_user1"
rst.execute "DELETE FROM Город
WHERE Код_Города=2134"
rst.open "SELECT Код_Города, Название,
Тариф FROM Город", cn
do until rst.eof
response.write rst.fields(0)
response.write rst.fields(1)
response.write rst.fields(2)&"<br>"
rst.movenext
loop

Указать правильные ответы.

(1) в обработке результата нет перехода на новую строку

(2) ошибок нет

(3) метод execute относится к объекту Connection

Какие из следующих строк можно внести в поле, описанное как VARCHAR(10)?

(1) 23-45-67

(2) (095)345-23-39

(3) 32/08/2004

(4) 12:67:89

Создана таблица Город. Добавить поле Регион и изменить тип данных поля Тариф на денежный.

CREATE TABLE Город
(Код_Города CHAR(3),
Название VARCHAR(20),
Тариф INT,
ЧасПояс INT)

(1)

ALTER TABLE Город ADD Регион VARCHAR(50)
ALTER TABLE Город ALTER COLUMN Тариф MONEY

(2)

ALTER TABLE Город
ADD COLUMN Регион VARCHAR(50)
ALTER TABLE Город DROP Тариф
ALTER TABLE Город ADD COLUMN Тариф MONEY

(3)

ALTER TABLE Город
ADD Регион VARCHAR(50) NOT NULL
ALTER TABLE Город
ALTER COLUMN Тариф MONEY(6,2)

(4)

ALTER TABLE Город
ADD COLUMN Регион VARCHAR(50)
ALTER TABLE Город ALTER ADD COLUMN Тариф MONEY

Дана таблица Город с полями

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Найти города Поволжья или Урала, стоимость минуты телефонного разговора с которыми не меньше 2 руб. и не больше 10 руб.

(1)

SELECT Название, Регион, Тариф
FROM Город
WHERE Регион='Поволжье' OR Регион='Урал' AND
Тариф Between 2 and 10

(2)

SELECT Название, Регион, Тариф
FROM Город
WHERE (Регион='Поволжье' OR Регион='Урал') AND
Тариф Between 2 and 10

(3)

SELECT Название, Регион, Тариф
FROM Город
WHERE (Регион='Поволжье' OR Регион='Урал') AND
Тариф Between 2 OR 10

(4)

SELECT Название, Регион, Тариф
FROM Город
WHERE Регион='Поволжье' OR Регион='Урал' AND
Тариф >= 2 and 10

Даны таблицы Город и Разговор.

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY)

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Вывести список абонентов, которые говорили с Москвой в апреле.

(1)

SELECT Разговор.Фамилия, Город.Название
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва' AND
Month(Разговор.Дата)=4

(2)

SELECT Разговор.Фамилия, Город.Название
FROM Город, Разговор
WHERE Город.Код_Города = Разговор.Код_Города AND
Город.Название='Москва' AND
Month(Разговор.Дата)=4

(3)

SELECT Разговор.Фамилия, Город.Название
FROM Город JOIN Разговор ON
Город.Название='Москва' ON
Город.Код_Города = Разговор.Код_Города AND
Month(Разговор.Дата)=4

Даны таблицы Город и Разговор.

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Рассчитать стоимость каждого телефонного разговора с Москвой.

(1)

SELECT Разговор.Фамилия, Город.Название,
Город.Тариф*Разговор.Продолжительность AS
Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва'

(2)

SELECT Разговор.Фамилия, Город.Название,
Город.Тариф*Разговор.Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва'

(3)

SELECT Разговор.Фамилия, Город.Название,
Стоимость=Город.Тариф*Разговор.Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
ON Город.Название='Москва'

(4)

SELECT Разговор.Фамилия, Город.Название,
@s=Город.Тариф*Разговор.Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва'

Даны таблицы Город и Разговор.

CREATE TABLE Город
( Код_Города INT,
Название VARCHAR(20),
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME,
Продолжительность INT NOT NULL)

Вывести список регионов, где средние тарифы на телефонные разговоры выше, чем в других регионах.

(1)

SELECT Город.Регион, Avg(Город.Тариф)
FROM Город
GROUP BY Город.Регион
HAVING Avg(Город.Тариф)>=ALL
   (SELECT Avg(Город.Тариф)
   FROM Город
   GROUP BY Город.Регион)

(2)

SELECT Город.Регион, Avg(Город.Тариф)
FROM Город
GROUP BY Город.Регион
HAVING Avg(Город.Тариф)>=ALL
   (SELECT Avg(Город.Тариф), Город.Регион
   FROM Город
   GROUP BY Город.Регион)

(3)

SELECT Город.Регион, Avg(Город.Тариф)
FROM Город
GROUP BY Город.Регион
HAVING Avg(Город.Тариф)>=Avg(SELECT Город.Тариф)
      FROM Город
      GROUP BY Город.Регион)

(4)

SELECT Город.Регион, Avg(Город.Тариф)
FROM Город
GROUP BY Город.Регион
HAVING Avg(Город.Тариф)>=Avg(Город.Тариф)

Даны таблицы Город и Разговор. Удалить данные об абонентах, суммарная продолжительность телефонных разговоров которых оказалась меньше 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)

Даны таблицы Город и Разговор. Между ними необходимо установить связь "один-ко-многим" (один город - много разговоров)

CREATE TABLE Город
( Код_Города CHAR(5)PRIMARY KEY,
Название VARCHAR(20) NOT NULL UNIQUE,
Тариф MONEY)

CREATE TABLE Разговор
(НомерРазговора INT PRIMARY KEY,
Город CHAR(5),
Дата DATETIME,
Время_Суток VARCHAR(5),
Продолжительность INT NOT NULL)

(1)

ALTER TABLE Разговор
ADD CONSTRAINT fk_Разговор
FOREIGN KEY(Город)
REFERENCES Город (Код_Города)

(2)

ALTER TABLE Разговор
ADD FOREIGN KEY(Город)
REFERENCES Город(Код_Города)

(3)

ALTER TABLE Разговор
ADD FOREIGN KEY(Город)
REFERENCES Город(Название)

(4)

ALTER TABLE Город
ADD FOREIGN KEY(Код_Города)
REFERENCES Разговор(Город)

Дано представление.

CREATE VIEW
AS
SELECT Город.Название, Разговор.Фамилия,
Разговор.Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города;

Предпринимается попытка удалить из представления запись.

DELETE FROM VIEW
WHERE Название='Самара'

Результатом выполнения команды является следующее:

(1) из таблиц Город и Разговор будут удалены соответствующие записи

(2) запись будет удалена только из таблицы Город

(3) данные из представления view6 будут успешно удалены

(4) команда не будет выполнена

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

(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

В базе данных basa1 имеется таблица Город. Содержащуюся в ней информацию необходимо прочитать из базы данных basa2. В какой базе данных должна быть создана процедура, и как можно ее выполнить?

(1)

Создание процедуры

USE basa2
CREATE PROC my_proc
AS
SELECT * FROM basa1.dbo.Город

Вызов процедуры

USE basa2
EXEC my_proc

(2)

Создание процедуры

USE basa1
CREATE PROC my_proc
AS
SELECT * FROM basa1.dbo.Город

Вызов процедуры

USE basa2
EXEC basa1.my_proc4

(3)

Создание процедуры

USE basa1
CREATE PROC my_proc
AS
SELECT * FROM basa1.Город

Вызов процедуры

USE basa2
EXEC my_proc

(4)

Создание процедуры

USE basa1
CREATE PROC my_proc
AS
SELECT * FROM basa1.Город

Вызов процедуры

USE basa2
EXEC basa1.my_proc

Дана таблица Разговор. Разработать триггер, который выполняется вместо изменения продолжительности одного разговора. Выполнить изменение продолжительности только для тех абонентов, которые говорили с Москвой.

CREATE TRIGGER trig_upd
ON Разговор INSTEAD OF UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @n VARCHAR(20), @f VARCHAR(20),
      @d INT, @sd INT,
      @k INT, @kod INT

SELECT @k=Код_Разговора,@f=фамилия,
@d=продолжительность, @kod=Код_Города
FROM inserted

SELECT @n=Город.Название
FROM Город
WHERE Город.Код_Города=@kod

IF @n='Москва'
   UPDATE Разговор SET продолжительность=@d
   WHERE Код_Разговора=@k

(2)

DECLARE @n VARCHAR(20), @f VARCHAR(20),
      @d INT,@sd INT,
      @k INT, @kod INT

SELECT @k=Код_Разговора,@f=фамилия,
@d=продолжительность, @kod=Код_Города
FROM inserted

IF Город.Название ='Москва'
   UPDATE Разговор SET продолжительность=@d
   WHERE Код_Разговора=@k

(3)

DECLARE @n VARCHAR(20),
      @d INT,@sd INT,
      @k INT, @kod INT

SELECT @k=Код_Разговора,@f=фамилия,
@d=продолжительность, @kod=Код_Города
FROM inserted

SELECT @n=Город.Название
FROM Город
WHERE Город.Код_Города=@kod

IF (SELECT Город.Название
FROM Город
WHERE Город.Код_Города=@kod
AND Город.Название ='Москва')
   UPDATE Разговор SET продолжительность=@d
   WHERE Код_Разговора=@k

(4)

DECLARE @n VARCHAR(20), @f VARCHAR(20),
      @d INT,@sd INT,
      @k INT, @kod INT

SELECT @k=Код_Разговора,@f=фамилия,
@d=продолжительность, @kod=Код_Города
FROM inserted
   UPDATE Разговор SET продолжительность=@d
   WHERE Код_Разговора=@k AND
Город.Название='Москва'

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL
SERIALIZABLE

1.BEGIN TRANSACTION TRA
SELECT * FROM Товар

3.UPDATE Товар SET
остаток=остаток+10 WHERE Код_Товара=4

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION
LEVEL REPEATABLE READ

2. BEGIN TRANSACTION TRB
UPDATE Товар SET
остаток=остаток+10 WHERE
Код_Товара=4

4.DELETE FROM Товар WHERE
Код_Товара=4
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие заблокирует?

(1)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

(2)

1 2 3 4
Блокируется Выполняется Блокируется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserC'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserB

REVOKE INSERT ON
tab
TO UserA CASCADE

 

GRANT INSERT ON
tab TO UserC

 
9 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
10 ? ? ? ?

(1)

10 Выполнено Выполнено Отклонено Выполнено

(2)

10 Выполнено Отклонено Выполнено Отклонено

(3)

10 Отклонено Выполнено Отклонено Выполнено

(4)

10 Выполнено Отклонено Выполнено Выполнено

Дан фрагмент Java-программы для выборки данных из таблицы Город, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection myCon= DriverManager.getConnection(
"jdbc:odbc:mystud","user1","user1");
Statement mySt=myCon.createStatement();
int res=mySt.execute("UPDATE Город
SET Код_Города=812
WHERE Код_Города=734");
ResultSet rs=mySt.executeQuery("SELECT Код_Города,
Название, Тариф FROM Город ");
while (rs.next()) {
int var1=rs.getInt(1);
String var2=rs.getString(2);
int var3=rs.getInt(3);
...
}

Указать правильный ответ.

(1) в цикле обработки результата запроса переход на новую запись обрабатывается некорректно

(2) поля в операторе SELECT не соответствуют по типу значениям, которые выбираются из результата запроса

(3) ошибок нет

Какие из следующих описаний типов являются правильными?

(1) NUMERIC(7,7)

(2) DECIMAL(3,4)

(3) INTEGER(11,2)

(4) DATETIME

Дана таблица Город. Вывести в алфавитном порядке список городов Поволжского региона, в коде которых встречается цифра 9, а в названии города на втором месте стоит буква «д» или «ж».

(1)

SELECT Название, Код_Города, Регион
FROM Город
WHERE Код_Города Like '%9%' AND Регион='Поволжье'
AND Название Like '_[д,ж]%'
ORDER BY Название

(2)

SELECT Название, Код_Города, Регион
FROM Город
WHERE Код_Города Like '%9%' OR Регион='Поволжье'
AND Название Like '_[д,ж]'
ORDER BY Название

(3)

SELECT Название, Код_Города, Регион
FROM Город
WHERE Код_Города Like '%9_' OR Регион='Поволжье'
OR Название Like '_[д,ж]%'
ORDER BY Название

(4)

SELECT Название, Код_Города, Регион
FROM Город
WHERE Код_Города Like '_9_' AND Регион='Поволжье'
AND Название Like '_[д-ж]%'
ORDER BY Название

Найти абонентов, которые звонят в Москву, но ни разу не звонили в Самару в мае.

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY)

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

(1)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Разговор.Фамилия IN
(SELECT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва')
AND Разговор.Фамилия NOT IN
(SELECT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Самара' AND
Month(Разговор.Дата)=5)

(2)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Разговор.Фамилия IN
(SELECT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва' AND
Город.Название<>'Самара' AND
Month(Разговор.Дата)=5)

(3)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Город.Название='Москва'
AND Город.Название<>'Самара' AND
Month(Разговор.Дата)=5

(4)

SELECT DISTINCT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва'
AND Город.Название<>'Самара' AND
Month(Разговор.Дата)=5

Определить количество и общую продолжительность разговоров для каждого региона, с городами которого осуществляли телефонную связь абоненты, чьи фамилии содержат слог «-ва-».

(1)

SELECT Город.Регион,
Count(Разговор.Код_Разговора) AS Кол_разговоров,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Разговор.Фамилия LIKE "%ва%"
GROUP BY Город.Регион

(2)

SELECT Город.Регион, Count(Разговор.Код_Разговора)
AS Кол_разговоров,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Разговор.Фамилия LIKE "%ва__"

(3)

SELECT Город.Регион,
Count(Разговор.Код_Разговора) AS Кол_разговоров,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Город.Регион
HAVING Разговор.Фамилия LIKE "%ва"

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

(1)

SELECT Город.Название,
Sum(Разговор.Продолжительность)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион='Поволжье'
GROUP BY Город.Название
HAVING Sum(Разговор.Продолжительность)>=All
      (SELECT Sum(Разговор.Продолжительность)
      FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
      WHERE Город.Регион='Поволжье'
      GROUP BY Город.Название)

(2)

SELECT Город.Название,
Sum(Разговор.Продолжительность) AS
Кол_разговоров
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион='Поволжье'
GROUP BY Город.Название
HAVING Count(Разговор.Продолжительность)>=MAX
      (SELECT Sum(Разговор.Продолжительность)
      FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
      WHERE Город.Регион='Поволжье'
      GROUP BY Город.Название)

(3)

SELECT Город.Название,
Sum(Разговор. Продолжительность) AS
Кол_разговоров
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион='Поволжье'
HAVING Sum(Разговор.Код_Разговора)>=ALL
      (SELECT Sum(Разговор.Продолжительность)
      FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
      WHERE Город.Регион='Поволжье')

(4)

SELECT Город.Название,
Sum(Разговор. Продолжительность) AS
Кол_разговоров
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион='Поволжье'
AND Sum(Разговор.Продолжительность)>=ALL
      (SELECT Sum(Разговор.Продолжительность)
      FROM Город INNER JOIN Разговор
      ON Город.Код_Города = Разговор.Код_Города
      WHERE Город.Регион='Поволжье'
      GROUP BY Город.Название)

Уменьшить на 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 )

В таблице Город значения поля Тариф ограничить диапазоном от 0.1 руб. до 7.8. Руб.

(1)

ALTER TABLE Город
ADD CONSTRAINT ch1 CHECK(
Тариф Between 0.1 and 7.8)

(2)

ALTER TABLE Город
ADD CHECK(Тариф>=0.1 AND Тариф<=7.8)

(3)

ALTER TABLE Город
ALTER Тариф MONEY CHECK(Тариф >=0.1 AND
Тариф<=7.8)

(4)

ALTER TABLE Город
ADD CHECK(Тариф <=0.1 AND >=7.8)

Какие связи между объектами моделируются в реляционных базах данных?

(1) суперкласс – класс - подкласс

(2) «один-ко-многим»

(3) отношения наследования

Дано представление.

CREATE VIEW view1
AS
SELECT Код_Города, Название, Тариф
FROM Город
WHERE Регион=’Поволжье’
WITH CHECK OPTION

Предпринимается попытка выполнить команду вставки данных в представление.

INSERT INTO view1(Код_Города, Название, Тариф)
VALUES (842,'Симбирск',2.70)

Результатом выполнения команды (при отсутствии каких-либо ограничений при создании таблицы) является следующее:

(1) в таблицу Город будет добавлена запись

Код_Города Название Тариф Регион
842 Симбирск 2.70 Поволжье

(2) в таблицу Город будет добавлена запись

Код_Города Название Тариф Регион
842 Симбирск 2.70 NULL

(3) данные в представление view1 будут успешно добавлены

(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='Иванов '

Создана процедура для увеличения на заданный % телефонных тарифов для городов определенного региона.

CREATE PROC my_proc1
@p FLOAT,
@r VARCHAR(20)
AS
UPDATE Город SET Тариф = Тариф*(1+@p)
WHERE Регион=@r

Определите правильную команду для выполнения процедуры.

(1)

EXEC my_proc1 0.2,'Поволжье'

(2)

EXEC my_proc1 @r='Поволжье',0.2

(3)

EXEC my_proc1 @r='Поволжье',@p=0.2

(4)

EXEC my_proc1 'Поволжье',0.2

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

DECLARE @n VARCHAR(50),
@r VARCHAR(50),
@t MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ' Тарифы Поволжья'
DECLARE cursor1 CURSOR FOR
SELECT Название, Тариф, Регион
FROM Город
WHERE Регион="Поволжье"

OPEN cursor1
SET @cur1=cursor1
FETCH NEXT FROM cursor1 INTO @n, @t, @r
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM cursor1 INTO @n, @t, @r
SELECT @message='Город '+@n+
' Тариф '+ CAST(@t AS VARCHAR(4))
PRINT @message
END
CLOSE cursor1
DEALLOCATE cursor1

Укажите правильные ответы.

(1) курсор написан без ошибок

(2) в операторе FETCH порядок следования переменных не соответствует полям оператора SELECT в объявлении курсора

(3) при выводе на печать теряется первая запись

(4) переприсваивание открытого курсора (оператор SET) недопустимо

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

CREATE TRIGGER trig_ins
ON Разговор FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @c INT,
      @d INT
SELECT @c=Код_Города, @d=продолжительность
FROM inserted
UPDATE Город SET длит_связи=длит_связи+@d
WHERE Код_Города=@c

(2)

UPDATE Город
SET длит_связи=
длит_связи+inserted.продолжительность
WHERE Код_Города=inserted.Код_Города

(3)

UPDATE Разговор
SET длит_связи=длит_связи+(
SELECT продолжительность
      FROM inserted)
WHERE Город.Код_Города=inserted.Код_Города

(4)

UPDATE Город
SET длит_связи=длит_связи+(
SELECT продолжительность
      FROM inserted)
   WHERE Город.Код_Города=inserted.Код_Города

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, --номер работы
нач_соб INT, --начальное событие
кон_соб INT, --конечное событие
длит INT) --длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1".

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

CREATE TRIGGER trig_ins
ON Граф FOR INSERT
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e1 INT, @e2 INT,@n INT
SELECT @n=номер, @e1=нач_соб, @e2=кон_соб
FROM inserted
IF EXISTS(SELECT *
      FROM Граф
      WHERE номер<>@n AND
нач_соб=@e1 AND кон_соб=@e2 )
ROLLBACK TRAN

(2)

IF EXISTS(SELECT *
      FROM Граф
      WHERE номер<> inserted.номер AND
нач_соб= inserted.нач_соб
      AND кон_соб= inserted.кон_соб)
ROLLBACK TRAN

(3)

IF EXISTS(SELECT *
      FROM Граф
      WHERE номер<>(
SELECT номер FROM inserted)
      AND нач_соб= (
SELECT нач_соб FROM inserted)
      AND кон_соб=(
SELECT кон_соб FROM inserted)
ROLLBACK TRAN

(4)

DECLARE @e1 INT, @e2 INT,@n INT
SELECT @n=номер, @e1=нач_соб, @e2=кон_соб
FROM inserted
IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер=@n AND
нач_соб<>@e1 AND кон_соб<>@e2 )
ROLLBACK TRAN

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN
SAVE TRANSACTION p1
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, 'a',10)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, 'b',20)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, 'c',30)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, 'd',40)
INSERT Товар (Код_Товара, Название, остаток)
VALUES (5, 'e',50)
UPDATE Товар SET Название ='g' WHERE Код_Товара=3

SAVE TRANSACTION p2
DELETE FROM Товар WHERE Код_Товара=4
UPDATE Товар SET Название ='m' WHERE Код_Товара=5
SAVE TRANSACTION p3
UPDATE Товар SET Название ='k' WHERE Код_Товара=1
SAVE TRANSACTION p4
DELETE FROM Товар
WHERE Код_Товара>1 AND Код_Товара<4
ROLLBACK TRANSACTION p3
INSERT Товар (Код_Товара, Название, остаток)
VALUES (6, 'f',70)
DELETE FROM Товар WHERE Код_Товара=3

COMMIT

После завершения транзакции в таблице Товар останутся товары с названиями:

(1) Названия: ‘k’, ‘b’, ‘m’

(2) Названия: ‘a’, ‘b’, ‘g’, ‘m’

(3) Названия: ‘k’, ‘b’, ‘g’, ‘m’

(4) Названия: ‘a’, ‘b’, ‘f’, ‘m’

В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?

Basa_user
Администратор UserA UserB
GRANT ALL TO UserA

GRANT SELECT ON
UserA.tab TO UserB


CREATE TABLE tab
(id_t INT PRIMARY KEY,
nam_t VARCHAR(20))
 
INSERT INTO tab values
(1,'aa')
INSERT INTO tab values (2,'bb') SELECT * FROM UserA.tab
? ? ?

(1)

Выполнено Выполнено Отклонено

(2)

Отклонено Выполнено Выполнено

(3)

Отклонено Выполнено Отклонено

(4)

Выполнено Выполнено Выполнено

Для определения номера телефона (например, +74952539312) подойдет описание:

(1) Telephon CHAR(12)

(2) Telephon INT

(3) Telephon DECIMAL(10)

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1
ON PRIMARY
( NAME=b1, FILENAME=’D:userb1.mdf’,
SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),
(NAME=b2, SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%)
LOG ON
(NAME=l1, FILENAME=’E:userl1.ldf’,
SIZE=50MB, MAXSIZE=100, FILEGROWTH=10)

Выберите правильный ответ.

(1) база данных будет успешно создана

(2) неправильно указано физическое имя базы данных

(3) неправильно указано логическое имя базы данных

(4) неправильно определен размер базы данных

Пусть дана таблица Город с полями

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Найти регионы, стоимость минуты телефонного разговора с которыми не меньше 10 руб., но не больше 100 руб.

(1)

SELECT DISTINCT Регион, Тариф
FROM Город
WHERE Тариф>=10 And Тариф<=100

(2)

SELECT DISTINCT Регион, Тариф
FROM Город
WHERE Тариф>10 OR Тариф<100

(3)

SELECT DISTINCT Регион, Тариф
FROM Город
WHERE Тариф Between 10 And 100

(4)

SELECT DISTINCT Регион, Тариф
FROM Город
WHERE Тариф Between 10 OR 100

Даны таблицы

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY)

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Определить фамилии людей, которые говорили с абонентами из Москвы.

(1)

SELECT Разговор.Фамилия, Город.Название
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва'

(2)

SELECT Разговор.Фамилия, Город.Название
FROM Город, Разговор
WHERE Город.Код_Города = Разговор.Код_Города AND
Город.Название='Москва'

(3)

SELECT Разговор.Фамилия, Город.Название
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
AND Город.Название='Москва'

(4)

SELECT Разговор.Фамилия, Город.Название
FROM Город JOIN Разговор ON
Город.Название='Москва' ON
Город.Код_Города = Разговор.Код_Города

Даны таблицы

CREATE TABLE Город
(Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Рассчитать стоимость каждого разговора.

(1)

SELECT Разговор.Фамилия, Город.Название,
Город.Тариф*Разговор.Продолжительность
AS Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города

(2)

SELECT Разговор.Фамилия, Город.Название,
Город.Тариф*Разговор.Продолжительность
FROM Город INNER JOIN Разговор ON
Код_Города = Разговор.Код_Города

(3)

SELECT Разговор.Фамилия, Город.Название,
Стоимость=Город.Тариф*Разговор.Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города

(4)

SELECT Разговор.Фамилия, Город.Название,
@s=Город.Тариф*Разговор.Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города

Даны таблицы

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT,
Код_Города INT NOT NULL,
Фамилия IVARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Вывести список городов, телефонные тарифы которых выше среднего.

(1)

SELECT Город.Название
FROM Город
WHERE Город.Тариф>(SELECT Avg(Город.Тариф)
FROM Город)

(2)

SELECT Город.Название
FROM Город
WHERE Город.Тариф>(Avg(Город.Тариф))

(3)

SELECT Город.Название
FROM Город
WHERE Город.Тариф>SOME(SELECT Avg(Город.Тариф)
FROM Город)

(4)

SELECT Город.Название
FROM Город
WHERE Город.Тариф> Avg (SELECT Город.Тариф
FROM Город)

Пусть дана таблица Город с полями

Код_Города 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',
'Симбирск','Поволжье')

Даны две таблицы. Определить в них первичные ключи.

CREATE TABLE Город
(Код_Города CHAR(5),
Название VARCHAR(20) NOT NULL UNIQUE,
Тариф MONEY)

CREATE TABLE Разговор
(Дата DATETIME NOT NULL,
ВремяСуток VARCHAR(5),
Продолжительность INT NOT NULL)

(1)

ALTER TABLE Город
ALTER COLUMN Код_Города CHAR(5) NOT NULL
ALTER TABLE Город
ADD CONSTRAINT pk1 PRIMARY KEY (Код_Города)

ALTER TABLE Разговор
ADD Код_Разговора INT
ALTER TABLE Разговор
ALTER COLUMN Код_Разговора INT NOT NULL
ALTER TABLE Разговор
ADD CONSTRAINT pk2 PRIMARY KEY (Код_Разговора)

(2)

ALTER TABLE Город
ADD CONSTRAINT pk1 PRIMARY KEY (Код_Города)

ALTER TABLE Разговор
ADD Код_Разговора INT NOT NULL
ALTER TABLE Разговор
ADD CONSTRAINT pk2 PRIMARY KEY (Код_Разговора)

(3)

ALTER TABLE Город
ADD CONSTRAINT pk1 PRIMARY KEY (Код_Города)

ALTER TABLE Разговор
ADD Код_Разговора INT NOT NULL PRIMARY KEY

(4)

ALTER TABLE Город
ALTER COLUMN Код_Города NOT NULL PRIMARY KEY

ALTER TABLE Разговор
ADD Код_Разговора INT(4) PRIMARY KEY

Определите типы команд языка SQL.

(1) управление ходом вычислений

(2) определение структуры данных

(3) манипулирование данными

(4) администрирование данных

Дано представление с вычислениями.

CREATE VIEW view2
AS
SELECT Название, Регион, Тариф, Тариф*0.05 AS Налог
FROM Город
WHERE Город.Тариф>10

Предпринимается попытка изменить в представлении запись.

UPDATE view2 SET Тариф=Тариф*1.5
WHERE Регион=’Поволжье’

Результатом выполнения команды является следующее:

(1) в таблице Город будет изменен тариф на телефонные разговоры с городами Поволжья, если он больше 10 руб

(2) в таблице Город будут изменены все тарифы на телефонные разговоры с городами Поволжья

(3) команда не будет выполнена

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

(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()

Для определения общей стоимости разговоров в заданном регионе за конкретный месяц разработана процедура:

CREATE PROC my_proc2
@r VARCHAR(20),
@m INT,
@st FLOAT OUTPUT
AS
SELECT @st=Sum(
Город.Тариф*Разговор.Продолжительность)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Город.Регион, Month(Разговор.Дата)
HAVING Город.Регион=@r AND Month(Разговор.Дата)=@m

Укажите правильный вызов процедуры

(1)

DECLARE @st FLOAT
EXEC my_proc2 'Поволжье',3,@st OUTPUT
SELECT @st

(2)

DECLARE @st FLOAT
EXEC my_proc2 3,'Поволжье',@st OUTPUT
SELECT @st

(3)

DECLARE @st FLOAT
EXEC my_proc2 @m=3,@r='Поволжье',@st=@st OUTPUT
SELECT @st

(4)

DECLARE @st FLOAT
EXEC my_proc2 @m='Поволжье',@r=3,@st OUTPUT
SELECT @st

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

CREATE PROC my_proc
@cur CURSOR VARYING OUTPUT
AS
SET @cur=CURSOR FORWARD_ONLY STATIC FOR
SELECT Название, Тариф, Регион
FROM Город
WHERE Регион="Поволжье"
OPEN @cur

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

DECLARE @my_cur CURSOR
DECLARE @n VARCHAR(20)
EXEC my_proc @cur=@my_cur OUTPUT
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
WHILE (@@FETCH_STATUS=0)
BEGIN
FETCH NEXT FROM @my_cur INTO @n
SELECT @n
END
CLOSE @my_cur
DEALLOCATE @my_cur

Укажите правильные ответы.

(1) ошибок ни в процедуре, ни в ее вызове нет

(2) процедура создана правильно. При вызове процедуры в обработке курсора дважды происходит обращение к первой записи

(3) в процедуре не следует открывать курсор. Он должен быть открыт при вызове процедуры

(4) процедура создана правильно. При вызове процедуры для обработки курсора в операторе INTO список переменных не соответствует полям оператора SELECT в создании курсора в процедуре

Даны таблицы Город и Разговор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором городе из таблицы Город. При этом в таблице Разговор необходимо для всех телефонных разговоров с удаленным городом в качестве значения поля Код_Города поставить значение 0.

CREATE TRIGGER trig_del
ON Город FOR DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @c INT
SELECT @c=Код_Города
FROM deleted
UPDATE Разговор SET Код_Города=0
WHERE Код_Города=@c

(2)

UPDATE Разговор SET Код_Города=0
WHERE Код_Города=deleted.Код_Города

(3)

UPDATE Разговор SET Код_Города=0
WHERE Код_Города=(SELECT Код_Города
      FROM deleted)

(4)

UPDATE Разговор SET Код_Города=0
WHERE Код_Города= (SELECT Код_Города
      FROM deleted
   WHERE Город.Код_Города=deleted.Код_Города)

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, --номер работы
нач_соб INT, --начальное событие
кон_соб INT, --конечное событие
длит INT) --длительность работы

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

Например:

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1".

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

CREATE TRIGGER trig_del
ON Граф INSTEAD OF DELETE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @e INT,@n INT, @m INT
SELECT @n=номер, @e=нач_соб FROM deleted
SELECT @m=MAX(кон_соб) FROM Граф WHERE номер<>@n
IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер<>@n AND нач_соб=@e )
   UPDATE Граф SET кон_соб=@m WHERE номер=@n
ELSE
   DELETE FROM Граф WHERE номер=@n

(2)

DECLARE @e INT,@n INT, @m INT
SELECT @n=номер, @e=нач_соб FROM deleted
SELECT @m=MAX(кон_соб) FROM Граф WHERE номер<>@n
IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE нач_соб=@e )
   UPDATE Граф SET кон_соб=@m WHERE номер=@n
ELSE
   DELETE FROM Граф WHERE номер=@n

(3)

DECLARE @e INT,@n INT, @m INT
SELECT @n=номер, @e=нач_соб FROM deleted
SELECT @m=MAX(кон_соб) FROM Граф
IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер<>@n AND нач_соб=@e )
   UPDATE Граф SET кон_соб=@m WHERE номер=@n
ELSE
   DELETE FROM Граф WHERE номер=@n

(4)

DECLARE @e INT,@n INT, @m INT
SELECT @n=номер, @e=нач_соб FROM deleted
SELECT @m=MAX(кон_соб) FROM Граф WHERE номер<>@n
IF NOT EXISTS(SELECT *
      FROM Граф
      WHERE номер<>@n AND нач_соб=@e )
   UPDATE Граф SET кон_соб=@m WHERE нач_соб=@e
ELSE
   DELETE FROM Граф WHERE нач_соб=@e

Дана таблица Товар. На начало транзакций в таблице записей нет.

BEGIN TRAN A
INSERT Товар (Код_Товара, Название, остаток)
VALUES (1, 'v',40)
BEGIN TRAN B
INSERT Товар (Код_Товара, Название, остаток)
VALUES (2, 'n',50)
UPDATE Товар SET Название =’k’ WHERE Код_Товара=1
BEGIN TRAN C
INSERT Товар (Код_Товара, Название, остаток)
VALUES (3, 'm',60)
ROLLBACK TRAN С
UPDATE Товар SET Название =’m’ WHERE Код_Товара=2
COMMIT
INSERT Товар (Код_Товара, Название, остаток)
VALUES (4, 'b',70)
ROLLBACK TRAN

После завершения транзакции в таблице Товар останутся товары с кодами:

(1) в таблице записей нет

(2) Код_Товара: 1, 3

(3) Код_Товара: 2

(4) Код_Товара: 1, 3, 4

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2

3

4

5

GRANT ALL TO
UserA, UserB,
UserC

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))

GRANT INSERT ON tab TO
UserB
WITH GRANT OPTION

REVOKE INSERT ON tab
TO UserB CASCADE

GRANT INSERT
ON UserA.tab TO
UserC

 
6 INSERT INTO
UserA.tab
values(1,'aa')
INSERT INTO tab values
(2,'bb')
SELECT * FROM
UserA.tab
INSERT INTO
UserA.tab
values (3,'cc')
7 ? ? ? ?

(1)

7 Выполнено Выполнено Отклонено Отклонено

(2)

7 Выполнено Отклонено Выполнено Отклонено

(3)

7 Отклонено Выполнено Отклонено Выполнено

(4)

7 Отклонено Отклонено Выполнено Отклонено

Дан фрагмент Java-программы для выборки данных из таблицы Город, расположенной в источнике данных с именем DSN=mystud.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection myCon= DriverManager.getConnection(
"jdbc:odbc:mystud","user1","user1");
Statement mySt=myCon.createStatement();
ResultSet rs=mySt.executeQuery(
"SELECT Код_Города, Название,
Тариф FROM Город ");
while (rs.next()) {
int var1=rs.getInt(0);
String var2=rs.getInt(1);
int var3=rs.getInt(2);
...
}

Указать правильные ответы.

(1) при выборке данных из результата запроса индексы полей не соответствуют следованию полей в операторе SELECT

(2) в цикле обработки результата запроса нет перехода на новую запись

(3) поля в операторе SELECT не соответствуют по типу значениям, которые выбираются из результата запроса

(4) ошибок нет

Какое из следующих чисел можно внести в поле, описанное как NUMERIC(5,1)?

(1) 78916.2

(2) 12344.44

(3) -23445.3

(4) 1678.0

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

(1)

Код_Города CHAR(3)
Название VARCHAR(20)
Тариф MONEY
ЧасПояс INT

(2)

Код_Города CHAR(3)
Название VARCHAR(20)
Тариф MONEY(3,2)
ЧасПояс CHAR(2)

(3)

Код_Города INT
Название VARCHAR(20)
Тариф INT
ЧасПояс INT(2)

(4)

Код_Города CHAR(3)
Название VARCHAR(2)
Тариф FLOAT(2,3)
ЧасПояс INT

Пусть дана таблица Город.

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Найти города Поволжья или Урала, телефонные тарифы для которых выше 5 руб.

(1)

SELECT Название, Регион, Тариф
FROM Город
WHERE Регион='Поволжье' AND Тариф>5 OR
Регион='Урал'

(2)

SELECT Название, Регион, Тариф
FROM Город
WHERE (Регион='Поволжье' OR Регион='Урал') AND
Тариф>5

(3)

SELECT Название, Регион, Тариф
FROM Город
WHERE Регион='Поволжье' AND Тариф>5 OR
Регион='Урал' AND Тариф>5

(4)

SELECT Название, Регион, Тариф
FROM Город
WHERE Регион='Поволжье' OR Регион='Урал'
AND Тариф>5

Даны таблицы

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY)

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия IVARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Вывести список городов, с которыми не зарегистрировано ни одного телефонного разговора.

(1)

SELECT DISTINCT Город.Название
FROM Город LEFT JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Разговор.Код_Разговора Is Null

(2)

SELECT DISTINCT Город.Название
FROM Город RIGHT JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Разговор.Код_Разговора Is Null

(3)

SELECT DISTINCT Город.Название
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Разговор.Код_Разговора Is Null

(4)

SELECT DISTINCT Город.Название
FROM Город, Разговор
WHERE Город.Код_Города = Разговор.Код_Города
AND Разговор.Код_Разговора Is Null

Даны таблицы

CREATE TABLE Город
(Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Определить среднюю стоимость разговоров в каждом регионе.

(1)

SELECT Город.Регион,
Avg(Город.Тариф*Разговор.Продолжительность)
AS Ср_Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Город.Регион

(2)

SELECT Тариф* Продолжительность
AS Avg(Ср_Стоимость)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Город.Регион

(3)

SELECT Регион.Город, Ср_Стоимость=
Avg(Город.Тариф*Разговор.Продолжительность)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Город.Регион

Даны таблицы

CREATE TABLE Город
(Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия IVARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Перечислить фамилии людей, которые не говорили с абонентами из Москвы.

(1)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Разговор.Фамилия NOT IN
(SELECT Разговор.Фамилия
FROM Разговор INNER JOIN Город ON
Разговор.Код_Города = Город.Код_Города
WHERE Город.Название="Москва")

(2)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор,Город
WHERE Разговор.Код_Города = Город.Код_Города
AND Город.Название<>"Москва"

(3)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор INNER JOIN Город ON
Разговор.Код_Города = Город.Код_Города
WHERE Город.Название<>"Москва"

(4)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE NOT EXISTS (SELECT Разговор.Фамилия
FROM Разговор INNER JOIN Город ON
Разговор.Код_Города = Город.Код_Города
WHERE Город.Название="Москва")

Пусть дана таблица Город с полями

Код_Города 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

Даны таблицы Город и Разговор.

CREATE TABLE Город
(Код_Города CHAR(5),
Название VARCHAR(20) NOT NULL UNIQUE,
Тариф MONEY)

CREATE TABLE Разговор
(Дата DATETIME NOT NULL,
ВремяСуток VARCHAR(5),
Продолжительность INT NOT NULL)

Между ними необходимо установить связь "один-ко-многим" (один город - много разговоров) с учетом первичных ключей.

(1)

ALTER TABLE Разговор ADD Код_Города CHAR(5)
ALTER TABLE Разговор
ALTER COLUMN Код_Города CHAR(5) NOT NULL
ALTER TABLE Разговор ADD CONSTRAINT fk_Разговор
FOREIGN KEY(Код_Города) REFERENCES Город

(2)

ALTER TABLE Разговор ADD Код_Города CHAR(5)

ALTER TABLE Разговор
ADD FOREIGN KEY(Код_Города)
REFERENCES Город(Код_Города)

(3)

ALTER TABLE Разговор ADD Название VARCHAR(20)

ALTER TABLE Город
ADD FOREIGN KEY(Название)
REFERENCES Разговор

(4)

ALTER TABLE Город
ADD номер_разговора INT NOT NULL FOREIGN KEY
REFERENCES Разговор

Назовите преимущества архитектуры «клиент-сервер»?

(1) данные хранятся в единственном экземпляре на сервере

(2) обработка запроса выполняется на компьютере-клиенте

(3) результат запроса в виде файла возвращается клиенту

Дано представление с данными из разных таблиц.

CREATE VIEW view3
AS
SELECT Город.Название, Разговор.Фамилия,
Разговор.Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города;

Предпринимается попытка добавить в представление запись.

INSERT INTO view3(
Название, Фамилия, Продолжительность)
VALUES('Самара','Иванов',10)

Результатом выполнения команды является следующее:

(1) в таблицы Город и Разговор будут добавлены записи

(2) запись будет добавлена только в таблицу Разговор

(3) данные в представление view3 будут успешно добавлены

(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 Название

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

CREATE PROC my_proc3
@r VARCHAR(20)=’Нечерноземье’,
@m INT=2,
@st FLOAT=5.0 OUTPUT
AS
SELECT @st=Sum(
Город.Тариф*Разговор.Продолжительность)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Город.Регион, Month(Разговор.Дата)
HAVING Город.Регион=@r AND Month(Разговор.Дата)=@m

Укажите правильный вызов процедуры

(1)

DECLARE @st FLOAT
EXEC my_proc3 'Поволжье',3,@st OUTPUT
SELECT @st

(2)

DECLARE @st FLOAT
EXEC my_proc3 @m=3,@st=@st OUTPUT
SELECT @st

(3)

DECLARE @st FLOAT
EXEC my_proc3 @r='Поволжье',@st OUTPUT
SELECT @st

(4)

DECLARE @st FLOAT
EXEC my_proc3 @st OUTPUT
SELECT @st

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

DECLARE @n VARCHAR(50),
@r VARCHAR(50),
@t MONEY,
@message VARCHAR(80)
DECLARE @cur1 CURSOR
PRINT ' Тарифы Поволжья'
DECLARE cursor1 CURSOR LOCAL SCROLL FOR
SELECT Название, Тариф, Регион
FROM Город
WHERE Регион='Поволжье'
OPEN cursor1
SET @cur1=cursor1
FETCH NEXT FROM cursor1 INTO @n, @t, @r
FETCH RELATIVE 3 FROM cursor1 INTO @n, @t, @r
FETCH RELATIVE -2 FROM cursor1 INTO @n, @t, @r
SELECT @message='Город '+@n+
' Тариф '+ CAST(@t AS VARCHAR(4))
PRINT @message
CLOSE cursor1
DEALLOCATE cursor1

Какая из имеющихся в курсоре записей будет распечатана?

(1) первая запись

(2) произошло обращение к строке за пределами курсора

(3) объявление курсора запрещает произвольный переход по записям

(4) вторая запись

Даны таблицы Город и Разговор. Создать триггер, обрабатывающий изменение продолжительности одного телефонного разговора. При этом в таблице Город должна измениться величина общей продолжительности связи (всех разговоров) с соответствующим городом.

CREATE TRIGGER trig_upd
ON Разговор FOR UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @c_i INT,@c_d INT,
   @d_i INT,@d_d INT
SELECT @c_i=Код_Города, @d_i=продолжительность
FROM inserted
SELECT @c_d=Код_Города, @d_d=продолжительность
FROM deleted

UPDATE Город SET длит_связи=длит_связи-@d_d
WHERE Код_Города=@c_d

UPDATE Город SET длит_связи=длит_связи+@d_i
WHERE Код_Города=@c_i

(2)

UPDATE Город
SET длит_связи=
длит_связи-deleted.продолжительность
WHERE Код_Города=deleted.Код_Города

UPDATE Город
SET длит_связи=
длит_связи+inserted.продолжительность
WHERE Код_Города=
inserted.Код_Города

(3)

UPDATE Город
SET длит_связи=
длит_связи- (SELECT продолжительность
      FROM deleted)
WHERE Код_Города=deleted.Код_Города

UPDATE Город SET длит_связи=
длит_связи+ (SELECT продолжительность
      FROM inserted)
WHERE Код_Города=inserted.Код_Города

(4)

UPDATE Город
SET длит_связи=длит_связи- (
SELECT продолжительность
      FROM deleted
   WHERE Код_Города=deleted.Код_Города)

UPDATE Город
SET длит_связи=длит_связи+ (
SELECT продолжительность
      FROM inserted
   WHERE Код_Города=inserted.Код_Города)

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер INT PRIMARY KEY, --номер работы
нач_соб INT, --начальное событие
кон_соб INT, --конечное событие
длит INT) --длительность работы

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

Номер Нач_соб Кон_соб Длит
1
2
3
4
5
6
7
8
9
10
1
1
1
3
4
3
2
5
5
6
2
4
3
4
5
5
6
6
7
7
5
12
3
6
2
8
5
4
7
2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1".
Если изменяется только номер начального события и это изменение приводит к появлению параллельной работы, отменить изменение.

CREATE TRIGGER trig_upd
ON Граф FOR UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

IF (COLUMNS_UPDATED() )=2
   BEGIN
      DECLARE @e1 INT, @e2 INT,@n INT
      SELECT @n=номер, @e1=нач_соб, @e2=кон_соб
      FROM inserted
      IF EXISTS(SELECT *
         FROM Граф
         WHERE номер<>@n AND
нач_соб=@e1 AND кон_соб=@e2 )
      ROLLBACK TRAN
   END

(2)

IF UPDATE(нач_соб)
   BEGIN
      DECLARE @e1 INT, @e2 INT,@n INT
      SELECT @n=номер, @e1=нач_соб, @e2=кон_соб
      FROM inserted
      IF EXISTS(SELECT *
         FROM Граф
         WHERE номер<>@n AND
нач_соб=@e1 AND кон_соб=@e2 )
      ROLLBACK TRAN
   END

(3)

IF (COLUMNS_UPDATED() & 2)=2
      DECLARE @e1 INT, @e2 INT,@n INT
      SELECT @e1=нач_соб, @e2=кон_соб
      FROM inserted
      IF EXISTS(SELECT *
         FROM Граф
         WHERE нач_соб=@e1 AND кон_соб=@e2 )
      ROLLBACK TRAN

(4)

      DECLARE @e1 INT, @e2 INT,@n INT
      SELECT @e1=нач_соб, @e2=кон_соб
      FROM inserted
IF UPDATE(нач_соб)
      IF EXISTS(SELECT *
         FROM Граф
         WHERE нач_соб=@e1 AND кон_соб=@e2 )
      ROLLBACK TRAN

Задание: Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL
REPEATABLE READ

BEGIN TRANSACTION TRA
1.SELECT * FROM Товар

3.UPDATE Товар SET
остаток=остаток+10 WHERE Код_Товара=4

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE

BEGIN TRANSACTION TRB

2.SELECT * FROM Товар

4.DELETE FROM Товар WHERE
Код_Товара=4
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

(1)

1 2 3 4
Выполняется Блокируется Выполняется Блокируется

(2)

1 2 3 4
Блокируется Выполняется Блокируется Выполняется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

9

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserB'
sp_addrolemember
'role1','UserC'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserB
WITH GRANT
OPTION

REVOKE INSERT ON
tab
TO role1

 

GRANT INSERT ON
tab TO UserC

 
10 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
11 ? ? ? ?

(1)

11 Выполнено Отклонено Выполнено Выполнено

(2)

11 Выполнено Выполнено Отклонено Выполнено

(3)

11 Отклонено Выполнено Отклонено Выполнено

(4)

11 Выполнено Отклонено Выполнено Отклонено

Дан фрагмент сценария VBScript для изменения данных в таблице Город.

prm1=Server.CreateObject("ADODB.Parameter")
prm2=Server.CreateObject("ADODB.Parameter")
cmd.CommandText = "update Город set Тариф=?
where Название=?"
cmd.CommandType = adCmdText
cmd.Prepared = True
Set prm2 = сmd.CreateParameter(
"p1", adSingle, adParamInput,8 ,12.50)
Set prm1 = сmd.CreateParameter(
"p2", adVarChar, adParamInput,20 ,'Самара')
cmd.Parameters.Append prm2
cmd.Parameters.Append prm1
cmd.Execute

Указать правильные ответы.

(1) ошибок нет

(2) неправильно указаны типы параметров

(3) последовательность добавления параметров в коллекцию параметров не соответствует следованию знаков «?»

(4) параметры неправильно добавляются в коллекцию параметров

Какое из следующих описаний типов является неправильным?

(1) NUMERIC(8,8)

(2) NUMERIC(1,12)

(3) NUMERIC(7,2)

(4) NUMERIC(20,19)

В таблицу Город необходимо добавить сведения о регионе и изменить тип поля Код_Города на CHAR(5). Отметьте правильные ответы:

(1)

ALTER TABLE Город ADD Регион VARCHAR(50)
ALTER TABLE Город
ALTER COLUMN Код_Города CHAR(5) NOT NULL

(2)

ALTER TABLE Город
ADD COLUMN Регион VARCHAR(50) NOT NULL
ALTER TABLE Город DROP Код_Города
ALTER TABLE Город
ADD COLUMN Код_Города VARCHAR(5)

(3)

ALTER TABLE Город
ADD Регион VARCHAR(50) NOT NULL
ALTER TABLE Город
ALTER Код_Города CHAR(5) NOT NULL

(4)

ALTER TABLE Город
ADD Регион VARCHAR(50)
ALTER TABLE Город
ALTER COLUMN Код_Города VARCHAR(5) NOT NULL

Пусть дана таблица Город.

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Вывести в алфавитном порядке список городов Поволжского региона, в коде которых встречается цифра 9.

(1)

SELECT Название, Код_Города, Регион
FROM Город
WHERE Код_Города Like '%9%' AND Регион='Поволжье'
ORDER BY Название

(2)

SELECT Название, Код_Города, Регион
FROM Город
WHERE Код_Города Like '%9%' OR Регион='Поволжье'
ORDER BY Название

(3)

SELECT Название, Код_Города, Регион
FROM Город
WHERE Код_Города Like '%9_' OR Регион='Поволжье'
ORDER BY Название

(4)

SELECT Название, Код_Города, Регион
FROM Город
WHERE Код_Города Like '_9_' AND Регион='Поволжье'
ORDER BY Название

Даны таблицы

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY)

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия IVARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Найти фамилии абонентов, ведущих телефонные переговоры как с Москвой, так и с Самарой.

(1)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Разговор.Фамилия IN
(SELECT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название="Москва")
AND Разговор.Фамилия IN
(SELECT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название="Самара");

(2)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Разговор.Фамилия IN
(SELECT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название="Москва" AND
Город.Название="Самара")

(3)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Город.Название="Москва" AND
Город.Название="Самара"

(4)

SELECT DISTINCT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название="Москва" AND
Город.Название="Самара"

Даны таблицы

CREATE TABLE Город
(Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

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

(1)

SELECT Город.Регион,
Count(Разговор.Код_Разговора) AS Кол_разговоров,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Разговор.Фамилия LIKE "И%"
GROUP BY Город.Регион

(2)

SELECT Город.Регион,
Count(Разговор.Код_Разговора) AS Кол_разговоров,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность
FROM Город INNER JOIN Разговор
ON Город.Код_Города = Разговор.Код_Города
WHERE HAVING Разговор.Фамилия LIKE "И%"

(3)

SELECT Город.Регион,
Count(Разговор.Код_Разговора) AS Кол_разговоров,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Город.Регион
HAVING Разговор.Фамилия LIKE "И%"

Даны таблицы

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия IVARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Определить тех абонентов, которые заплатили за телефонные разговоры больше, чем другие.

(1)

SELECT Разговор.Фамилия,
Sum(Город.Тариф*Разговор.Продолжительность) AS
Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Разговор.Фамилия
HAVING Sum(
Город.Тариф*Разговор.Продолжительность)>=
ALL(SELECT
Sum(Город.Тариф*Разговор.Продолжительность)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Разговор.Фамилия)

(2)

SELECT Разговор.Фамилия,
Sum(Город.Тариф*Разговор.Продолжительность) AS
Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Разговор.Фамилия
HAVING Sum(
Город.Тариф*Разговор.Продолжительность)=
MAX(SELECT
Sum(Город.Тариф*Разговор.Продолжительность)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Разговор.Фамилия)

(3)

SELECT Разговор.Фамилия,
Sum(Город.Тариф*Разговор.Продолжительность) AS
Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Разговор.Фамилия
HAVING Sum(
Город.Тариф*Разговор.Продолжительность)<=
ALL(SELECT
Sum(Город.Тариф*Разговор.Продолжительность)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города)

(4)

SELECT Разговор.Фамилия,
Sum(Город.Тариф*Разговор.Продолжительность) AS
Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Sum(
Город.Тариф*Разговор.Продолжительность)>=
ALL(SELECT
Sum(Город.Тариф*Разговор.Продолжительность)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города)

Пусть дана таблица Город с полями

Код_Города 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 Регион=’Нечерноземье’

Даны таблицы Город и Разговор.

CREATE TABLE Город
(Код_Города CHAR(5),
Название VARCHAR(20) NOT NULL UNIQUE,
Тариф MONEY)

CREATE TABLE Разговор
(Дата DATETIME NOT NULL,
ВремяСуток VARCHAR(5),
Продолжительность INT NOT NULL)

В таблице Разговор значения поля ВремяСуток ограничить значениями из заданного списка: день, вечер, ночь, утро.

(1)

ALTER TABLE Разговор
ADD CONSTRAINT ch1 CHECK(ВремяСуток IN (
'утро', 'день', 'вечер', 'ночь'))

(2)

ALTER TABLE Разговор
ADD CHECK(ВремяСуток IN (
'утро', 'день', 'вечер', 'ночь'))

(3)

ALTER TABLE Разговор
ALTER ВремяСуток VARCHAR(20) CHECK(
время_суток IN ('утро', 'день', 'вечер', 'ночь'))

(4)

ALTER TABLE Разговор
ADD CHECK(ВремяСуток ='утро' OR
'день' OR 'вечер' OR ‘ночь’)

Дано представление с группировкой.

CREATE VIEW view4
AS
SELECT Регион, Avg(Тариф) AS Средн_Тариф
FROM Город
GROUP BY Регион
HAVING Регион=’Поволжье’

Предпринимается попытка удалить записи:

DELETE FROM view4
WHERE Регион=’Урал’

(1) из таблицы Город будет удалена информация о городах Поволжья и Урала

(2) из таблицы Город будет удалена информация о городах Урала

(3) команда будет выполнена. Представление не изменится

(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,’Поволжье’)

В базе данных basa1 имеется таблица Город. Из базы данных basa2 необходимо выполнить действие по увеличению тарифов для всех городов на 15%. В какой базе данных должна быть создана процедура и как можно ее выполнить?

(1)

Создание процедуры

USE basa2
CREATE PROC my_proc4
AS
UPDATE basa1.dbo.Город
SET basa1.dbo.Город.Тариф =
basa1.dbo.Город.Тариф*1.15

Вызов процедуры

USE basa2
EXEC my_proc4

(2)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE Город SET Тариф = Тариф*1.15

Вызов процедуры

USE basa2
EXEC basa1.my_proc4

(3)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE Город SET Тариф = Тариф*1.15

Вызов процедуры

USE basa2
EXEC my_proc4

(4)

Создание процедуры

USE basa1
CREATE PROC my_proc4
AS
UPDATE basa1.dbo.Город
SET basa1.dbo.Город.Тариф =
basa1.dbo.Город. Тариф*1.15

Вызов процедуры

USE basa2
EXEC basa1.my_proc4

Дана таблица Разговор. Разработать триггер, который выполняется вместо изменения продолжительности одного разговора. Выполнить изменение продолжительности только в том случае, если общая продолжительность телефонных соединений абонента, в разговоре которого меняется продолжительность, не превышает 300 мин.

CREATE TRIGGER trig_upd
ON Разговор INSTEAD OF UPDATE
AS

Выберите операторы для продолжения текста триггера.

(1)

DECLARE @f VARCHAR(20),
      @d INT,@sd INT,
      @k INT
SELECT @k=Код_Разговора,@f=фамилия,
@d=продолжительность
FROM inserted

SELECT @sd=SUM(продолжительность)
FROM Разговор
GROUP BY Фамилия
HAVING фамилия=@f

IF @sd<=300
   UPDATE Разговор
SET продолжительность=@d
   WHERE Код_Разговора=@k

(2)

IF (SELECT SUM(продолжительность)
FROM Разговор, inserted GROUP BY Фамилия
   HAVING фамилия=inserted.фамилия) <=300
   UPDATE Разговор
SET продолжительность=(SELECT продолжительность
         FROM inserted)
   WHERE Код_Разговора=(
SELECT Код_Разговора FROM inserted)

(3)

IF SUM(inserted.продолжительность
      WHERE фамилия=inserted.фамилия )<=300

   UPDATE Разговор
SET продолжительность=
inserted.продолжительность
   WHERE Код_Разговора=inserted.Код_Разговора

(4)

IF (SELECT SUM(продолжительность)
FROM Разговор) <=300
   UPDATE Разговор
SET продолжительность=(SELECT продолжительность
         FROM inserted)
   WHERE Код_Разговора=(
SELECT Код_Разговора FROM inserted)

Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserA Пользователь UserB
USE basa_user

SET TRANSACTION ISOLATION LEVEL
READ COMMITTED

BEGIN TRANSACTION TRA
1.SELECT * FROM Товар

3.UPDATE Товар SET
остаток=остаток+10 WHERE
Код_Товара=3

ROLLBACK TRANSACTION TRA

USE basa_user

SET TRANSACTION ISOLATION LEVEL
READ UNCOMMITTED

BEGIN TRANSACTION TRB

2. INSERT
Товар(Код_Товара,Название,
остаток)
VALUES (3,'SS',999)

4.DELETE FROM Товар WHERE
Код_Товара=3
ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

(1)

1 2 3 4
Выполняется Выполняется Выполняется Блокируется

(2)

1 2 3 4
Блокируется Выполняется Блокируется Блокируется

(3)

1 2 3 4
Блокируется Блокируется Выполняется Блокируется

(4)

1 2 3 4
Выполняется Блокируется Выполняется Выполняется

В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?

Basa_user
  Администратор UserA UserB UserC
1

2
3

4

5

6

7

8

9

10

CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole 'role1'
sp_addrolemember
'role1','UserA'
sp_addrolemember
'role1','UserB'
sp_addrolemember
'role1','UserC'
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA
WITH GRANT
OPTION

DENY INSERT ON
tab TO UserA

GRANT INSERT ON
tab TO UserB
WITH GRANT OPTION

GRANT INSERT ON
tab TO UserC
WITH GRANT
OPTION

 
11 INSERT INTO tab
values(1,'aa')
INSERT INTO tab
values (2,'bb')
INSERT INTO tab
values (3,'cc')
INSERT INTO tab
values (4,'dd')
12 ? ? ? ?

(1)

12 Выполнено Отклонено Выполнено Выполнено

(2)

12 Выполнено Отклонено Выполнено Отклонено

(3)

12 Выполнено Выполнено Отклонено Выполнено

(4)

12 Отклонено Отклонено Выполнено Отклонено

Дан фрагмент Java-программы для изменения данных в таблице Город.

PreparedStatement mySt=Con.prepareStatement(
"update Город set Тариф=? where Название=?");
mySt.setFloat(1, 4.50);
mySt.setString(2,'Самара');
int res=mySt.executeUpdate();

Указать правильные ответы.

(1) ошибок нет

(2) неправильно указаны типы параметров

(3) установки параметров не соответствуют следованию знаков «?»

(4) неправильно указаны номера параметров

Дан некоторый фрагмент SQL-кода:

DECLARE @a CHAR(12)
DECLARE @b DATETIME
DECLARE @c INT
SET @a=’12.11.03’
SET @b=’3.04.04’

Укажите правильные операторы для вычисления количества дней между датами:

(1) SET @c=CAST(CAST(@a AS DATETIME)-@b AS INT)

(2) SET @c=CAST(@a AS INT) –CAST(@b AS INT)

(3) SET @c=CAST((@a-@b) AS INT)

Пусть дана таблица Город.

Код_Города CHAR(5)
Название VARCHAR(20)
Тариф MONEY
Регион VARCHAR(30)

Вывести регионы и города, стоимость минуты разговора с которыми либо меньше 20 руб., либо больше 100, а название города оканчивается на "-ов" или "-ин".

(1)

SELECT Регион, Название, Тариф
FROM Город
WHERE ((Название Like '%ов' Or
Название Like '%ин') AND
(Тариф<20 Or Тариф>100))

(2)

SELECT Регион, Название, Тариф
FROM Город
WHERE (Название Like '%ов' AND
Название Like '%ин') OR
(Тариф<20 AND Тариф>100)

(3)

SELECT Регион, Название, Тариф
FROM Город
WHERE (Название Like '%ов' Or
Название Like '%ин') OR
(Тариф<20 Or Тариф>100)

Даны таблицы

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY)

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Найти абонентов, которые звонят в Москву, но ни разу не вели переговоры с Самарой.

(1)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Разговор.Фамилия IN
(SELECT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва')
AND Разговор.Фамилия NOT IN
(SELECT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Самара');

(2)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Разговор.Фамилия IN
(SELECT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва' AND
Город.Название<>'Самара')

(3)

SELECT DISTINCT Разговор.Фамилия
FROM Разговор
WHERE Город.Название='Москва'
AND Город.Название<>'Самара'

(4)

SELECT DISTINCT Разговор.Фамилия
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Название='Москва'
AND Город.Название<>'Самара'

Даны таблицы

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT,
Код_Города INT NOT NULL,
Фамилия VARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

Определить фамилии абонентов, общее время разговоров которых менее 10 мин, а общая стоимость оказалась больше 100 руб.

(1)

SELECT Разговор.Фамилия,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность,
Sum(Город.Тариф*Разговор.Продолжительность) AS
Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Разговор.Фамилия
HAVING Sum(Разговор.Продолжительность) <10 AND
Sum(Город.Тариф*Разговор.Продолжительность) >100

(2)

SELECT Разговор.Фамилия,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность,
Sum(Город.Тариф*Разговор.Продолжительность) AS
Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Разговор.Фамилия
HAVING Общ_Продолжительность<10 AND
Стоимость>100

(3)

SELECT Разговор.Фамилия,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность,
Sum(Город.Тариф*Разговор.Продолжительность) AS
Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Sum(Разговор.Продолжительность<10) AND
Sum(Город.Тариф*Разговор.Продолжительность)>100

(4)

SELECT Разговор.Фамилия,
Sum(Разговор.Продолжительность) AS
Общ_Продолжительность,
Sum(Город.Тариф*Разговор.Продолжительность) AS
Стоимость
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
GROUP BY Разговор.Фамилия
WHERE Sum(Разговор.Продолжительность<10) AND
Sum(Город.Тариф*Разговор.Продолжительность)>100

Даны таблицы

CREATE TABLE Город
( Код_Города INT ,
Название VARCHAR(20) NOT NULL,
Тариф MONEY,
Регион VARCHAR(20))

CREATE TABLE Разговор
(Код_Разговора INT ,
Код_Города INT NOT NULL,
Фамилия IVARCHAR(20),
Дата DATETIME NOT NULL,
Продолжительность INT NOT NULL)

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

(1)

SELECT Город.Название,
Count(Разговор.Код_Разговора) AS Кол_разговоров
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион="Поволжье"
GROUP BY Город.Название
HAVING Count(Разговор.Код_Разговора)>=
ALL(SELECT Count(Разговор.Код_Разговора)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион="Поволжье"
GROUP BY Город.Название)

(2)

SELECT Город.Название,
Count(Разговор.Код_Разговора) AS Кол_разговоров
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион="Поволжье"
GROUP BY Город.Название
HAVING Count(Разговор.Код_Разговора)>=
MAX(SELECT Count(Разговор.Код_Разговора)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион="Поволжье"
GROUP BY Город.Название)

(3)

SELECT Город.Название,
Count(Разговор.Код_Разговора) AS Кол_разговоров
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион="Поволжье"
HAVING Count(Разговор.Код_Разговора)>=
ALL(SELECT Count(Разговор.Код_Разговора)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион="Поволжье")

(4)

SELECT Город.Название,
Count(Разговор.Код_Разговора) AS Кол_разговоров
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион="Поволжье"
AND Count(Разговор.Код_Разговора)>=
ALL(SELECT Count(Разговор.Код_Разговора)
FROM Город INNER JOIN Разговор ON
Город.Код_Города = Разговор.Код_Города
WHERE Город.Регион="Поволжье"
GROUP BY Город.Название)

Даны таблицы

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 Разговор)

Даны таблицы Город и Разговор.

CREATE TABLE Город
(Код_Города CHAR(5),
Название VARCHAR(20) NOT NULL UNIQUE,
Тариф MONEY)

CREATE TABLE Разговор
(Дата DATETIME NOT NULL,
ВремяСуток VARCHAR(5),
Продолжительность INT NOT NULL)

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

(1)

CREATE DEFAULT df1 AS GETDATE()
sp_bindefault 'df1', 'Разговор.Дата'
CREATE RULE r1 AS @d >='1.01.2003' AND
@p<='31.12.2006'
sp_bindrule 'r1', 'Разговор.Дата'

(2)

ALTER TABLE Разговор ADD CHECK(
Дата>='1.01.2003' AND
<='31.12.2006' DEFAULT GETDATE())

(3)

ALTER TABLE Разговор
ADD CHECK(Дата>='1.01.2003' AND <='31.12.2006')
ALTER TABLE Разговор
ADD DEFAULT Дата=GETDATE()

(4)

CREATE RULE r1 AS @d >='1.01.2003' AND
@p<='31.12.2006' DEFAULT AS GETDATE()
sp_bindrule 'r1', 'Разговор.Дата'

В базе данных basa_user зарегистрировано три пользователя UserA, UserB и UserC. Какие действия предпримет система?

Basa_user АдминистраторUserAUserBUserC

1

2
3

4

5

6

7

8CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole ‘role1’
sp_addrolemember
‘role1′,’UserA’
sp_addrolemember
‘role1′,’UserB’
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA
WITH GRANT
OPTION
REVOKE INSERT ON
tab
TO UserA CASCADE

 

GRANT INSERT ON
tab TO UserC  9INSERT INTO tab
values(1,’aa’)
INSERT INTO tab
values (2,’bb’)
INSERT INTO tab
values (3,’cc’)
INSERT INTO tab
values (4,’dd’)
10????

  • (Правильный ответ)10

ВыполненоВыполненоВыполненоОтклонено

  • 10

ВыполненоОтклоненоВыполненоОтклонено

  • 10

ВыполненоОтклоненоВыполненоВыполнено

  • 10

ОтклоненоВыполненоОтклоненоВыполнено

Пусть дана таблица Город с полями

Код_Города

CHAR(5)

Название

VARCHAR(20)

Тариф

MONEY

Регион

VARCHAR(30)

Найти регионы, стоимость минуты телефонного разговора с которыми не меньше 10 руб., но не больше 100 руб.

  • SELECT DISTINCT Регион, ТарифFROM ГородWHERE Тариф Between 10 OR 100
  • (Правильный ответ)
    SELECT DISTINCT Регион, ТарифFROM ГородWHERE Тариф>=10 And Тариф<=100
  • SELECT DISTINCT Регион, ТарифFROM ГородWHERE Тариф>10 OR Тариф<100
  • (Правильный ответ)
    SELECT DISTINCT Регион, ТарифFROM ГородWHERE Тариф Between 10 And 100

Даны таблицы Рейс и Билет.

CREATE TABLE Рейс(Номер_рейса INT, Конечный_пункт VARCHAR(30), Продолжительность_маршрута INT) CREATE TABLE БИЛЕТ(Номер_места CHAR(3), Номер_рейса CHAR(6), Фамилия_пассажира VARCHAR(20))

Определить самый продолжительный рейс.

  • SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрутаFROM РейсWHERE Рейс.Продолжительность_маршрута=   Max(Рейс.Продолжительность_маршрута)
  • SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрутаFROM РейсWHERE Рейс.Продолжительность_маршрута=   (Max(SELECT Рейс.Продолжительность_маршрута     FROM Рейс))
  • (Правильный ответ)
    SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрутаFROM РейсWHERE Рейс.Продолжительность_маршрута>=ALL    (SELECT Рейс.Продолжительность_маршрута    FROM Рейс)
  • (Правильный ответ)
    SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрутаFROM РейсWHERE Рейс.Продолжительность_маршрута=   (SELECT Max(Рейс.Продолжительность_маршрута)       FROM Рейс)

Даны таблицы Автор и Книга.

CREATE TABLE Автор( Код_Автора INT , Фамилия VARCHAR(50)) CREATE TABLE Книга( Код_Книги INT, Название VARCHAR(50) NOT NULL, Цена MONEY, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL, Количество INT)

Определить авторов, чьи какие-либо книги проданы в наименьшем количестве.

  • (Правильный ответ)
    SELECT Автор.Фамилия, Книга.КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораWHERE Книга.Количество <=ALL(SELECT Книга.Количество FROM Книга)
  • (Правильный ответ)
    SELECT Автор.Фамилия, Книга.КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораWHERE Книга.Количество=(SELECT Min(Книга.Количество) FROM Книга)
  • SELECT Автор.Фамилия, Книга.КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораWHERE Книга.Количество = Min(Книга. Количество)
  • SELECT Автор.Фамилия, Книга. КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораWHERE Книга.Количество =Min(SELECT Книга.Количество FROM Книга)

В таблицу Город необходимо добавить сведения о регионе и изменить тип поля Код_Города на CHAR(5). Отметьте правильные ответы:

  • (Правильный ответ)
    ALTER TABLE Город ADD Регион VARCHAR(50)ALTER TABLE Город ALTER COLUMN Код_Города VARCHAR(5) NOT NULL
  • (Правильный ответ)
    ALTER TABLE Город ADD Регион VARCHAR(50)ALTER TABLE Город ALTER COLUMN Код_Города CHAR(5) NOT NULL
  • ALTER TABLE Город ADD COLUMN Регион VARCHAR(50) NOT NULLALTER TABLE Город DROP Код_ГородаALTER TABLE Город ADD COLUMN Код_Города VARCHAR(5)
  • ALTER TABLE Город ADD Регион VARCHAR(50) NOT NULLALTER TABLE Город ALTER Код_Города CHAR(5) NOT NULL

В таблице Город значения поля Тариф ограничить диапазоном от 0.1 руб. до 7.8. Руб.

  • (Правильный ответ)
    ALTER TABLE Город ADD CHECK(Тариф>=0.1 AND Тариф<=7.8)
  • ALTER TABLE Город ALTER Тариф MONEY CHECK(Тариф >=0.1 AND Тариф<=7.8)
  • ALTER TABLE Город ADD CHECK(Тариф <=0.1 AND >=7.8)
  • (Правильный ответ)
    ALTER TABLE Город ADD CONSTRAINT ch1 CHECK(Тариф Between 0.1 and 7.8)

Назовите преимущества архитектуры «клиент-сервер»?

  • (Правильный ответ) данные хранятся в единственном экземпляре на сервере
  • обработка запроса выполняется на компьютере-клиенте
  • результат запроса в виде файла возвращается клиенту

Для определения номера телефона (например, +74952539312) подойдет описание:

  • (Правильный ответ) Telephon CHAR(12)
  • Telephon INT
  • Telephon DECIMAL(10)

Какое из следующих описаний типов является неправильным?

  • DECIMAL(8,8)
  • DECIMAL(6,3)
  • (Правильный ответ) DECIMAL(12,14)

Какое из следующих чисел можно внести в поле, описанное как DECIMAL(6,3)?

  • 56716.222
  • -415.3567
  • (Правильный ответ) -123.423

Задание: Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.

Пользователь UserAПользователь UserBUSE basa_userSET TRANSACTION ISOLATION LEVELREPEATABLE READ BEGIN TRANSACTION TRA1.SELECT * FROM Товар 3.UPDATE Товар SETостаток=остаток+10 WHERE Код_Товара=4 ROLLBACK TRANSACTION TRA USE basa_userSET TRANSACTION ISOLATIONLEVEL SERIALIZABLE BEGIN TRANSACTION TRB 2.SELECT * FROM Товар 4.DELETE FROM Товар WHEREКод_Товара=4ROLLBACK TRANSACTION TRB

Какие шаги система выполнит, а какие будут заблокированы?

  • (Правильный ответ)1
    2
    3
    4

    Блокируется

ВыполняетсяБлокируетсяВыполняется

  • 1
    2
    3
    4

    Выполняется

БлокируетсяВыполняетсяВыполняется

  • 1
    2
    3
    4

    Выполняется

БлокируетсяВыполняетсяБлокируется

  • 1
    2
    3
    4

    Блокируется

БлокируетсяВыполняетсяБлокируется

Дан некоторый фрагмент SQL-кода:

DECLARE @a CHAR(12)DECLARE @b DATETIMEDECLARE @c INTSET @a=’12.2.04’SET @b=’3.04.04’

Укажите правильные операторы для вычисления количества дней между датами:

  • SET @c=CAST(@b AS INT) +CAST(@a AS INT)
  • (Правильный ответ) SET @c=CAST(@b-CAST(@a AS DATETIME) AS INT)
  • SET @c=@b-CAST(@a AS DATETIME)
  • (Правильный ответ) SET @c=CAST((@b-@a) AS INT)

Какие из следующих строк можно внести в поле, описанное как VARCHAR(6), чтобы данные хранились без потерь?

  • Здравствуйте
  • (Правильный ответ) 123456
  • (Правильный ответ) Привет

Пусть номер страхового пенсионного свидетельства состоит из 11 цифр, разделенных знаками «-«, например: 063-840-013-82. Укажите правильный тип данных для его описания.

  • Pens_svid INT(11)
  • Пенс_свид FLOAT
  • (Правильный ответ) Пенс_свидетельство CHAR(14)
  • Пенс.свид. CHAR(14)

Какие из следующих описаний типов являются правильными?

  • DECIMAL(3,4)
  • (Правильный ответ) NUMERIC(7,7)
  • (Правильный ответ) DATETIME
  • INTEGER(11,2)

Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.

CREATE DATABASE basa1ON PRIMARY ( NAME=b1, FILENAME=’D:userb1.mdf’,SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%),(NAME=b2, SIZE=100MB, MAXSIZE=500, FILEGROWTH=10%)LOG ON(NAME=l1, FILENAME=’E:userl1.ldf’, SIZE=50MB, MAXSIZE=100, FILEGROWTH=10)

Выберите правильный ответ.

  • неправильно указано логическое имя базы данных
  • база данных будет успешно создана
  • неправильно определен размер базы данных
  • (Правильный ответ) неправильно указано физическое имя базы данных

В таблицу Рейс необходимо добавить бортовой номер и увеличить длину поля Конечный_пункт.

  • ALTER TABLE Рейс ADD борт INT(5)ALTER TABLE Рейс ALTER ADD Конечный пункт VARCHAR(50)
  • (Правильный ответ)
    ALTER TABLE Рейс ADD COLUMN борт CHAR(5)ALTER TABLE Рейс ALTER COLUMN Конечный_пункт VARCHAR(50)
  • ALTER TABLE Рейс ADD COLUMN борт FLOAT(8,3)ALTER TABLE Рейс ALTER Конечный_пункт VARCHAR(50)
  • ALTER TABLE Рейс ADD COLUMN борт VARCHAR(3,1) NOT NULLALTER TABLE Рейс DROP Конечный_пунктALTER TABLE Рейс ADD COLUMN Конечный_пункт VARCHAR(50)

Пусть дана таблица Город.

Код_Города

CHAR(5)

Название

VARCHAR(20)

Тариф

MONEY

Регион

VARCHAR(30)

Вывести регионы и города, стоимость минуты разговора с которыми либо меньше 20 руб., либо больше 100, а название города оканчивается на «-ов» или «-ин».

  • SELECT Регион, Название, ТарифFROM ГородWHERE (Название Like ‘%ов’ Or Название Like ‘%ин’) OR (Тариф<20 Or Тариф>100)
  • SELECT Регион, Название, ТарифFROM ГородWHERE (Название Like ‘%ов’ AND Название Like ‘%ин’) OR (Тариф<20 AND Тариф>100)
  • (Правильный ответ)
    SELECT Регион, Название, ТарифFROM ГородWHERE ((Название Like ‘%ов’ Or Название Like ‘%ин’) AND (Тариф<20 Or Тариф>100))

Пусть дана таблица Автор.

Фамилия

VARCHAR(50)

Пол

CHAR(3)

Дата_рождения

DATETIME

Телефон

CHAR(9)

Количество_трудов

INT

Город

VARCHAR(15)

Вывести в алфавитном порядке фамилии авторов из Самары, в телефонном номере которых на втором или третьем месте стоят цифры 5 или 8, а последними являются цифры 34.

  • SELECT Фамилия, Город, ТелефонFROM АвторWHERE Город=’Самара’ OR (Телефон Like ‘_[5,8]%’ AND Телефон Like ‘__[5,8]%’) OR Телефон Like ‘%[3][4]’ORDER BY Фамилия
  • SELECT Фамилия, Город, ТелефонFROM АвторWHERE Город=’Самара’ AND Телефон Like ‘_[5,8]%’ Or Телефон Like ‘__[5,8]%’ And Телефон Like ‘%[3][4]’ORDER BY Фамилия
  • SELECT Фамилия, Город, ТелефонFROM АвторWHERE Город=’Самара’ AND (Телефон Like ‘_[5,8]%’ AND Телефон Like ‘__[5,8]%’) And Телефон Like ‘%[3][4]’ORDER BY Фамилия
  • (Правильный ответ)
    SELECT Фамилия, Город, ТелефонFROM АвторWHERE Город=’Самара’ AND (Телефон Like ‘_[5,8]%’ Or Телефон Like ‘__[5,8]%’) And Телефон Like ‘%[3][4]’ORDER BY Фамилия

Пусть дана таблица Город.

Код_Города

CHAR(5)

Название

VARCHAR(20)

Тариф

MONEY

Регион

VARCHAR(30)

Вывести в алфавитном порядке список городов Поволжского региона, в коде которых встречается цифра 9.

  • SELECT Название, Код_Города, РегионFROM ГородWHERE Код_Города Like ‘%9%’ OR Регион=’Поволжье’ORDER BY Название
  • SELECT Название, Код_Города, РегионFROM ГородWHERE Код_Города Like ‘%9_’ OR Регион=’Поволжье’ORDER BY Название
  • SELECT Название, Код_Города, РегионFROM ГородWHERE Код_Города Like ‘_9_’ AND Регион=’Поволжье’ORDER BY Название
  • (Правильный ответ)
    SELECT Название, Код_Города, РегионFROM ГородWHERE Код_Города Like ‘%9%’ AND Регион=’Поволжье’ORDER BY Название

Пусть дана таблица Блюдо с полями

Название_блюда

VARCHAR(20)

Время_приготовления

DATETIME

Калорийность

INT

Повар

VARCHAR(20)

Стоимость

MONEY

Определить повара, стоимость блюд которого не превышает 100 руб., а калорийность – 400 ккал.

  • SELECT Повар, Калорийность, СтоимостьFROM БлюдоWHERE Калорийность>400 OR Стоимость<100
  • SELECT Повар, Калорийность, СтоимостьFROM БлюдоWHERE Between(Калорийность<400 AND Стоимость<100)
  • (Правильный ответ)
    SELECT Повар, Калорийность, СтоимостьFROM БлюдоWHERE Калорийность<=400 AND Стоимость<=100
  • SELECT Повар, Калорийность, СтоимостьFROM БлюдоWHERE Калорийность<=400 OR Стоимость<=100

Найти абонентов, которые звонят в Москву, но ни разу не звонили в Самару в мае.

CREATE TABLE Город ( Код_Города INT , Название VARCHAR(20) NOT NULL, Тариф MONEY) CREATE TABLE Разговор(Код_Разговора INT , Код_Города INT NOT NULL, Фамилия VARCHAR(20), Дата DATETIME NOT NULL, Продолжительность INT NOT NULL)

  • SELECT DISTINCT Разговор.ФамилияFROM РазговорWHERE Разговор.Фамилия IN(SELECT Разговор.ФамилияFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Город.Название=’Москва’ AND Город.Название<>’Самара’ AND Month(Разговор.Дата)=5)
  • SELECT DISTINCT Разговор.ФамилияFROM РазговорWHERE Город.Название=’Москва’AND Город.Название<>’Самара’ AND Month(Разговор.Дата)=5
  • (Правильный ответ)
    SELECT DISTINCT Разговор.ФамилияFROM РазговорWHERE Разговор.Фамилия IN(SELECT Разговор.ФамилияFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Город.Название=’Москва’)AND Разговор.Фамилия NOT IN(SELECT Разговор.ФамилияFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Город.Название=’Самара’ AND Month(Разговор.Дата)=5)
  • SELECT DISTINCT Разговор.ФамилияFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Город.Название=’Москва’AND Город.Название<>’Самара’ AND Month(Разговор.Дата)=5

Даны таблицы

CREATE TABLE Город( Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY) CREATE TABLE Разговор(Код_Разговора INT ,Код_Города INT NOT NULL,Фамилия VARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Найти абонентов, которые звонят в Москву, но ни разу не вели переговоры с Самарой.

  • SELECT DISTINCT Разговор.ФамилияFROM РазговорWHERE Город.Название=’Москва’AND Город.Название<>’Самара’
  • SELECT DISTINCT Разговор.ФамилияFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Город.Название=’Москва’AND Город.Название<>’Самара’
  • (Правильный ответ)
    SELECT DISTINCT Разговор.ФамилияFROM РазговорWHERE Разговор.Фамилия IN(SELECT Разговор.ФамилияFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Город.Название=’Москва’)AND Разговор.Фамилия NOT IN(SELECT Разговор.ФамилияFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Город.Название=’Самара’);
  • SELECT DISTINCT Разговор.ФамилияFROM РазговорWHERE Разговор.Фамилия IN(SELECT Разговор.ФамилияFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Город.Название=’Москва’ AND Город.Название<>’Самара’)

Даны таблицы Автор и Книга

CREATE TABLE Автор(Код_Автора INT , Фамилия VARCHAR(50), Пол VARCHAR(50) NOT NULL ) CREATE TABLE Книга( Код_Книги INT, Название VARCHAR(50) NOT NULL, Тематика VARCHAR(50) NOT NULL, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL)

Вывести список авторов, работающих в жанре «детектив».

  • (Правильный ответ)
    SELECT DISTINCT Автор.Фамилия, Книга.ИздательствоFROM Автор, Книга WHERE Автор.Код_Автора = Книга.Код_Автора AND Книга.Тематика =’Детектив’
  • (Правильный ответ)
    SELECT DISTINCT Автор.Фамилия, Книга.ИздательствоFROM Автор INNER JOIN Книга ON Автор.Код_Автора = Книга.Код_АвтораWHERE Книга.Тематика =’Детектив’
  • SELECT DISTINCT Автор.Фамилия, Книга.ИздательствоFROM Автор JOIN Книга ON Автор = КнигаWHERE Книга.Тематика =’Детектив’

Вывести список пассажиров, которые летали в апреле в Москву, но не летали в Киев в январе.

CREATE TABLE Рейс(Номер_рейса INT, Конечный_пункт VARCHAR(30), Дата_вылета DATETIME) CREATE TABLE БИЛЕТ(Номер_места CHAR(3), Номер_рейса CHAR(6), Дата_продажи DATETIME, Фамилия_пассажира VARCHAR(30))

  • (Правильный ответ)
    SELECT DISTINCT Билет.Фамилия_пассажираFROM БилетWHERE Билет.Фамилия_пассажира In (SELECT Билет.Фамилия_пассажираFROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейсаWHERE Рейс.Конечный_пункт=’Москва’ AND Month(Рейс.Дата_вылета)=4) ANDБилет.Фамилия_пассажира NOT In(SELECT Билет.Фамилия_пассажираFROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейсаWHERE Рейс.Конечный_пункт=’Киев’ AND Month(Рейс.Дата_вылета)=1)
  • SELECT DISTINCT Билет.Фамилия_пассажираFROM БилетWHERE Month(Рейс.Дата_вылета)=4 AND Билет.Фамилия_пассажира In (SELECT Билет.Фамилия_пассажираFROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейсаWHERE Рейс.Конечный_пункт=’Москва’ ANDРейс.Конечный_пункт=’Киев’ AND Month(Рейс.Дата_вылета)=1)
  • SELECT DISTINCT Билет.Фамилия_пассажираFROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейсаWHERE Рейс.Конечный_пункт=’Москва’ AND Month(Рейс.Дата_вылета)=4 ORРейс.Конечный_пункт<>’Киев’ AND Month(Рейс.Дата_вылета)=1
  • SELECT DISTINCT Билет.Фамилия_пассажираFROM БилетWHERE Рейс.Конечный_пункт=’Москва’ AND Month(Рейс.Дата_вылета)=4 ORРейс.Конечный_пункт<>’Киев’ AND Month(Рейс.Дата_вылета)=1)

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость INT ) CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Жиры INT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость_100_грамм FLOAT NOT NULL)

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

  • SELECT Блюдо.Повар, Блюдо.Название_блюда, Компонент.Название_компонентаFROM Блюдо INNER JOIN Компонент ON Блюдо.Название_блюда = Компонент.БлюдоWHERE Компонент.Название_компонента Is Null
  • SELECT Блюдо.Повар, Блюдо.Название_блюда, Компонент.Название_компонентаFROM Блюдо RIGHT JOIN Компонент ON Блюдо.Название_блюда = Компонент.БлюдоWHERE Компонент.Название_компонента Is Null
  • SELECT Блюдо.Повар, Блюдо.Название_блюда, Компонент.Название_компонентаFROM Блюдо,Компонент WHERE Блюдо.Название_блюда = Компонент.БлюдоAND Компонент.Название_компонента Is Null
  • (Правильный ответ)
    SELECT Блюдо.Повар, Блюдо.Название_блюда, Компонент.Название_компонентаFROM Блюдо LEFT JOIN Компонент ON Блюдо.Название_блюда = Компонент.БлюдоWHERE Компонент.Название_компонента Is Null

Вывести список авторов-женщин, работающих в жанре романа, но не в жанре фантастики.

CREATE TABLE Автор(Код_Автора INT , Фамилия VARCHAR(50), Пол VARCHAR(50) NOT NULL ) CREATE TABLE Книга( Код_Книги INT, Название VARCHAR(50) NOT NULL, Тематика VARCHAR(50) NOT NULL, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL)

  • SELECT Автор.Фамилия, Автор.Код_АвтораFROM Автор,КнигаWHERE Автор.Пол=’ж’ AND Автор.Код_Автора= Книга.Код_Автора ANDКнига.Тематика=’Роман’ AND(Книга.Тематика<>’Фантастика’)
  • SELECT Автор.Фамилия, Автор.Код_АвтораFROM АвторWHERE Автор.Пол=’ж’ AND Книга.Тематика=’Роман’ ANDКнига.Тематика=’Фантастика’
  • (Правильный ответ)
    SELECT Автор.Фамилия, Автор.Код_АвтораFROM АвторWHERE Автор.Пол=’ж’ AND Автор.Код_Автора IN (SELECT Книга.Код_АвтораFROM КнигаWHERE Книга.Тематика=’Роман’) ANDАвтор.Код_Автора NOT IN (SELECT Книга.Код_АвтораFROM КнигаWHERE Книга.Тематика=’Фантастика’)
  • SELECT Автор.Фамилия, Автор.Код_АвтораFROM АвторWHERE Автор.Пол=’ж’ AND Автор.Код_Автора IN (SELECT Книга.Код_АвтораFROM КнигаWHERE Книга.Тематика=’Роман’ ANDКнига.Тематика<>’Фантастика’)

Даны таблицы Город и Разговор.

CREATE TABLE Город ( Код_Города INT , Название VARCHAR(20) NOT NULL, Тариф MONEY) CREATE TABLE Разговор(Код_Разговора INT , Код_Города INT NOT NULL, Фамилия VARCHAR(20), Дата DATETIME NOT NULL, Продолжительность INT NOT NULL)

Вывести список абонентов, которые говорили с Москвой в апреле.

  • SELECT Разговор.Фамилия, Город.НазваниеFROM Город JOIN Разговор ON Город.Название=’Москва’ ON Город.Код_Города = Разговор.Код_Города AND Month(Разговор.Дата)=4
  • (Правильный ответ)
    SELECT Разговор.Фамилия, Город.НазваниеFROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Город.Название=’Москва’ AND Month(Разговор.Дата)=4
  • (Правильный ответ)
    SELECT Разговор.Фамилия, Город.НазваниеFROM Город, Разговор WHERE Город.Код_Города = Разговор.Код_Города AND Город.Название=’Москва’ AND Month(Разговор.Дата)=4

Даны таблицы

CREATE TABLE Город( Код_Города INT ,Название VARCHAR(20) NOT NULL,Тариф MONEY) CREATE TABLE Разговор(Код_Разговора INT ,Код_Города INT NOT NULL,Фамилия IVARCHAR(20),Дата DATETIME NOT NULL,Продолжительность INT NOT NULL)

Вывести список городов, с которыми не зарегистрировано ни одного телефонного разговора.

  • SELECT DISTINCT Город.Название FROM Город RIGHT JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Разговор.Код_Разговора Is Null
  • SELECT DISTINCT Город.Название FROM Город, Разговор WHERE Город.Код_Города = Разговор.Код_ГородаAND Разговор.Код_Разговора Is Null
  • SELECT DISTINCT Город.Название FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Разговор.Код_Разговора Is Null
  • (Правильный ответ)
    SELECT DISTINCT Город.Название FROM Город LEFT JOIN Разговор ON Город.Код_Города = Разговор.Код_ГородаWHERE Разговор.Код_Разговора Is Null

Даны таблицы

CREATE TABLE Блюдо(Название_блюда VARCHAR(20) NOT NULL,Время_приготовления INT NOT NULL,Общая_калорийность INT NOT NULL,Номер_рецепта INT,Повар VARCHAR(20),Стоимость MONEY ) CREATE TABLE Компонент(Название_компонента VARCHAR(20),Калорийность INT NOT NULL,Вес FLOAT,Белки INT,Блюдо VARCHAR(20),Углеводы INT,Стоимость MONEY NOT NULL)

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

  • (Правильный ответ)
    SELECT Блюдо.Повар, Sum(Компонент.Вес*Компонент.Стоимость) AS Общ_Стоимость, Count(Компонент.Название_компонента) AS Кол_компонентFROM Блюдо INNER JOIN Компонент ON Блюдо.Название_блюда = Компонент.БлюдоGROUP BY Блюдо.Повар
  • SELECT Sum(Вес* Стоимость) AS Общ_Стоимость, Count(Название_компонента) AS Кол_компонентFROM Блюдо INNER JOIN Компонент ON Блюдо.Название_блюда = Компонент.БлюдоGROUP BY Повар
  • SELECT Блюдо.Повар, Sum(Компонент.Вес*Компонент.Стоимость) AS Общ_Стоимость, Count(Компонент.Название_компонента) AS Кол_компонентFROM Блюдо INNER JOIN Компонент ON Блюдо.Название_блюда = Компонент.Блюдо

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT,Конечный_пункт VARCHAR(30),Дата_вылета DATETIME,Продолжительность_маршрута INT,Число_билетов INT,Стоимость MONEY) CREATE TABLE БИЛЕТ(Номер_места CHAR(3),Номер_рейса INT,Дата_продажи DATETIME,Стоимость MONEY,Фамилия_пассажира VARCHAR(20))

Вывести список городов, куда было продано не менее 200 билетов на сумму, превышающую 10000 руб.

  • SELECT Рейс.Конечный_пункт, Count(Билет.Фамилия_пассажира) AS Кол_пассажиров, Sum(Рейс.Стоимость) AS Общ_СтоимостьFROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейсаGROUP BY Рейс.Конечный_пунктHAVING Кол_пассажиров>=200 AND Общ_Стоимость>10000
  • SELECT Рейс.Конечный_пункт, Count(Билет.Фамилия_пассажира) AS Кол_пассажиров, Sum(Рейс.Стоимость) AS Общ_СтоимостьFROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейсаHAVING Count(Билет.Фамилия_пассажира)>=200 AND Sum(Рейс.Стоимость)>10000
  • (Правильный ответ)
    SELECT Рейс.Конечный_пункт, Count(Билет.Фамилия_пассажира) AS Кол_пассажиров, Sum(Рейс.Стоимость) AS Общ_СтоимостьFROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейсаGROUP BY Рейс.Конечный_пунктHAVING Count(Билет.Фамилия_пассажира)>=200 AND Sum(Рейс.Стоимость)>10000

Даны таблицы

CREATE TABLE Рейс(Номер_рейса INT, Конечный_пункт VARCHAR(30), Дата_вылета DATETIME, Число_билетов INT, Стоимость MONEY) CREATE TABLE БИЛЕТ(Номер_места CHAR(3), Номер_рейса CHAR(6), Дата_продажи DATETIME, Стоимость MONEY)

Рассчитать общую стоимость билетов для каждого рейса, 5% налог с продаж и доход от рейсов до Москвы.

  • SELECT Номер_рейса, @s=Стоимость*Число_билетов, @n=Стоимость*Число_билетов* 0.05, @d=Стоимость*Число_билетов* 0.95 FROM РейсHAVING Конечный_пункт=’Москва’
  • (Правильный ответ)
    SELECT Номер_рейса, Стоимость*Число_билетов AS Общ_стоимость, Стоимость*Число_билетов*0.05 AS Налог, Стоимость*Число_билетов*0.95 AS ДоходFROM РейсWHERE Конечный_пункт=’Москва’
  • SELECT Номер_рейса, Общ_стоимость =Стоимость*Число_билетов, Налог =Общ_стоимость* 0.05, Доход =Общ_стоимость *0.95 FROM РейсWHERE Конечный_пункт=’Москва’
  • SELECT Номер_рейса, Стоимость*Число_билетов AS Общ_стоимость, Общ_стоимость* 0.05 AS Налог, Общ_стоимость *0.95 AS ДоходFROM РейсHAVING Конечный_пункт=’Москва’

Даны таблицы

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,Количество INT)

Определить авторов, у каждого из которых было продано более 1000 экземпляров книг.

  • (Правильный ответ)
    SELECT Автор.Фамилия, Sum(Книга.Количество) AS Общ_КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораGROUP BY Автор.ФамилияHAVING Sum(Книга.Количество)>1000
  • SELECT Sum(Книга.Количество) AS Общ_КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораGROUP BY Автор.ФамилияHAVING Общ_Количество>1000
  • SELECT Автор.Фамилия, Sum(Книга.Количество) AS Общ_КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораHAVING Sum(Книга.Количество)>1000
  • SELECT Автор.Фамилия, Sum(Книга.Количество) AS Общ_КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораGROUP BY Автор.ФамилияWHERE Sum(Книга.Количество)>1000

В каком количестве и на какую сумму издавал свои книги автор Борисов в

 

 

Главная / Базы данных /
Основы SQL / Тест 1

Упражнение 1:


Номер 1

Что представляют собой базы данных?

Ответ:

(1) аппаратные средства для хранения данных 

(2) набор логически связанных данных 

(3) программные средства управления данными 

(4) компьютер с хранящимися на нем данными 


Номер 2

Каковы основные функции СУБД?

Ответ:

(1) создание и уничтожение БД 

(2) хранение данных 

(3) выборка данных по требованию пользователя 


Номер 3

Назовите отличительные черты реляционных баз данных.

Ответ:

(1) основой реляционной БД является понятие математических отношений 

(2) основной объект реляционной БД — двумерные таблицы и связи между ними 

(3) основной объект реляционной БД — записи и указатели на них 

(4) основной объект реляционной БД — иерархические структуры типа бинарных деревьев 


Номер 4

Какие связи между объектами моделируются в реляционных базах данных?

Ответ:

(1) суперкласс – класс — подкласс 

(2) «один-ко-многим» 

(3) отношения наследования 


Упражнение 2:


Номер 1

Назовите отличительные черты реализации от стандарта языка.

Ответ:

(1) любая реализация языка является подмножеством стандарта 

(2) стандарт – это подмножество любой реализации языка 

(3) реализация является дополнением и усовершенствованием команд и опций стандарта языка 

(4) реализация языка заключается в адаптации стандарта языка к конкретной СУБД 


Номер 2

На какое представление данных ориентирован язык SQL?

Ответ:

(1) на логически связанные совокупности отношений 

(2) на логические записи файлов 

(3) на физические записи на магнитном носителе 

(4) на физические записи с указателями связей 


Номер 3

Определите роль языка SQL в создании информационных систем.

Ответ:

(1) разработка структуры БД 

(2) организация пользовательского интерфейса 

(3) обеспечение различных представлений данных 

(4) преобразование данных 


Номер 4

Определите типы команд языка SQL.

Ответ:

(1) управление ходом вычислений 

(2) определение структуры данных 

(3) манипулирование данными 

(4) администрирование данных 


Упражнение 3:


Номер 1

Определите роль клиента в двухуровневой архитектуре «клиент-сервер».

Ответ:

(1) управление пользовательским интерфейсом 

(2) управление логикой приложения 

(3) создание и выполнение запроса к БД 


Номер 2

Определите роль сервера в двухуровневой архитектуре «клиент-сервер».

Ответ:

(1) обеспечение целостности данных 

(2) создание пользовательского интерфейса 

(3) управление параллельной работой пользователей 


Номер 3

Какие функции перешли к среднему уровню обработки данных  в трехуровневой архитектуре «клиент-сервер»?

Ответ:

(1) управление пользовательским интерфейсом 

(2) управление логикой приложения 

(3) хранение данных 

(4) обработка запросов 


Номер 4

Назовите преимущества архитектуры «клиент-сервер»?

Ответ:

(1) данные хранятся в единственном экземпляре на сервере 

(2) обработка запроса выполняется на компьютере-клиенте 

(3) результат запроса в виде файла возвращается клиенту 


Ответы на экзаменационные вопросы интернет-курсов ИНТУИТ (INTUIT): 363. Основы SQL

  1. В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?
  2. В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?
  3. В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?
  4. В базе данных basa_user зарегистрировано два пользователя: UserA и UserB. Какие действия предпримет система?
  5. В базе данных basa_user зарегистрировано три пользователя UserA, UserB и UserC. Какие действия предпримет система?
  6. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  7. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  8. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  9. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  10. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  11. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  12. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  13. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  14. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  15. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  16. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  17. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  18. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  19. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  20. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  21. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  22. В базе данных basa_user зарегистрировано три пользователя: UserA, UserB и UserC. Какие действия предпримет система?
  23. В базе данных basa1 имеется таблица Блюдо. Из базы данных basa2 необходимо выполнить действие по увеличению стоимости всех блюд на 50%. В какой базе данных должна быть создана процедура и как можно ее выполнить?
  24. В базе данных basa1 имеется таблица Город. Из базы данных basa2 необходимо выполнить действие по увеличению тарифов для всех городов на 15%. В какой базе данных должна быть создана процедура и как можно ее выполнить?
  25. В базе данных basa1 имеется таблица Город. Содержащуюся в ней информацию необходимо прочитать из базы данных basa2. В какой базе данных должна быть создана процедура, и как можно ее выполнить?
  26. В базе данных basa1 имеется таблица Книга. Из базы данных basa2 необходимо выполнить действие по увеличению цены всех книг на 10%. В какой базе данных должна быть создана процедура и как можно ее выполнить?
  27. В базе данных basa1 имеется таблица Книга. Содержащуюся в ней информацию необходимо прочитать из базы данных basa2. В какой базе данных должна быть создана процедура, и как можно ее выполнить?
  28. В базе данных basa1 имеется таблица Рейс. Из базы данных basa2 необходимо выполнить действие по увеличению стоимости билетов на все рейсы на 25%. В какой базе данных должна быть создана процедура и как можно ее выполнить?
  29. В базе данных basa1 имеется таблица Рейс. Содержащуюся в ней информацию необходимо прочитать из базы данных basa2. В какой базе данных должна быть создана процедура, и как можно ее выполнить?
  30. В базе данных в таблице Автор необходимо хранить сведения об авторах книг — фамилию, имя, отчество автора, а также его пол, возраст, телефон, номер расчетного счета. Для описания данных используются следующие поля:
  31. В базе данных в таблице Блюдо необходимо хранить сведения о входящих в меню блюдах с указанием названия, времени приготовления, калорийности, стоимости, веса и фамилии повара. Для описания данных используются следующие поля:
  32. В базе данных в таблице Город необходимо хранить сведения о городах, с которыми поддерживается телефонная связь, о часовом поясе города, его коде и стоимости минуты разговора (тарифе). Для описания данных используются следующие поля:
  33. В базе данных в таблице Рейс необходимо хранить сведения о рейсах самолетов с указанием конечного пункта, даты вылета, продолжительности маршрута, количества мест в самолете и стоимости билета. Для описания данных используются следующие поля:
  34. В каком количестве и на какую сумму издавал свои книги автор Борисов в каждом издательстве?
  35. В таблице Автор ограничить поле Пол заданным списком: м, ж, муж, жен.
  36. В таблице Билет ограничить поле Номер_места диапазоном от 0 до 250.
  37. В таблице Город значения поля Тариф ограничить диапазоном от 0.1 руб. до 7.8. Руб.
  38. В таблице Граф представлен график сетевого планирования:
  39. В таблице Граф представлен график сетевого планирования:
  40. В таблице Граф представлен график сетевого планирования:
  41. В таблице Граф представлен график сетевого планирования:
  42. В таблице Граф представлен график сетевого планирования:
  43. В таблице Граф представлен график сетевого планирования:
  44. В таблице Граф представлен график сетевого планирования:
  45. В таблице Граф представлен график сетевого планирования:
  46. В таблице Граф представлен график сетевого планирования:
  47. В таблице Граф представлен график сетевого планирования:
  48. В таблице Граф представлен график сетевого планирования:
  49. В таблице Граф представлен график сетевого планирования:
  50. В таблицу Автор необходимо добавить сведения об ИНН автора и заменить поле Возраст на поле Дата рождения.
  51. В таблицу Блюдо необходимо добавить сведения о содержании жиров в блюде (в %) и заменить тип поля Время_приготовления на вещественный.
  52. В таблицу Город необходимо добавить сведения о регионе и изменить тип поля Код_Города на CHAR(5). Отметьте правильные ответы:
  53. В таблицу Рейс необходимо добавить бортовой номер и увеличить длину поля Конечный_пункт.
  54. Вывести список авторов-женщин, работающих в жанре романа, но не в жанре фантастики.
  55. Вывести список пассажиров, которые летали в апреле в Москву, но не летали в Киев в январе.
  56. Дан некоторый фрагмент SQL-кода:
  57. Дан некоторый фрагмент SQL-кода:
  58. Дан некоторый фрагмент SQL-кода:
  59. Дан некоторый фрагмент SQL-кода:
  60. Дан фрагмент Java-программы для выборки данных из таблицы Автор, расположенной в источнике данных с именем DSN=mystud.
  61. Дан фрагмент Java-программы для выборки данных из таблицы Блюдо, расположенной в источнике данных с именем DSN=mystud.
  62. Дан фрагмент Java-программы для выборки данных из таблицы Город, расположенной в источнике данных с именем DSN=mystud.
  63. Дан фрагмент Java-программы для выборки данных из таблицы Город, расположенной в источнике данных с именем DSN=mystud.
  64. Дан фрагмент Java-программы для выборки данных из таблицы Рейс, расположенной в источнике данных с именем DSN=mystud.
  65. Дан фрагмент Java-программы для изменения данных в таблице Автор.
  66. Дан фрагмент Java-программы для изменения данных в таблице Блюдо.
  67. Дан фрагмент Java-программы для изменения данных в таблице Город.
  68. Дан фрагмент Java-программы для изменения данных в таблице Рейс.
  69. Дан фрагмент Java-программы для удаления и выборки данных из таблицы Рейс, расположенной в источнике данных с именем DSN=mystud.
  70. Дан фрагмент Java-программы для удаления и выборки данных из таблицы Автор, расположенной в источнике данных с именем DSN=mystud.
  71. Дан фрагмент сценария VBScript для выборки данных из таблицы Автор, расположенной в базе данных basa_user1 на SQL Server с именем its.
  72. Дан фрагмент сценария VBScript для выборки данных из таблицы Блюдо, расположенной в базе данных basa_user1 на SQL Server с именем its.
  73. Дан фрагмент сценария VBScript для выборки данных из таблицы Рейс, расположенной в базе данных basa_user1 на SQL Server с именем its.
  74. Дан фрагмент сценария VBScript для изменения данных в таблице Город.
  75. Дан фрагмент сценария VBScript для изменения данных в таблице Рейс.
  76. Дан фрагмент сценария VBScript для изменения данных в таблице Автор.
  77. Дан фрагмент сценария VBScript для изменения данных в таблице Блюдо.
  78. Дан фрагмент сценария VBScript для изменения и выборки данных из таблицы Рейс, расположенной в базе данных basa_user1 на SQL Server с именем its.
  79. Дан фрагмент сценария VBScript для изменения и выборки данных из таблицы Автор, расположенной в базе данных basa_user1 на SQL Server с именем its.
  80. Дан фрагмент сценария VBScript для удаления и выборки данных из таблицы Город в базе данных basa_user1 на SQL Server с именем its.
  81. Дана таблица Автор с полями
  82. Дана таблица Автор. Вывести в алфавитном порядке фамилии авторов из Самары, в телефонном номере которых на первом или третьем месте стоит цифра от 5 до 8, а последними являются цифры 7 и 8.
  83. Дана таблица Билет с полями:
  84. Дана таблица Билет с полями:
  85. Дана таблица Билет с полями:
  86. Дана таблица Билет. Разработать триггер, который выполняется вместо изменения стоимости одного билета. Изменение стоимости билета выполнить только в том случае, если этот рейс отправляется в Москву.
  87. Дана таблица Билет. Разработать триггер, который выполняется вместо изменения стоимости одного билета. Изменение стоимости билета выполнить только в том случае, если на этот рейс продано не менее 20 билетов.
  88. Дана таблица Город с полями
  89. Дана таблица Город. Вывести в алфавитном порядке список городов Поволжского региона, в коде которых встречается цифра 9, а в названии города на втором месте стоит буква «д» или «ж».
  90. Дана таблица Книга. Разработать триггер, который выполняется вместо изменения цены одной книги в этой таблице. Изменение цены выполнить только в том случае, если количество экземпляров данной книги превышает 100.
  91. Дана таблица Книга. Разработать триггер, который выполняется вместо изменения цены одной книги в этой таблице. Изменение цены выполнить только в том случае, если книга издается в издательстве ‘Мир’.
  92. Дана таблица Компонент. Разработать триггер, выполняющийся вместо изменения калорийности одного компонента. Выполнить изменение калорийности только в том случае, если общая калорийность блюда, в состав которого входит изменяемый компонент, не превышает 400 ккал.
  93. Дана таблица Разговор. Разработать триггер, который выполняется вместо изменения продолжительности одного разговора. Выполнить изменение продолжительности только в том случае, если общая продолжительность телефонных соединений абонента, в разговоре которого меняется продолжительность, не превышает 300 мин.
  94. Дана таблица Разговор. Разработать триггер, который выполняется вместо изменения продолжительности одного разговора. Выполнить изменение продолжительности только для тех абонентов, которые говорили с Москвой.
  95. Дана таблица Рейс с полями
  96. Дана таблица Рейс. Вывести в убывающем порядке список рейсов, вылетающих не позднее 1 апреля в Москву, Петербург или Самару, стоимость билета не более 1500 р.; в Саратов – не позднее 7 апреля, стоимость билета — от 500 до 800 р.
  97. Дана таблица со структурой, которая описывает некоторый граф:
  98. Дана таблица со структурой, которая описывает некоторый граф:
  99. Дана таблица со структурой, которая описывает некоторый граф:
  100. Дана таблица со структурой, которая описывает некоторый граф:
  101. Дана таблица со структурой, которая описывает некоторый граф:
  102. Дана таблица со структурой, которая описывает некоторый граф:
  103. Дана таблица Товар. На начало транзакций в таблице записей нет.
  104. Дана таблица Товар. На начало транзакций в таблице записей нет.
  105. Дана таблица Товар. На начало транзакций в таблице записей нет.
  106. Дана таблица Товар. На начало транзакций в таблице записей нет.
  107. Дана таблица Товар. На начало транзакций в таблице записей нет.
  108. Дана таблица Товар. На начало транзакций в таблице записей нет.
  109. Дана таблица Товар. На начало транзакций в таблице записей нет.
  110. Дана таблица Товар. На начало транзакций в таблице записей нет.
  111. Дана таблица Товар. На начало транзакций в таблице записей нет.
  112. Дана таблица Товар. На начало транзакций в таблице записей нет.
  113. Дано представление с вычислениями.
  114. Дано представление с вычислениями.
  115. Дано представление с вычислениями.
  116. Дано представление с вычислениями.
  117. Дано представление с группировкой.
  118. Дано представление с группировкой.
  119. Дано представление с группировкой.
  120. Дано представление с группировкой.
  121. Дано представление с данными из разных таблиц.
  122. Дано представление с данными из разных таблиц.
  123. Дано представление с данными из разных таблиц.
  124. Дано представление с данными из разных таблиц.
  125. Дано представление.
  126. Дано представление.
  127. Дано представление.
  128. Дано представление.
  129. Дано представление.
  130. Дано представление.
  131. Дано представление.
  132. Дано представление.
  133. Дано представление.
  134. Дано представление.
  135. Даны две таблицы. Определить в них первичные ключи.
  136. Даны две таблицы. Определить в них первичные ключи.
  137. Даны две таблицы. Определить в них первичные ключи.
  138. Даны две таблицы. Определить в них первичные ключи.
  139. Даны таблицы
  140. Даны таблицы
  141. Даны таблицы
  142. Даны таблицы
  143. Даны таблицы
  144. Даны таблицы
  145. Даны таблицы
  146. Даны таблицы
  147. Даны таблицы
  148. Даны таблицы
  149. Даны таблицы
  150. Даны таблицы
  151. Даны таблицы
  152. Даны таблицы
  153. Даны таблицы
  154. Даны таблицы
  155. Даны таблицы
  156. Даны таблицы
  157. Даны таблицы
  158. Даны таблицы
  159. Даны таблицы
  160. Даны таблицы
  161. Даны таблицы
  162. Даны таблицы
  163. Даны таблицы
  164. Даны таблицы
  165. Даны таблицы
  166. Даны таблицы
  167. Даны таблицы
  168. Даны таблицы
  169. Даны таблицы
  170. Даны таблицы
  171. Даны таблицы
  172. Даны таблицы
  173. Даны таблицы
  174. Даны таблицы
  175. Даны таблицы
  176. Даны таблицы
  177. Даны таблицы
  178. Даны таблицы
  179. Даны таблицы
  180. Даны таблицы
  181. Даны таблицы
  182. Даны таблицы
  183. Даны таблицы
  184. Даны таблицы
  185. Даны таблицы
  186. Даны таблицы
  187. Даны таблицы
  188. Даны таблицы Автор и Книга
  189. Даны таблицы Автор и Книга.
  190. Даны таблицы Автор и Книга.
  191. Даны таблицы Автор и Книга.
  192. Даны таблицы Автор и Книга.
  193. Даны таблицы Автор и Книга.
  194. Даны таблицы Автор и Книга. Между ними необходимо установить связь «один-ко-многим» (один автор — много книг).
  195. Даны таблицы Автор и Книга. Удалить сведения об авторах, издавших только одну книгу.
  196. Даны таблицы Блюдо и Компонент.
  197. Даны таблицы Блюдо и Компонент.
  198. Даны таблицы Блюдо и Компонент.
  199. Даны таблицы Блюдо и Компонент. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором блюде из таблицы Блюдо. При этом в таблице Компонент необходимо для всех компонентов удаленного блюда в качестве значения поля Название_блюда поставить значение NULL.
  200. Даны таблицы Блюдо и Компонент. Создать триггер, обрабатывающий вставку одной записи в таблицу Компонент. При этом в таблице Блюдо должна увеличиться стоимость соответствующего блюда.
  201. Даны таблицы Блюдо и Компонент. Создать триггер, обрабатывающий изменение стоимости одного компонента в таблице Компонент. При этом в таблице Блюдо должна измениться стоимость соответствующего блюда.
  202. Даны таблицы Город и Разговор.
  203. Даны таблицы Город и Разговор.
  204. Даны таблицы Город и Разговор.
  205. Даны таблицы Город и Разговор.
  206. Даны таблицы Город и Разговор.
  207. Даны таблицы Город и Разговор.
  208. Даны таблицы Город и Разговор. Между ними необходимо установить связь «один-ко-многим» (один город — много разговоров)
  209. Даны таблицы Город и Разговор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором городе из таблицы Город. При этом в таблице Разговор необходимо также удалить записи обо всех телефонных разговорах с удаленным городом.
  210. Даны таблицы Город и Разговор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором городе из таблицы Город. При этом в таблице Разговор необходимо для всех телефонных разговоров с удаленным городом в качестве значения поля Код_Города поставить значение 0.
  211. Даны таблицы Город и Разговор. Разработать триггер, обрабатывающий вставку одной записи в таблицу Разговор. При этом в таблице Город должна увеличиться общая продолжительность телефонной связи (всех разговоров) для соответствующего города.
  212. Даны таблицы Город и Разговор. Создать триггер, обрабатывающий изменение продолжительности одного телефонного разговора. При этом в таблице Город должна измениться величина общей продолжительности связи (всех разговоров) с соответствующим городом.
  213. Даны таблицы Город и Разговор. Удалить данные об абонентах, суммарная продолжительность телефонных разговоров которых оказалась меньше 10 мин.
  214. Даны таблицы Книга и Автор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором авторе из таблицы Автор. При этом необходимо запретить удаление, если упомянутый автор издавал свои книги в издательстве «Мир».
  215. Даны таблицы Книга и Автор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором авторе из таблицы Автор. При этом необходимо запретить удаление, если общий тираж упомянутого автора больше 1000 экземпляров.
  216. Даны таблицы Книга и Автор. Создать триггер, обрабатывающий вставку одной записи в таблицу Книга. При этом в таблице Автор должен увеличиться общий тираж изданий соответствующего автора.
  217. Даны таблицы Книга и Автор. Создать триггер, обрабатывающий изменение количества книг в одной записи таблицы Книга. При этом в таблице Автор необходимо пересчитать общий тираж книг соответствующего автора.
  218. Даны таблицы Рейс и Билет.
  219. Даны таблицы Рейс и Билет.
  220. Даны таблицы Рейс и Билет.
  221. Даны таблицы Рейс и Билет.
  222. Даны таблицы Рейс и Билет.
  223. Даны таблицы Рейс и Билет. Между ними необходимо установить связь «один-ко-многим» (один рейс — много мест).
  224. Даны таблицы Рейс и Билет. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление записи о некотором рейсе из таблицы Рейс. При этом в таблице Билет необходимо его номер заменить на номер запасного рейса 111 для билетов, проданных на удаленный рейс.
  225. Даны таблицы Рейс и Билет. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление записи о некотором рейсе из таблицы Рейс. При этом из таблицы Билет необходимо удалить записи обо всех билетах, проданных на этот рейс.
  226. Даны таблицы Рейс и Билет. Создать триггер, обрабатывающий вставку одной записи в таблицу Билет. При этом в таблице Рейс должно уменьшиться число свободных мест для соответствующего рейса.
  227. Даны таблицы Рейс и Билет. Создать триггер, обрабатывающий изменение в одной записи номера рейса в таблице Билет. При этом в таблице Рейс необходимо пересчитать количество свободных мест (увеличить для прежнего рейса и уменьшить для нового значения номера рейса).
  228. Для определения количества книг, изданных указанным автором в заданном издательстве, разработана процедура, в которой определены значения параметров по умолчанию:
  229. Для определения количества пассажиров, вылетевших в заданный город в течение конкретного месяца, разработана процедура:
  230. Для определения количества пассажиров, вылетевших в заданный город в течение конкретного месяца, разработана процедура, в которой указаны значения параметров по умолчанию:
  231. Для определения номера телефона (например, +74952539312) подойдет описание:
  232. Для определения общей калорийности блюд указанного типа, приготовленных заданным поваром, разработана процедура:
  233. Для определения общей калорийности блюд установленного типа, приготовленных заданным поваром, разработана процедура:
  234. Для определения общей стоимости книг, изданных заданным автором в заданном издательстве, разработана процедура, в которой указаны значения параметров по умолчанию:
  235. Для определения общей стоимости книг, изданных заданным автором в заданном издательстве, разработана процедура:
  236. Для определения общей стоимости разговоров в заданном регионе за конкретный месяц разработана процедура:
  237. Для определения общей стоимости разговоров некоторого абонента за определенный месяц разработана процедура, в которой указаны значения параметров по умолчанию:
  238. Для определения общей стоимости телефонных разговоров в заданном регионе за конкретный месяц разработана процедура, в которой указаны значения параметров по умолчанию:
  239. Для определения числа рейсов в указанный город за определенный месяц разработана процедура, в которой заданы значения параметров по умолчанию:
  240. Задание: Дана таблица Товар. На начало транзакций в таблице записей нет.
  241. Задание: Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  242. Какие из следующих описаний типов являются неправильными?
  243. Какие из следующих описаний типов являются неправильными?
  244. Какие из следующих описаний типов являются неправильными?
  245. Какие из следующих описаний типов являются правильными?
  246. Какие из следующих описаний типов являются правильными?
  247. Какие из следующих описаний типов являются правильными?
  248. Какие из следующих строк можно внести в поле, описанное как CHAR(4)?
  249. Какие из следующих строк можно внести в поле, описанное как VARCHAR(6), чтобы данные хранились без потерь?
  250. Какие из следующих строк можно внести в поле, описанное как VARCHAR(10)?
  251. Какие из следующих чисел можно внести в поле, описанное как DECIMAL(4,1)?
  252. Какие связи между объектами моделируются в реляционных базах данных?
  253. Какие функции перешли к среднему уровню обработки данных в трехуровневой архитектуре «клиент-сервер»?
  254. Каковы основные функции СУБД?
  255. Какое из следующих описаний типов является неправильным?
  256. Какое из следующих чисел можно внести в поле, описанное как DECIMAL(6,3)?
  257. Какое из следующих чисел можно внести в поле, описанное как NUMERIC(5,1)?
  258. Какое из следующих чисел можно внести в поле, описанное как NUMERIC(5,3)?
  259. На какое представление данных ориентирован язык SQL?
  260. На какую сумму были проданы билеты на рейс до Москвы в день вылета?
  261. Назовите отличительные черты реализации от стандарта языка.
  262. Назовите отличительные черты реляционных баз данных.
  263. Назовите преимущества архитектуры «клиент-сервер»?
  264. Найти абонентов, которые звонят в Москву, но ни разу не звонили в Самару в мае.
  265. Необходимо разработать функцию для вывода списка пассажиров, купивших билеты в определенный день на некоторый рейс. Функция создается командой:
  266. Необходимо разработать функцию для вывода списка пассажиров, купивших билеты в определенный день на некоторый рейс. Определите команду для ее вызова.
  267. Необходимо разработать функцию для получения списка абонентов, звонивших в указанный город в заданный месяц. Определите команду для ее вызова.
  268. Необходимо разработать функцию для получения списка абонентов, звонивших в указанный город в заданный месяц. Функция создается командой:
  269. Необходимо разработать функцию для получения списка городов указанного региона, телефонные тарифы которых не превосходят заданную цифру. Функция создается командой:
  270. Необходимо разработать функцию для получения списка книг заданной тематики, изданных тиражом менее указанного числа. Функция создается командой:
  271. Необходимо разработать функцию для получения списка книг заданной тематики, изданных тиражом менее указанного числа. Определите команду для ее вызова.
  272. Необходимо разработать функцию для получения списка книг издательства «Мир» и определить команду для ее вызова. Укажите правильный ответ.
  273. Необходимо разработать функцию для получения списка книг указанного издательства, изданных тиражом не менее определенного числа. Функция создается командой:
  274. Необходимо разработать функцию для получения списка компонент с калорийностью более 300 ккал. Определите команду для ее вызова. Укажите правильный ответ.
  275. Необходимо разработать функцию для получения списка компонент, входящих в указанное блюдо и имеющих калорийность ниже заданного значения. Функция создается командой:
  276. Необходимо разработать функцию для получения списка рейсов, вылетающих в указанный город в определенный день. Функция создается командой:
  277. Необходимо разработать функцию для получения списка рейсов, вылетающих в Москву и упорядоченных по дате. Определите команду для ее вызова. Укажите правильный ответ.
  278. Необходимо разработать функцию для получения списка тарифов на телефонные разговоры с городами Поволжья. Определите команду для ее вызова. Укажите правильный ответ.
  279. Определите команду для вызова функции, создаваемой следующей командой:
  280. Определите команду для вызова функции, создаваемой следующей командой:
  281. Определите команду для вызова функции, создаваемой следующей командой:
  282. Определите команду для вызова функции, создаваемой следующей командой:
  283. Определите роль клиента в двухуровневой архитектуре «клиент-сервер».
  284. Определите роль сервера в двухуровневой архитектуре «клиент-сервер».
  285. Определите роль языка SQL в создании информационных систем.
  286. Определите типы команд языка SQL.
  287. Определить город Поволжья, с которым дольше других ведутся телефонные разговоры.
  288. Определить издательства, выручившие от продажи книг наименьшую сумму.
  289. Определить количество и общую продолжительность разговоров для каждого региона, с городами которого осуществляли телефонную связь абоненты, чьи фамилии содержат слог «-ва-».
  290. Определить конечный пункт, в который вылетело наименьшее число пассажиров.
  291. Пусть в таблице Блюдо есть поле Номер_блюда, и его значения равны 2, 4, 6 ,8 ,10. Создан курсор для вывода списка десертов
  292. Пусть в таблице Книга представлены записи, где значения поля Код_Книги равны 1, 2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 и 10. Создан курсор для вывода списка книг издательства «Мир».
  293. Пусть в таблице Книга представлены записи, значения поля Код_Книги в которых равны 1, 3, 4, 7, 9 и 10. Создан курсор для вывода списка книг издательства «Мир».
  294. Пусть в таблице Рейс представлены записи, где значения поля Номер_рейса равны 1, 3 ,5 ,7 ,9. Создан курсор для печати списка рейсов до Москвы.
  295. Пусть в таблице Рейс представлены записи, значения поля Номер_рейса в которых равны 2, 4, 6, 8 ,9. Создан курсор для вывода списка рейсов до Москвы.
  296. Пусть дана таблица Автор с полями
  297. Пусть дана таблица Автор с полями
  298. Пусть дана таблица Автор с полями
  299. Пусть дана таблица Автор.
  300. Пусть дана таблица Автор.
  301. Пусть дана таблица Автор.
  302. Пусть дана таблица Блюдо с полями
  303. Пусть дана таблица Блюдо с полями
  304. Пусть дана таблица Блюдо с полями
  305. Пусть дана таблица Блюдо с полями
  306. Пусть дана таблица Блюдо.
  307. Пусть дана таблица Блюдо.
  308. Пусть дана таблица Город с полями
  309. Пусть дана таблица Город с полями
  310. Пусть дана таблица Город с полями
  311. Пусть дана таблица Город с полями
  312. Пусть дана таблица Город.
  313. Пусть дана таблица Город.
  314. Пусть дана таблица Город.
  315. Пусть дана таблица Книга с полями:
  316. Пусть дана таблица Рейс с полями
  317. Пусть дана таблица Рейс.
  318. Пусть дана таблица Рейс.
  319. Пусть дана таблица Рейс.
  320. Пусть идентификационный номер налогоплательщика (ИНН) состоит из 12 цифр, например: 872573021145. Укажите правильные определения.
  321. Пусть номер паспорта состоит из 6 цифр, например: 321285. Укажите правильный тип данных для его описания.
  322. Пусть номер страхового пенсионного свидетельства состоит из 11 цифр, разделенных знаками «-«, например: 063-840-013-82. Укажите правильный тип данных для его описания.
  323. Разработан курсор для вывода списка десертов.
  324. Разработан курсор для вывода списка десертов.
  325. Разработан курсор для вывода списка рейсов до Москвы.
  326. Разработан курсор для вывода списка телефонных тарифов городов Поволжья.
  327. Разработан курсор для печати списка книг.
  328. Разработан курсор для печати списка номеров рейсов.
  329. Разработан курсор для печати списка телефонных тарифов городов Поволжья.
  330. Разработан курсор для создания списка книг, вышедших в издательстве «Мир».
  331. Разработана процедура, возвращающая номера рейсов до заданного пункта.
  332. Разработана процедура, возвращающая список книг издательства «Мир».
  333. Разработана процедура, возвращающая список книг некоторого автора.
  334. Разработана процедура, возвращающая список названий десертов.
  335. Разработана процедура, возвращающая список номеров рейсов до Москвы.
  336. Разработана процедура, возвращающая список телефонных тарифов городов Поволжья.
  337. Разработана процедура, возвращающая тарифы городов указанного региона.
  338. Разработана функция, определяющая для указанного типа блюд среднюю стоимость.
  339. Разработана функция, определяющая по конечному пункту общее число пассажиров.
  340. Разработана функция, определяющая по фамилии абонента общую сумму оплаты разговоров.
  341. Разработана функция, определяющая по фамилии автора общий тираж книг.
  342. Создана процедура для увеличения на заданный % стоимости билетов до заданного пункта.
  343. Создана процедура для увеличения на заданный % стоимости блюд определенного типа.
  344. Создана процедура для увеличения на заданный % телефонных тарифов для городов определенного региона.
  345. Создана процедура для увеличения на заданный % цены книг заданного издательства.
  346. Создана таблица Автор. Изменить тип поля Телефон на символьный и заменить поле Возраст полем Дата_рождения.
  347. Создана таблица Город. Добавить поле Регион и изменить тип данных поля Тариф на денежный.
  348. Создана таблица Рейс. Изменить тип поля Стоимость_билета на денежный и добавить поле Число_мест.
  349. Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%; для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.
  350. Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.
  351. Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.
  352. Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%; для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.
  353. Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.
  354. Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 %.
  355. Создать базу данных basa1, причем для данных на диске D определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%; для журнала транзакций – на диске E один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб.
  356. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  357. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  358. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  359. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  360. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  361. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  362. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  363. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  364. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  365. Транзакции выполняют различные действия. Первой начинает работать транзакция пользователя UserA.
  366. Увеличить на 10% стоимость билетов, проданных в день вылета рейса.
  367. Увеличить на 50% цену книг, издаваемых самым большим тиражом.
  368. Уменьшить на 50% продолжительность телефонных разговоров тех абонентов, которые за последний месяц сделали более 1000 звонков.
  369. Что представляют собой базы данных?

Актуальная информация по учебным программам ИНТУИТ расположена по адресу: http://www.intuit.ru/.

Повышение квалификации

(программ: 450)

Профессиональная переподготовка

(программ: 14)

Лицензия на образовательную деятельность и приложение

Developer Project предлагает поддержку при сдаче экзаменов учебных курсов Интернет-университета информационных технологий INTUIT (ИНТУИТ). Мы ответили на экзаменационные вопросы 380 курсов INTUIT (ИНТУИТ), всего 110 300 вопросов, 154 221 ответов (некоторые вопросы курсов INTUIT имеют несколько правильных ответов). Текущий каталог ответов на экзаменационные вопросы курсов ИНТУИТ опубликован на сайте объединения Developer Project по адресу:

http://www.dp5.su/

Подтверждения правильности ответов можно найти в разделе

«ГАЛЕРЕЯ», верхнее меню, там опубликованы результаты сдачи экзаменов по 100 курсам (удостоверения, сертификаты и приложения с оценками).

Более 21 000 вопросов по 70 курсам и ответы на них, опубликованы на сайте

http://www.dp5.su/, и доступны зарегистрированным пользователям. По остальным экзаменационным вопросам курсов ИНТУИТ мы оказываем платные услуги (см. вкладку верхнего меню «ЗАКАЗАТЬ УСЛУГУ». Условия поддержки и помощи при сдаче экзаменов по учебным программам ИНТУИТ опубликованы по адресу: http://www.dp5.su/

Примечания:

— ошибки в текстах вопросов являются оригинальными (ошибки ИНТУИТ) и не исправляются нами по следующей причине — ответы легче подбирать на вопросы со специфическими ошибками в текстах;

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

http://www.intuit.ru/department/database/sql/class/free/status/

Лекция 1:
Введение в структурированный язык
запросов SQL 2

Лекция
6: Вычисления и подведение итогов в
запросах 40

Лекция
13: Курсоры: принципы работы 83

Лекция 1: Введение в структурированный язык запросов sql

Дается определение
структурированного языка запросов SQL.
Вводится понятие базы данных, реляционной
базы данных, СУБД. Определяется место
языка SQL в разработке информационных
систем, организованных на основе
технологии клиент-сервер. Приводится
классификация команд SQL: определение
структуры базы данных, манипулирование
данными, выборка данных, управление
данными, команды администрирования
данных и управления транзакциями. Дается
описание учебной базы данных.

Основные понятия

Всякая
профессиональная деятельность так или
иначе связана с информацией, с организацией
ее сбора, хранения, выборки. Можно
сказать, что неотъемлемой частью
повседневной жизни стали базы
данных
,
для поддержки которых требуется некоторый
организационный метод, или механизм.
Такой механизм называется системой
управления базами
данных
 ( СУБД ).
Итак, введем основные понятия.

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

СУБД (система
управления базами
данных
 )
– программное обеспечение, с помощью
которого пользователи могут определять,
создавать и поддерживать базу
данных
,
а также получать к ней контролируемый
доступ.

Системы
управления базами
данных
 существуют
уже много лет, многие из них обязаны
своим происхождением системам с
неструктурированными файлами на больших
ЭВМ. Наряду с общепринятыми современными
технологиями в области систем
управления базами
данных
 начинают
появляться новые направления, что
обусловлено требованиями растущего
бизнеса, все увеличивающимися объемами
корпоративных данных и, конечно же,
влиянием технологий Internet.

Реляционные базы данных

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

Реляционные
БД
 имеют
мощный теоретический фундамент,
основанный на математической теории
отношений. Появление теории реляционных
баз данных
 дало
толчок к разработке ряда языков запросов,
которые можно отнести к двум классам:

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

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

В
реляционной модели объекты реального
мира и взаимосвязи между ними представляются
с помощью совокупности связанных между
собой таблиц (отношений).

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

Каждая таблица БД
представляется как совокупность строк и столбцов,
где строки (записи)
соответствуют экземпляру объекта,
конкретному событию или явлению,
астолбцы (поля)
– атрибутам (признакам, характеристикам,
параметрам) объекта, события, явления.

В
каждой таблице БД
необходимо наличие первичного
ключа
 –
так именуют поле или набор полей,
однозначно идентифицирующий каждый
экземпляр объекта или запись.
Значение первичного
ключа
 в таблице БД
должно быть уникальным, т.е. в таблице не
допускается наличие двух и более записей
с одинаковыми значениями первичного
ключа
.
Он должен быть минимально достаточным,
а значит, не содержать полей, удаление
которых не отразится на его уникальности.

Реляционные
связи между таблицами баз данных

Связи между
объектами реального мира могут находить
свое отражение в структуре данных, а
могут и подразумеваться, т.е. присутствовать
на неформальном уровне.

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

Выделяют
три разновидности связи между таблицами базы
данных
:

  • «один–ко–многим»;

  • «один–к–одному»;

  • «многие–ко–многим».

Отношение
«один–ко–многим»

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

Отношение
«один–к–одному»

Отношение
«один–к–одному» имеет место, когда
одной записи в родительской таблице соответствует
одна запись в дочерней. Это отношение
встречается намного реже, чем отношение
«один–ко–многим». Его используют,
если не хотят, чтобы таблица БД
«распухала» от второстепенной
информации, однако для чтения связанной
информации в нескольких таблицах приходится
производить ряд операций чтения вместо
одной, когда данные хранятся в
одной таблице.

Отношение
«многие–ко–многим»

Отношение
«многие–ко–многим» применяется
в следующих случаях:

  • одной
    записи в родительской таблице соответствует
    более одной записи в дочерней;

  • одной
    записи в дочерней таблице соответствует
    более одной записи в родительской.

Всякую связь «многие–ко–многим»
в реляционной
базе данных
 необходимо
заменить на связь «один–ко–многим»
(одну или более) с помощью введения
дополнительных таблиц.

Стандарт
и реализация языка SQL

Рост
количества данных, необходимость их
хранения и обработки привели к тому,
что возникла потребность в
создании стандартного
языка
 баз
данных
,
который мог бы функционировать в
многочисленных компьютерных системах
различных видов. Действительно, с его
помощью пользователи могут манипулировать
данными независимо от того, работают
ли они на персональном компьютере,
сетевой рабочей станции или универсальной
ЭВМ.

Одним
из языков, появившихся в результате
разработки реляционной модели данных,
является язык SQL (Structured Query Language), который
в настоящее время получил очень широкое
распространение и фактически превратился
в стандартный
язык
 реляционных
баз данных
Стандарт на
язык SQL был выпущен Американским
национальным институтом стандартов
(ANSI) в 1986 г., а в 1987 г. Международная
организация стандартов (ISO) приняла его
в качестве международного.
Нынешний стандарт SQL
известен под названием SQL/92.

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

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

В
настоящее время язык SQL поддерживается
многими десятками СУБД различных
типов, разработанных для самых
разнообразных вычислительных платформ,
начиная от персональных компьютеров и
заканчивая мейнфреймами.

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

Рассматриваемый
язык SQL ориентирован на операции с
данными, представленными в виде логически
взаимосвязанных совокупностей таблиц -отношений.
Важнейшая особенность его структур –
ориентация на конечный результат
обработки данных, а не на процедуру этой
обработки. Язык SQL сам определяет, где
находятся данные, индексы и даже какие
наиболее эффективные последовательности
операций следует использовать для
получения результата, а потому указывать
эти детали в запросе к базе
данных
 не
требуется.

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

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Основы python для егэ
  • Основополагающих документов егэ
  • Основными документами регламентирующими проведение единого государственного экзамена являются
  • Основным сырьем для производства бумаги является древесная целлюлоза егэ ответы
  • Основным претендентом на пост главы области был действующий губернатор егэ