Эксперт по сдаче вступительных испытаний в ВУЗах
Лабораторная работа 3. Инструкции языка Transact-SQL
Цель работы:
Научиться тому, как, используя инструкции языка Transact- SQL, создавать базу данных, таблицы в базе данных, получать доступ к данным таблицы и изменять их; получить практические навыки содержательной интерпретации и составления запросов выборки данных, а также их выполнения на SQL-сервере с использованием среды SQL Server Management Studio.
Задание 1. Создание базы данных.
- программной группе Microsoft SQL Server 2008 выберите пункт Среда Microsoft SQL Server Management Studio и выполните соединение с сервером (см. задание 2 лабораторной работы 1) .
- Обозревателе объектов перейдите к папке Базы данных. Убедитесь, что база данных
DB_FamilyIO, где FamilyIO – ваши фамилия и инициалы, отсутствует в списке баз. Если такая база имеется, щелкните ее правой кнопкой мыши и выберите в контекстном меню
Удалить.
Откройте окно редактора запросов, нажав на панели инструментов Management Studio
кнопку Создать запрос.
В окне редактора запросов введите, но не выполняйте, код, подобный следующему
1:
CREATE DATABASE DB_ FamilyIO
GO
Здесь следует указать в имени БД свою фамилию и инициалы.
С помощью указателя выделите слова CREATE DATABASE и нажмите клавишу F1. Должен открыться раздел CREATE DATABASE электронной документации по SQL Server. Таким же способом можно найти полный синтаксис других инструкций, используемых в лабораторном цикле.
Укажите в отчете количество аргументов и варианты использования инструкции
CREATE DATABASE.
В редакторе запросов нажмите кнопку Выполнить на панели инструментов Management Studio или клавишу F5, чтобы выполнить инструкцию и создать базу данных с заданным именем.
При создании базы данных SQL Server создает копию базы данных model и присваивает ей указанное имя базы данных. Эта операция обычно занимается несколько секунд, если только с помощью дополнительного параметра не указан большой исходный размер базы данных.
Обновите список баз данных в обозревателе объектов и убедитесь, что база данных создана.
Сравните объекты созданной БД с таковыми для базы данных model. Приведите в отчете свидетельства того, что созданная база данных представляет копию БД model.
Задание 2. Создание таблицы в базе данных DB_FamileIO.
В окне редактора запросов введите и выполните следующий код, чтобы изменить соединение на созданную базу данных.
USE DB_FamilyIO
GO
Проверьте – в окне «Доступные базы данных» должна быть представлена модифицируемая БД.
Команда USE должна быть выполнена перед созданием таблицы, чтобы изменить контекст базы данных. Иначе вы создадите таблицу в базе данных, к которой вы ранее подключились. Вероятно, это будет база данных по умолчанию. Если не была выбрана другая база данных по умолчанию, ею будет база данных master. Не следует создавать объекты в базе данных master.
В окне редактора запросов введите и выполните код инструкции CREATE TABLE, приведенный в разделе 3.3, чтобы создать таблицу Products со столбцами ProductID, ProductName и Price.
Раскройте в обозревателе объектов папку Таблицы созданной БД и убедитесь, что таблица и указанные столбцы созданы.
Обратите внимание на имя таблицы в обозревателе: ему предшествует имя схемы, в нашем случае — dbo. Схема — объект базы данных, к которому принадлежит таблица. Если вы являетесь администратором, схемой по умолчанию будет схема dbo. Схема dbo означает владельца базы данных (database owner). Имя схемы может быть задано в инструкции CREATE TABLE.
Задание 3. Изменение таблицы Products.
В окне редактора запросов введите и выполните код инструкции ALTER TABLE, приведенный в разделе 3.3, чтобы добавить в таблицу Products столбец
ProductDescription.
Убедитесь, что столбец появился в окне обозревателя объектов. Приведите в отчете соответствующую копию экрана.
Задание 4. Вставка данных в таблицу Products. Внесем в таблицу данные о четырех продуктах:
| ProductID |
ProductName |
Price |
ProductDescription |
| 1 |
Clamp |
12.48 |
Workbench clamp |
| 50 |
Screwdriver |
3.17 |
Flat head |
| 75 |
Tire Bar |
|
Tool for changing tires. |
| 3000 |
3mm Bracket |
.52 |
|
Для вставки строки данных в таблицу применяется инструкция INSERT.
В окне редактора запросов введите и выполните код инструкции INSERT с указанием всех полей и их значений, как он приведен в разделе 3.4:
INSERT Products
(ProductID, ProductName, Price, ProductDescription) VALUES (1, ‘Clamp’, 12.48, ‘Workbench clamp’)
Затем введите вторую строку с помощью следующей инструкции, в которой показано, как можно изменить порядок, в котором приведены параметры, изменив расположение ProductID и ProductName одновременно как в списке полей, так и в списке значений:
— Изменение порядка столбцов
INSERT dbo.Products
(ProductName, ProductID, Price, ProductDescription) VALUES (‘Screwdriver’, 50, 3.17, ‘Flat head’)
Здесь два дефиса в начале строки означают, что строка является примечанием. Ее текст не будет обрабатываться компилятором. Указано имя схемы (dbo). Имя схемы указывать не обязательно, пока доступ и изменение таблицы осуществляются с помощью схемы по умолчанию.
Третью строку введите инструкцией
— Пропуская список столбцов, но соблюдая порядок значений
INSERT dbo.Products
VALUES (75, ‘Tire Bar’, NULL, ‘Tool for changing tires.’)
Эта инструкция показывает, что имена столбцов перечислять не обязательно, если значения перечислены точно в том порядке, в каком столбцы присутствуют в таблице . Такой синтаксис является общепринятым, но его не рекомендуется использовать, так как он усложняет понимание кода. Для столбца Price указано значение NULL, так как цена для этого продукта еще не известна.
Последнюю, четвертую строку введите инструкцией
INSERT Products (ProductID, ProductName, Price)
VALUES (3000, ‘3mm Bracket’, .52)
В этой инструкции опущены имя и значение столбца ProductDescription, поскольку в столбце ProductDescription разрешены значения NULL и предполагается, что значение для столбца на момент ввода данных не известно.
Приведите в отчете копии экранов.
Задание 5. Обновление данных в таблице Products.
- окне редактора запросов введите и выполните код инструкции UPDATE, приведенный
- разделе 3.4, чтобы изменить значение ProductName второго продукта со значения
Screwdriver на значение Flat Head Screwdriver.
Приведите в отчете соответствующую копию экрана.
Задание 6 . Чтение данных из таблицы Products.
Чтобы прочитать данные из таблицы Products, введите и выполните следующие инструкции.
а) Указываем имена всех столбцов:
— Основной синтаксис чтения данных из одиночной таблицы
SELECT ProductID, ProductName, Price, ProductDescription
FROM dbo.Products
б) Чтобы выбрать все столбцы в таблице, можно использовать звездочку. Такой способ часто используется в нерегламентированных запросах. В коде приложения следует предоставлять список столбцов, чтобы инструкция возвращала нужные столбцы, даже если какой-то столбец будет добавлен в таблицу позднее.
- Возвращение всех столбцов в таблице
- Не указана схема, используемая по умолчанию, dbo SELECT * FROM Products
GO
в) Если нет необходимости возвращать определенные столбцы, их можно опустить. Столбцы возвращаются в том порядке, в котором они перечислены.
— Возвращение только двух столбцов
SELECT ProductName, Price FROM dbo.Products
GO
г) Чтобы ограничить количество строк, возвращаемых пользователю, используйте предложение WHERE.
— Возвращение только записей, где идентификатор продукта меньше 60 SELECT ProductID, ProductName, Price, ProductDescription
FROM dbo.Products WHERE ProductID < 60
GO
д) Можно работать со значениями столбцов, по мере того как столбцы возвращаются. В следующем примере выполняется математическая операция над столбцом Price. Столбцы, изменяемые подобным образом, не имеют имени, если только имя не указывается с использованием ключевого слова AS.
- Возвращает имя продукта, цену и цену, включающую 7% налога
- Представляет имя CustomerPays для вычисляемого столбца
SELECT ProductName, Price, Price * 1.07 AS CustomerPays FROM dbo.Products
GO
Приведите в отчете копии экранов с результатами выполнения всех инструкций.
Задание 7 . Чтение данных из связанных таблиц базы pubs.
Допустим, что, желая получить информацию об изданиях в виде «Имя издания, Имя издательства», пользователь сформировал неправильный запрос, в котором не указал условие связи таблиц titles и publishers:
SELECT t.title AS ‘Издание’,p.pub_name AS ‘Издательство’ FROM titles t, publishers p
Вы получите так называемое декартово произведение содержимого таблиц titles и publishers – 144 строки (все 18 значений из таблицы titles, с каждым из которых указано каждое из всех 8 значений таблицы publishers).
Доработанный запрос, в котором условие связи таблиц указано, будет иметь вид
SELECT t.title AS ‘Издание’,p.pub_name AS ‘Издательство’ FROM titles t, publishers p
WHERE t.pub_id = p.pub_id
Выполните этот запрос. Он вернет правильный результат. Иногда про такие запросы говорят, что мы подтянули имя издательства по связи из таблицы publishers.
Задание 8 . Чтение данных из связанных таблиц titles, publishers, authors, titleauthor базы pubs.
Самостоятельно доработайте предыдущий запрос так, чтобы он выдавал дополнительно информацию об авторах издания. Связи таблиц titles, publishers, authors, titleauthor описаны в кратких теоретических сведениях к лабораторной работе №2.
Задание 9. Получите у преподавателя номер варианта задания и в соответствии с вариантом задания в приложении 3:
А) Произведите содержательную интерпретацию заданных SQL-запросов, выполните их в окне редактора запросов и проинтерпретируйте результаты выполнения запросов.
Б) Составьте SQL-запросы по их заданному содержательному описанию, выполните SQL-запросы в окне редактора запросов, проинтерпретируйте результаты выполнения запросов.
Структуры таблиц publishers, title, authors и titleauthor базы pubs, используемых в этом задании, описаны в лабораторной работе №2.
Контрольные вопросы:
- Назовите операторы SQL, относящиеся к группе операторов манипулирования данными.
- Какие объекты могут быть созданы средствами языка SQL?
- Как будет выглядеть формат оператора INSERT при вводе в таблицу значений всех колонок в том порядке, в котором они заданы при описании таблицы?
- Как будет выглядеть оператор команды INSERT при вводе в таблицу значений не всех колонок?
- Что произойдет, если в операторе DELETE не будет задана фраза WHERE?
- Как можно удалить заданную строку в таблице? Напишите формат соответствующего оператора.
- Что происходит при удалении таблицы с объектами, связанными с этой таблицей?
- Какие объекты включаются в предложение FROM оператора SELECT?
- Приведите примеры использования предложения WHERE в операторах языка SQL.
- Сравните использование в запросах ключевых слов IN и EXISTS.
- Как можно коротко указать, что в ответ должны быть выведены значения всех колонок таблицы?
- Какие имена будут иметь вычисляемые колонки? Как можно изменить имя выводимой колонки?
- Что означает параметр DISTINCT в предложении SELECT?
- В каких случаях надо использовать предложение GROUP BY в команде SELECT?
- Как связано между собой использование предложения GROUP BY и агрегирующих функций?
- Могут ли в команде SELECT одновременно использоваться предложения WHERE и HAVING?
- Какие ограничения накладываются на операторы SELECT, результаты которых объединяются?
Ссылка на первоисточник:
https://www.birsk.ru