- •Семей 2013г
- •Выборка данных из базы данных с использованием языка sql
- •Порядок выполнения работы
- •Оператор select
- •Лабораторные задания.
- •Создание таблицы
- •Определение столбца
- •Изменение таблиц
- •Создание представлений
- •Операторы, связанные с курсором
- •Заключение Создания базы на sql по стандарту создание таблиц с первичными и вторичными ключами и создание таблиц.
Выборка данных из базы данных с использованием языка 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 и др.