Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НАЗВАНИЕ ОТЧЕТ МБМ.docx
Скачиваний:
28
Добавлен:
06.03.2016
Размер:
45.42 Кб
Скачать

Выборка данных из базы данных с использованием языка sql

Цель работы: изучить принципы работы с базой данных в архитектуре клиент-сервер, изучить спецификации запроса языка баз данных SQL, получить практические навыки составления и содержательной интерпретации запросов выборки данных (операторов SELECT), а также их выполнения на SQL-сервере с использованием клиентских утилит.

Порядок выполнения работы

1. Изучить структуру и элементы SQL-запроса выборки, в том числе разделы FROM, WHERE, GROUP BY, HAVING, ORDER BY, а также предикаты условия поиска и агрегатные функции.

2. Изучить операции реляционной алгебры (соединение, пересечение, объединение, разность и др.).

3. Изучить утилиту ISQL/w, входящую в набор клиентских утилит для СУБД SQL Server.

4. Изучить состав базы данных книготорговой компании (база данных pubs), структуру и семантику ее таблиц.

5. Получить у преподавателя номер варианта задания.

6. В соответствии с вариантом задания типа А произвести содержательную интерпретацию заданных SQL-запросов, выполнить их на SQL-сервере с использованием клиентских утилит ISQL/w или SQL Enterprise Manager (SQL-EM), проинтерпретировать результаты выполнения запросов.

7. В соответствии с вариантом задания В составить SQL-запросы по их заданному содержательному описанию, выполнить SQL-запросы на SQL-сервере с использованием клиентских утилит ISQL/w или SQL-EM, проинтерпретировать результаты выполнения запросов.

Оператор select

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

<оператор SELECT>::=

SELECT [ALL | DISTINCT] <список выборки>

<табличное выражение>

ORDER BY <спецификация сортировки>]

<табличное выражение>::=

FROM <имя таблицы>[{,<имя таблицы>}…]

[WHERE <условие поиска>]

[GROUP BY <имя столбца> [{,<имя столбца>}…]

[HAVING <условие поиска>]

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

Если задано ключевое слово DISTINCT, то из результирующей таблицы удаляются повторяющиеся строки. Список выборки определяет, какие столбцы должны быть возвращены в результирующую таблицу. Данный список представляет список арифметических выражений над значениями столбцов таблиц из раздела FROM и констант. В простейшем случае он может быть, например, списком имен некоторых столбцов таблиц из раздела FROM. В случае, если вместо списка выборки стоит звездочка (*), то выбираются все столбцы таблиц из раздела FROM.

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

Раздел WHERE служит своего рода фильтром при отборе данных.

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

Результатом выполнения раздела HAVING является сгруппированная таблица, содержащая только те группы строк, для которых результат вычисления условия поиска является истинным. Условие поиска раздела HAVING задает условие на целую группу, а не на индивидуальные строки, поэтому в данном случае прямо можно использовать только столбцы, указанные в качестве столбцов группирования в разделе GROUP BY.

Раздел ORDER BY позволяет установить желаемый порядок просмотра результирующей таблицы. Спецификация сортировки имеет следующий синтаксис:

<спецификация сортировки>::= {<целое без знака> | <имя столбца>} [ASC | DESC]

Как видно, фактически задается список столбцов, и для каждого столбца указывается порядок просмотра строк результирующей таблицы в зависимости от значений этого столбца (ASC - по возрастанию (умолчание), DESC - по убыванию). Указывать сортируемый столбец можно по имени или по порядковому номеру в результирующей таблице.

База данных книготорговой компании (база данных pubs) включает три таблицы, определяющие сущности: таблица authors определяет авторов, таблица publishers - издателей, а таблица titles - сами книги. Четвертая таблица titleauthor задает отношение между таблицами titles и authors. Она показывает, какие авторы написали какие книги. Связь между таблицами titiles и publishers определяется столбцом pub_id в данных таблицах.

Ниже представлены структуры используемых таблиц.

Структура таблицы authors. На табл.1

Имя столбца

Тип данных

Размерность

Возможность значений null

Содержательное описание

au_id

varchar

11

Нет

Идентификатор автора

au_lname

varchar

40

Нет

Фамилия автора

au_fname

varchar

20

Нет

Имя автора

phone

char

12

Нет

Номер телефона

address

varchar

40

Да

Адрес (улица, дом, квартира)

city

varchar

20

Да

Город проживания

state

char

2

Да

Штат проживания

zip

char

5

Да

Энергичность

contract

bit

1

Нет

Наличие контракта

Структура таблицы publishers. На табл.2

Имя столбца

Тип данных

Размерность

Возможность значений null

Содержательное описание

pub_id

char

4

Нет

Идентификатор издательства (издателя)

pub_name

varchar

40

Да

Название издательства (имя издателя)

city

varchar

20

Да

Город

state

char

2

Да

Штат

country

varchar

30

Да

Страна

Структура таблицы titles. На табл 3

Имя столбца

Тип данных

Размерность

Возможность значений null

Содержательное описание

title_id

varchar

6

Нет

Идентификатор книги

title

varchar

80

Нет

Название книги

type

char

12

Нет

Тип книги

pub_id

char

4

Да

Идентификатор издательства

price

money

8

Да

Цена

advance

money

8

Да

Аванс (стоимость предварительной продажи)

royalty

int

4

Да

Гонорар

ytd_sales

int

4

Да

Число книг, проданных в текущем году

notes

varchar

200

Да

Замечания

pubdate

datetime

8

Нет

Дата опубликования

Структура таблицы titleauthor. На табл. 4

Имя столбца

Тип данных

Размерность

Возможность значений null

Содержательное описание

au_id

varchar

11

Нет

Идентификатор автора книги

title_id

varchar

6

Нет

Идентификатор книги

au_ord

tinyint

1

Да

Порядок автора в названии книги

royaltyper

int

4

Да

Авторский гонорар

 Описание DCL и CLL команд

COMMIT

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

ROLLBACK

Применяется для отката транзакции и отмены изменений в базе данных

SET TRANSACTION

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

Data Control Language (DCL)

Операторы Data Control Language, иногда называемые операторами Access Control Language, применяются для осуществления административных функций, присваивающих или отменяющих право (привилегию) использовать базу данных, таблицы в базе данных, а также выполнять те или иные операторы SQL. Операторы DCL представлены в табл.5

Таблица 5

Оператор

Описание

GRANT

Применяется для присвоения привилегии

REVOKE

Применяется для отмены привилегии

Cursor Control Language (CCL)

Операторы Cursor Control Language используются для определения курсора, подготовки SQL-предложений для выполнения, а также для некоторых других операторов. Операторы CCL представлены в табл. 6.

Таблица 6

Оператор

Описание

DECLARE CURSOR

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

EXPLAIN

Применяется для описания плана запроса. Этот оператор представляет собой расширение SQL для Microsoft SQL Server 7.0. Он не обязан выполняться в других СУБД. Например, в случае Oracle следует использовать оператор EXPLAIN PLAN

OPEN CURSOR

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

FETCH

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

CLOSE CURSOR

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

PREPARE

Применяется для подготовки оператора SQL для выполнения

EXECUTE

Применяется для выполнения оператора SQL

DESCRIBE

Применяется для описания подготовленного запроса

Все операторы SQL имеют вид, показанный на рис. 2.

Каждый оператор SQL начинается с глагола, представляющего собой ключевое слово, определяющее, что именно делает этот оператор (SELECT, INSERT, DELETE...). В операторе содержатся также предложения, содержащие сведения о том, над какими данными производятся операции. Каждое предложение начинается с ключевого слова, такого как FROM, WHERE и др.