Скачать 0.68 Mb.
|
Тема 1. Введение в структурированный язык запросов SQL 1.1. Требуется разработать логическую структуру учебной базы данных, отражающей деятельность торговой фирмы. В базе данных должны учитываться процессы поставки товаров постоянными поставщиками и продажа товаров клиентам. 1.2. Студентам предлагается ответить на вопросы следующего теста: Вариант 1 Что представляют собой базы данных?
Назовите отличительные черты реализации от стандарта языка
Определите роль клиента в двухуровневой архитектуре «клиент-сервер»
Вариант 2 Каковы основные функции СУБД?
На какое представление данных ориентирован язык SQL?
Определите роль сервера в двухуровневой архитектуре клиент-сервер.
Вариант 3 Назовите отличительные черты реляционных баз данных
Определите роль языка SQL в создании информационных систем
Какие функции перешли к третьему уровню в трехуровневой архитектуре клиент-сервер?
Тема 2. Определение структуры данных Студентам предлагается ответить на вопросы следующего теста: Вариант 1 Для определения идентификационного номера налогоплательщика (ИНН) больше всего подойдет следующее описание:
Какое из следующих чисел можно внести в поле, описанное как Numeric(5,3)? 16.2 123.4 -145.3 1678.98 Какое из следующих описаний типов является неправильным?
Дан некоторый фрагмент SQL-кода: DECLARE &a CHAR(12) DECLARE @b DATETIME DECLARE &c INT SET @а = '12.2.09' SET @b='3.04.09' Укажите правильный оператор для вычисления количества дней между датами:
Вариант 2 Для определения номера страхового пенсионного свидетельства больше всего подойдет следующее описание:
Какое из следующих чисел можно внести в поле, описанное как NUMERIC(5,3)? 16.245 123.42 -145.34 1678.9 Какое из следующих описаний типов является неправильным?
Дан некоторый фрагмент SQL-кода: DECLARE &a CHAR(12) DECLARE &b DATETIME DECLARE @c INT SET @а = '12.2.04' SET @c = 6 Укажите правильный оператор для вычисления новой даты: SET @b = @a + @c SET @b - @a + CAST ( @c AS DATETIME) SET @b = CAST ( @a AS DATATIME ) + @c SET @b = CAST ( ( CAST ( @a AS INT) + @c ) AS DATETIME) Вариант 3 Для определения номера паспорта больше всего подойдет следующее описание:
Какое из следующих чисел можно внести в поле, описанное как DECIMAL(6,3)? 6716.22 -123.423 -45.3567 1678.98 Какое из следующих описаний типов является неправильным?
Дан некоторый фрагмент SQL-кода: DECLARE @a CHAR(12) DECLARE @b DATETIME DECLARE @c INT SET @b = '3.04.04' SET @c = 6 Укажите правильный оператор для вычисления новой даты:
Тема 3. Создание базы данных и проектирование таблиц с помощью SQL 1. С помощью мастера установки SQL Server 2005 требуется самостоятельно установить и настроить Server 2005, создать учетные записи для служб SQL Server, выбрать параметры сопоставления, создать пользовательскую консоль и панель задач. Более подробно ознакомиться с утилитами SQL Server Management Studio, SQL Server Configuration Manager, SQL Server Surface Area Configuration и утилитой командной строки sqlcmd. 2. Студентам предлагается ответить на вопросы тестов, аналогичных приведенному ниже варианту. 2.1. Пусть требуется создать базу данных basal, причем для данных на диске D: определить два файла с начальным размером по 100 Мб, но не более 500 Мб, с величиной прироста 10%, для журнала транзакций - на диске E: один файл с начальным размером 50 Мб, но не более 100 Мб, с величиной прироста 10 Мб. Вы используете следующий код: CREATE DATABASE basa1 ON PRIMARY (NAME = b1, FILENAME =’ D:\ User \ bl.mdf ‘, SIZE = 100MB, MAXSIZE = 500, FILEGROWTH = 10%), (NAME = b2, FILENAME = ‘ D:\ user \ b2.ndf ’, SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 10%) LOG ON (NAME = 11, FILENAME = ’ E;\ user \ 11.ldf ‘, SIZE = 50MB, MAXSIZE = 100, FILEGROWTH = 10) Выберите правильный ответ. база данных будет успешно создана неправильно указано физическое имя базы данных неправильно указано логическое имя базы данных неправильно определен размер базы данных 2.2. В базе данных в таблице Автор необходимо хранить сведения об авторах книг - фамилию, имя, отчество автора, а также его пол, возраст, телефон, номер расчетного счета. Для описания данных могут быть использованы следующие поля: Фамилия VARCHAR(50) NOT NULL, Имя VARCHAR(20) NULL, Отчество VARCHAR(20) NULL, Пол CHAR(3), Возраст INT NOT NULL, Телефон CHAR(9), Рас_счет CHAR(20) NOT NULL Фамилия VARCHAR(50) NOT NULL, Имя VARCHAR(20) NULL, Отчество VARCHAR(20) NULL, Пол VARCHAR(3), Возраст INT NOT NULL, Телефон CHAR(9), Рас_счет CHAR(20) NOT NULL Фамилия VARCHAR(50) NULL, Имя VARCHAR(20) NULL, Отчество VARCHAR(20) NULL, Пол CHAR(3), Возраст DATETIME NOT NULL, Телефон INT(9), Рас_счет INT(20) NOT NULL Фамилия VARCHAR(50) NULL, Имя VARCHAR(20) NULL, Отчество VARCHAR(20) NULL, Пол CHAR(3), Возраст INT NOT NULL, Телефон INT(9), Рас_счет DECIMAL(20,0) NOT NULL 2.3. В таблицу Автор необходимо добавить сведения об ИНН автора и заменить поле возраст на поле дата_рождения. Это можно сделать с помощью следующего кода: ALTER TABLE Автор ADD ИНН CHAR(30) ALTER TABLE Автор DROP COLUMN Возраст ALTER TABLE Автор ADD Дата_рождения DATETIME ALTER TABLE Автор ADD ИНН CHAR(30) NOT NULL ALTER TABLE Автор ALTER COLUMN Возраст DATETIME ALTER TABLE Автор ADD COLUMN ИНН CHAR(30) NOT NULL ALTER TABLE Автор DROP Возраст ALTER TABLE Автор ADD COLUMN Дата_рождения DATETIME ALTER TABLE Автор ADD COLUMN ИНН VARCHAR(30) NOT NULL ALTER TABLE Автор DROP Возраст ALTER TABLE Автор ADD Дата_рождения DATETIME Тема 4. Эффективное выполнение запросов для извлечения данных Студентам предлагается ответить на вопросы тестов, аналогичных приведенному ниже варианту. 1. Пусть дана таблица Автор с полями: Фамилия VARCHAR(5O), Пол CHAR(3), Дата_рождения DATETIME, Телефон CHAR(9), Количество_трудов INT, Город VARCHAR(15) Найти авторов, количество трудов которых превышает 10, но не больше 20, можно с помощью следующего кода: SELECT Фамилия, Количество_трудов FROM Автор WHERE Количество_трудов>10 And Количество_трудов<=20 SELECT Фамилия, Количество_трудов FROM Автор WHERE Количество_трудов Between 10 And 20 SELECT Фамилия, Количество_трудов FROM Автор WHERE Количество_трудов Between 11 And 20 SELECT Фамилия, Количество_трудов FROM Автор WHERE Количество_трудов >=11 Or Количество_трудов<= 19 2. Пусть дана таблица Автор. Требуется найти города, в которых живут молодые авторы (до 25 лет), издавшие более 10 книг. SELECT Город FROM Автор WHERE Дата„рождения>'1/1/1980' AND Количество_трудов>10 SELECT Город, Дата_рождения,Количество_трудов FROM Автор WHERE Дата_рождения>25 AND Количество_трудов>10 SELECT Город FROM Автор WHERE Дата_рождения > 25 OR Количество_трудов > 10 SELECT DISTINCT Город FROM Автор WHERE Дата_рождения > '1/1/1980' OR Количество_трудов>10 3. Пусть дана таблица Автор. Требуется определить авторов, фамилии которых начинаются с буквы «Б» или «Г» и содержат слог «ор». SELECT Фамилия FROM Автор WHERE (Фамилия Like "Б%" Or Фамилия Like "Г%") And Фамилия Like “%ор%” SELECT Фамилия FROM Автор WHERE Фамилия Like "Б%" And Фамилия Like "Г%" And Фамилия Like “%ор%” SELECT Фамилия FROM Автор WHERE (Фамилия Like "Б%" And Фамилия Like "Г_") And Фамилия Like “_ор_” SELECT Фамилия FROM Автор WHERE (Фамилия Like "Б _%" And Фамилия Like "Г%_") And Фамилия Like “%ор%” Тема5. Вычисления и подведение итогов в запросах. Построение нетривиальных запросов Студентам предлагается ответить на вопросы тестов, аналогичных приведенному ниже варианту. 5.1. Пусть созданы таблицы Автор и Книга: CREATE TABLE Автор (КодАвтора INT , Фамилия VARCHAR(50) NULL, Имя VARCHAR(50) NULL, Отчество VARCHAR(50) NULL, Пол VARCHAR(50) NOT NULL, Дата_рождения DATETIME, Телефон CHAR(9) ) CREATE TABLE Книга (Код__Книги INT, Название VARCHAR(50) NOT NULL, Цена MONEY, Тематика VARCHAR(50) NOT NULL, Издательство VARCHAR(50) NOT NULL, КодАвтора INT NOT NULL, Количество INT) Требуется рассчитать общую стоимость тиража и 5% налог с продаж для книг каждого автора.
SELECT Название, Стоимость = Цена*Количество, Налог = Цена * Количество*0.05 FROM Книга SELECT Название, @S = Цена * Количество, @р = Цена * Количество * 0.05 FROM Книга На какую сумму были проданы книги каждого автора? SELECT Автор.Фамилия, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга INNER JOIN Автор. ON Книга.КодАвтора=Автор.КодАвтора GROUP BY Автор.Фамилия ‘SELECT Автор.Фамилия, Стоимость= (Книга.Цена*Книга.Количество) FROM Книга INNER JOIN Автор ON Книга.КодАвтора=Автор.КодАвтора GROUP BY Автор.Фамилия SELECT Автор.Фамилия, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга INNER JOIN Автор ON Книга.КодАвтора=Автор.КодАвтора SELECT Автор.Фамилия, Sum(Цена* Количество) AS Стоимость FROM Книга INNER JOIN Автор ON Книга.КодАвтора=Автор.КодАвтора GROUP BY Автор.Фамилия 5.2. Необходимо определить число различных наименований проданных в издательстве «ACT» книг, количество книг каждого наименования и вырученную сумму. SELECT Count(Название) AS Кол_Название, Sum(Количество) AS Общее_Количество, Sum(Цена*Количество) AS Общ_Стоимость FROM Книга WHERE Издательство="ACT" SELECT Count(Название) AS Кол_Название, Sum(Количество) AS Общее_Количество, Sum(Цена*Количество) AS Общ_Стоимость FROM Книга GROUP BY Издательство="АСТ" SELECT Count(Название) AS Кол_Название, Sum(Количество) AS Общее_Количество, Sum(Цена*Количество) AS Общ_Стоимость FROM Книга GROUP BY Издательство WHERE Издательство="АСТ" SELECT Count(Название) AS Кол_Название, Sum(Количество) AS Общее_Количество, Sum(Цена*Количество) AS Общ_Стоимость FROM Книга GROUP BY Название HAVING Издательство = "ACT" Тема 6. Запросы модификации данных. Определение ограничений целостности Студентам предлагается ответить на вопросы тестов, аналогичных приведенному ниже варианту. 6.1. Пусть дана таблица Автор с полями: Фамилия VARCHAR(50), Поп CHAR(3), Дата_рождения DATETIME NOT NULL, Телефон CHAR( 9), Количество_трудов INT, Город VARCHAR(15) Укажите правильный оператор добавления записи.
VALUES ('Иванов','2/09/78', '12-3456')
INSERT INTO Автор VALUES ('Иванов','2/09/78', '132-34-56') Удалить информацию об авторах, не имеющих телефона, можно с помощью кода DELETE FROM Автор WHERE Телефон Is Null DELETE Телефон FROM Автор WHERE Телефон=0 DELETE Телефон FROM Автор WHERE Телефон= ' ' DELETE Телефон FROM Автор WHERE Телефон Is Null OR Телефон =’’ Увеличить на 50% цену книг, вышедших в издательстве «ACT», можно с помощью кода UPDATE Книга SET Цена=Цена*1.5 WHERE Издательстве = "ACT " UPDATE Книга SET Цена=Цена*0.5 WHERE Издательство = " ACT " UPDATE Книга SET Цена=Цена*50% WHERE Издательство ="ACT" UPDATE Книга Цена=Цена*1.5 WHERE Издательство = "ACT " 6.2. Пусть созданы таблицы Автор и Книга. 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) NO NULL, Издательство VARCHAR(50) NOT NULL, КодАвтора INT NOT NULL) Удалить сведения об авторах, чьи произведения не издаются, можно с помощью кода DELETE FROM Автор WHERE КодАвтора NOT IN (SELECT КодАвтора FROM Книга) DELETE FROM Автор WHERE КодАвтора IN {SELECT КодКниги FROM Книга) DELETE FROM Автор WHERE КодАвтора < > (SELECT КодАвтора FROM Книга) DELETE FROM Автор WHERE NOT EXISTS (SELECT КодАвтора FROM Книга) |