Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
24.01.2026
Размер:
891.97 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра Систем автоматизированного проектирования

отчет

по лабораторной работе №1

по дисциплине «Базы Данных»

Тема: Выполнение выборки из таблицы

Студентки гр. 3352

________________

Гареева К.Р.

________________

Жигунова О.М.

Преподаватель

________________

Горяинов С.В.

Санкт-Петербург

2025

Цель работы

Знакомство с командой SELECT и её опциями.

Ход выполнения

Упражнение 1 – извлечение данных из БД

Запрос 1:

SELECT title, title_no FROM title

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

Напишем дополнительный запрос, который выводит дату и количество обработанных записей:

SELECT

GETDATE() AS [Текущая_дата_и_время],

@@ROWCOUNT AS [Количество_обработанных_записей];

В результате получаем таблицу с данными (рис. 1).

Рисунок 1 - Результат выполнения 1-го запроса

Запрос 2:

SELECT title, title_no

FROM title WHERE title_no = 10;

Предложение WHERE - это составная часть SELECT, которая находит и выводит название книги с номером 10 (рис. 2).

Рисунок 2 - Результат выполнения 2-го запроса

Запрос 3:

SELECT member_no, fine_assessed

FROM loanhist

WHERE fine_assessed <= 9 and fine_assessed >= 8;

Запрос выводит номера читательских билетов тех людей, у которых штраф от 8 до 9 долларов (рис. 3).

Рисунок 3 - Результат выполнения 3-го запроса

Запрос 4:

SELECT author, title_no

FROM title

WHERE author like 'Charles Dickens' or author like 'Jane Austen';

Выводятся только те записи, где значение в поле author точно совпадает со строкой Charles Dickens или Jane Austen (рис. 4).

Рисунок 4 - Результат выполнения 4-го запроса

Запрос 5:

SELECT title, title_no

FROM title

WHERE title like '%Adventures%';

Выбирает те записи, где значение в поле author встречается слово Adventures в любой части строки (рис. 5).

Рисунок 5 - Результат выполнения 5-го запрос.

Запрос 6:

SELECT member_no, fine_assessed, fine_paid

FROM loanhist

WHERE fine_paid is NULL;

Возвращает строки, содержащие NULL для поля с fine_paid (неоплаченным штрафом) (рис. 6).

Рисунок 6 - Результат выполнения 6-го запроса

Упражнение 2 - управления результирующими наборами

  1. Опция DISTINCT

Запрос 7:

SELECT DISTINCT city, state FROM adult;

SELECT * FROM title ORDER BY title;

Показывает две таблицы: в первой название города и штата, где живет читатель; во второй - названия из столбца title, идущие по алфавиту с помощью ORDER BY. DISTINCT убирает дубликаты в указанном столбце (рис. 7).

Рисунок 7 - Результат выполнения 7-го запроса

  1. Вычисление значений, применение псевдонимов для вычисляемых полей

Запрос 8.1:

SELECT member_no, isbn, fine_assessed

FROM loanhist

WHERE fine_assessed IS NOT NULL;

Выводит таблицу с номером читателя, книгой и суммой штрафа, при этом отбирает строки, где штраф был начислен (рис. 8.1).

Рисунок 8.1 - Результат выполнения запроса 8.1

Запрос 8.2:

SELECT member_no, isbn, fine_assessed * 2 as double_file

FROM loanhist

WHERE fine_assessed IS NOT NULL;

Выводит таблицу с номером читателя, книгой и суммой штрафа, умноженной на 2, при этом отбирает строки, где штраф был начислен (рис. 8.2).

Рисунок 8.2 - Результат выполнения запроса 8.2

3) Форматирование результирующего набора с помощью функций обработки строк

Запрос 9.1:

SELECT CONCAT_WS(' ', firstname, middleinitial, lastname)

FROM member

WHERE lastname like '%Anderson%';

CONCAT_WS пропускает строки, в которых какой-то аргумент равен NULL, объединяя имя, инициал и фамилию с пробелом между ними. При этом стоит условие выбора тех читателей, фамилия которых содержит Anderson (рис. 9.1).

Рисунок 9.1 - Результат выполнения запроса 9.1

Запрос 9.2:

SELECT CONCAT_WS(' ', firstname, middleinitial, lastname) as email_name

FROM member

WHERE lastname like '%Anderson%';

Выводит такую же таблицу, как в предыдущем запросе, только название столбца теперь - email_name (рис. 9.2).

Рисунок 9.2 - Результат выполнения запроса 9.2

Запрос 9.3:

SELECT LOWER(CONCAT_WS(' ', firstname, middleinitial, SUBSTRING(lastname, 1, 2))) as email_name

FROM member

WHERE lastname like '%Anderson%';

Выводит эту же таблицу с именами в нижнем регистре. Функция SUBSTRING берет фамилию и выводит первые две буквы (рис. 9.3).

Рисунок 9.3 - Результат выполнения запроса 9.3

4) Обработка символьных значений

Запрос 10.1:

SELECT title, title_no FROM title;

SELECT CONCAT('The title is:', title, ', title number ', title_no) FROM title;

Первый запрос выводит два столбика из title, второй запрос записывает подряд текст и значения в одну колонку. Во время выполнения запроса может возникнуть ошибка из-за числового типа title_no (рис. 10.1).

Рисунок 10.1 - Результат выполнения запроса 10.1

Запрос 10.2:

SELECT title, title_no FROM title;

SELECT CONCAT('The title is:', title, ', title number ', title_no) FROM title;

SELECT CONCAT('The title is:', title, ', title number ', CONVERT(VARCHAR, title_no)) FROM title;

Ошибка исключается за счет VARCHAR (рис. 10.2).

Рисунок 10.2 - Результат выполнения запроса 10.2

Упражнение 3 - Использование системных функций.

Запрос 11:

sp_who

Показывает список текущих подключений и процессов (рис. 11).

Рисунок 11 - Результат выполнения запроса 11

Запрос 12:

SELECT @@spid;

Возвращает идентификатор серверного процесса (рис. 12).

Рисунок 12 - Результат выполнения запроса 12

Запрос 13:

EXEC sp_who 53;

sp_who принимает параметр 53 и возвращает информацию только об этом процессе (если он существует) (рис. 13).

Рисунок 13 - Результат выполнения запроса 13

Запрос 14:

SELECT @@version

Возвращает строку с полной информацией о версии SQL Server: выпуск, номер сборки и тд (рис. 14).

Рисунок 14 - Результат выполнения запроса 14

Запрос 15:

SELECT USER_NAME(), DB_NAME(), @@servername

user_name показывает имя пользователя, от которого выполняется текущая сессия; db_name возвращает имя текущей базы данных; @@servername - имя машины (рис. 15).

Рисунок 15 - Результат выполнения запроса 15

Запрос 16:

USE library

SELECT *

FROM information_schema.tables Where table_type = 'base table'

Use library переключает контекст на library; information_schema.tables хранит информацию обо всех таблицах базы данных; base table отбирает пользовательские таблицы (рис. 16).

Рисунок 16 - Результат выполнения запроса 16

Вывод

В ходе выполнения лабораторной работы были изучены основные возможности команды SELECT и его предложений (FROM, WHERE, ORDER BY, DISTINCT), а также использование логических операторов для фильтрации данных. Были освоены приёмы управления результирующими наборами, применение псевдонимов и вычисляемых полей, а также функции обработки строк — CONCAT, CONCAT_WS, LOWER, SUBSTRING и функция приведения типов CONVERT. Изучены системные функции и переменные SQL Server (GETDATE(), @@ROWCOUNT, @@SPID, @@VERSION, USER_NAME(), DB_NAME(), @@SERVERNAME) и системная процедура sp_who, предназначенная для анализа подключений. Кроме того, был рассмотрен системный представление information_schema.tables, позволяющее получать информацию о структуре базы данных.

Соседние файлы в папке БД_лабы(11 лаб, 5 семестр)