<<
>>

Лекция 5.8 Особенности реляционного доступа к данным

При работе с локальными СУБД на язык SQL накладывается ряд ограничений. Прежде всего, это относится к большинству бизнес-правилам (ограничениям), определяемым в группе DDL, не поддерживаются средства управления транзакциями и операторы языка DCL.

Поддержка этих возможностей обусловлена тем, что в распределенных БД все эти задачи реализуются средствами серверов доступа к БД.

Таким образом, при использовании локальных СУБД типа Paradox, dBase или FoxPro нам придется работать с «урезанными» возможностями языка SQL. Рассмотрим оставшиеся возможности.

Создание и модификация таблицы

Создание таблицы БД осуществляется оператором CREATE TABLE, имеющим следующий синтаксис:

CREATE TABLE имя таблицы (

Поле_1: тип данных или домен ограничения,

Поле_2: тип данных или домен ограничения)

Пусть требуется создать таблицу книги (Шифр книги – ISBN, Название – Title, Автор – Autor, Год издания – Year_Pub, Издательство – Publish, Количество страниц – Pages)

CREATE TABLE Books (

ISBN VARCHAR(14) PRIMARY KEY,

Title VARCHAR(120) ,

Autor VARCHAR(30) ,

Year_Pub VARCHAR(30) ,

Publish SMALLINT,

Pages SMALLINT)

Для модификации таблиц используется команда ALTER TABLE, которая позволяет: добавлять и удалять поля, переопределять первичные и внешние ключи и ограничения. Внутри команды может быть только одна модификация.

Пример добавление поля «соавтор» в таблицу «книги»:

ALTER TABLE Books

ADD SoAutor VARCHAR(30) NULL

Пример изменения типа данных поля Title:

ALTER TABLE Books

ALTER COLUMN Title VARCHAR(150)

Пример добавления внешнего ключа:

ALTER TABLE Books

ADD CONSTRAINT FK_ Publish

FOREIGN KEY (Publish)

REFERENCES Publishes

Удаление таблицы осуществляется командой DROP TABLE, при этом используется простой и понятный синтаксис:

DROP TABLE Имя_таблицы

Использование операторов манипулирования данными (DML)

Всего определено три оператора DML:

ü INSERT – вставка;

ü UPDATE - обновление;

ü DELETE - удаление.

Оператор INSERT имеет следующий синтаксис:

INSERT INTO имя_таблицы

VALUES (значение_1, …, значение_М)

Пример добавления значений в таблицу «Экземпляры» (Copies), в этом случае запрос на добавление будет выглядеть следующим образом:

INSERT INTO Copies

VALUES (231, ‘5-272-00278-4’, 0, true, NULL, NULL)

При необходимости добавления части полей или изменении порядка их следования можно использовать следующую форму записи:

INSERT INTO Экземпляры (Инв_номер, ISBN, Наличие )

VALUES (231, ‘5-272-00278-4’, true)

Список полей может иметь произвольный порядок, но список значений должен соответствовать порядку, в котором указаны поля, связанные с этими значениями.

Оператор UPDATE позволяет заменять существующие данные на новые и может быть применен как к одному так и к нескольким полям. Используется следующий синтаксис оператора UPDATE:

UPDATE имя_таблицы

SET имя_поля_1 = значение_1.

имя_поля_2 = значение_2.

иня_поля_М = значение_М [WHERE условие]

Пример изменения домашнего телефона читателя:

UPDATE Читатели

SET Тел_дом = '6-15-48'

WHERE Номер_ЧБ = 325

Данный оператор изменит значение номера телефона только для записи, соответствующей читателю, зарегистрированному в БД под номером 325.

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

DELETE FROM имя_таблицы [WHERE условие]

Удаляемые записи определяются в соответствии с условием, заданным с помощью необязательного предложения WHERE. При отсутствии предложения WHERE будут удалены все записи таблицы.

Пример удаления записи читателя с читательским билетом № 325:

DELETE FROM Читатели

WHERE Номер_ЧБ = 325

Язык запросов к данным DQL.

Оператор SELECT в наиболее общем виде имеет следующий формат:

SELECT [DISTINCT или ALL]

FROM

WHERE

GROUP BY

HAVING

UNION

ORDER BY

SELECT – основное ключевое слово, сообщающее СУБД, что эта команда – запрос на выборку.

Все запросы начинаются этим служебным словом с последующим пробелом. За ним может следовать способ выборки - с удалением дубликатов записей (DISTINCT) или без удаления (ALL, по умолчанию). Затем через запятую следует список полей включаемых в результат запроса. Может использоваться символ «*» (звездочка) означает, что в результирующий набор включаются все поля из исходных таблиц или из указанной таблицы, например Товары.* (из таблицы товары выбираются все поля). При необходимости поля таблиц можно переименовать, для этого используется оператор AS.

Раздел FROM – единственный обязательный раздел, используется для перечисления используемых в запросе таблиц, а также условий их соединений.

Раздел WHERE позволяет определить условия выборки

В разделе GROUP BY задается список полей группировки. При группировке записи таблиц разбиваются на группы. В группы собираются записи, имеющие одинаковые значения полей указанных в разделе GROUP BY. Данный раздел позволяет выполнять операции над группами с применением агрегатных функций (COUNT, SUM, AVG, MIN, MAX)

Раздел HAVING задает условия выборки при использовании группировки. Определяет условия накладываемые на каждую группу, т.е. если перед группированием необходимо выполнить выборку по условию, а уже затем группировать результат.

В разделе ORDER BY задается список полей сортировки.

Пример подсчета количества книг находящихся на руках у читателей с использованием GROUP BY и HAVING.

SELECT DISTINCT Читатели.ФИО, Count(*) AS (Количество_книг)

FROM Читатели INNER JOIN Экземпляры ON Читатели.Номер_ЧБ = Экземпляры.Номер_ЧБ

GROUP BY Читатели.ФИО, Читатели.Номер_ЧБ, Экземпляры.Наличие

HAVING Экземпляры.Наличие = No;

Вопросы для самоконтроля

1. Что представляют собой операторы манипулирования данными?

2. Как указываются условия в модифицирующих запросах?

3. Какой синтаксис имеет оператор INSERT?

4. Какой синтаксис имеет оператор UPDATE?

5. Какой синтаксис имеет оператор DELETE?

6. Назовите формат использования оператора SELECT в общем виде.

7. Как из результатов запроса исключить повторяющиеся записи?

8. Как накладываются условия на отбираемые записи?

9. Как выполняется сортировка?

<< | >>
Источник: РазработкА и эксплуатациЯ автоматизированных информационных систем. ЛЕКЦИИ.

Еще по теме Лекция 5.8 Особенности реляционного доступа к данным:

  1. 99. необходимость планирования МК, его механизм.
  2. Понятие и виды объектов гражданских правоотношений
  3. Трудности образования множественного числа имен существительных