ЛАБОРАТОРНАЯ РАБОТА № 14
Тема: Работа с SQL-запросами
Цель: Научиться создавать SQL-запросы
Оборудование и/или программное обеспечение: ПК, Delphi
Теоретическая часть
В отличие от реляционной алгебры, где были представлены только операции запросов к БД, SQL является полным языком, в нем присутствуют не только операции запросов, но и операторы, соответствующие Data Definition Language (DDL) — языку описания данных. Кроме того, язык содержит операторы, предназначенные для управления (администрирования ) БД.
Таблица 5.2. Операторы манипулирования данными Data Manipulation Lanquaqe (DML) | ||
Оператор | Смысл | Действие |
DELETE | Удалить строки | Удаляет одну или несколько строк, соответствующих условиям фильтрации, из базовой таблицы. Применение оператора согласуется с принципами поддержки целостности, поэтому этот оператор не всегда может быть выполнен корректно, даже если синтаксически он записан правильно |
INSERT | Вставить строку | Вставляет одну строку в базовую таблицу. Допустимы модификации оператора, при которых сразу несколько строк могут быть перенесены из одной таблицы или запроса в базовую таблицу |
UPDATE | Обновить строку | Обновляет значения одного или нескольких столбцов в одной или нескольких строках, соответствующих условиям фильтрации |
Таблица 5.3. Язык запросов Data Query Lanquaqe (DQL) | ||||
Оператор | Смысл | Действие | ||
SELECT | Выбрать строки | Оператор, заменяющий все операторы реляционной алгебры и позволяющий сформировать результирующее отношение, соответствующее запросу | ||
Таблица 5.5. Средства администрирования данных | ||
Оператор | Смысл | Действие |
ALTER DATABASE | Изменить БД | Изменить набор основных объектов в базе данных, ограничений, касающихся всей базы данных |
ALTER DBAREA | Изменить область хранения БД | Изменить ранее созданную область хранения |
ALTER PASSWORD | Изменить пароль | Изменить пароль для всей базы данных |
CREATE DATABASE | Создать БД | Создать новую базу данных, определив основные параметры для нее |
CREATE DBAREA | Создать область хранения | Создать новую область хранения и сделать ее доступной для размещения данных |
DROP DATABASE | Удалить БД | Удалить существующую базу данных (только в том случае, когда вы имеете право выполнить это действие) |
DROP DBAREA | Удалить область хранения БД | Удалить существующую область хранения (если в ней на настоящий момент не располагаются активные данные) |
GRANT | Предоставить права | Предоставить права доступа на ряд действий над некоторым объектом БД |
REVOKE | Лишить прав | Лишить прав доступа к некоторому объекту или некоторым действиям над объектом |
Практическая часть
1 Создайте запрос на добавление записи
2 Создайте запрос на удаление записи
3 Создайте запрос на редактирование записи
4 Создайте запрос на сохранение записи
Вопросы для контроля
1. Нужно ли разграничивать права доступа к базе данныз и для чего?
2. Какой оператор выполняет разграничение прав доступа?
3. Напишите код создания учетной записи.
4. Напишите код для просмотра данных.
5. Напишите код лишения каких-либо прав доступа.
Литература
1. Фаронов В.В. Программирование на языке высокого уровня: Учебник для вузов. -СПб.: Питер, 2003.
2. Бобровский С.И. Delphi 7. Учебный курс. - СПб.: Питер, 2005.
3. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Visual Basic, C++ Builder, Delphi. - СПб.: БХВ - Петербург, 2005.
ЛАБОРАТОРНАЯ РАБОТА № 15
Тема: Создание SQL-запросов
Цель: научиться работать с SQL-запросами
Оборудование и/или программное обеспечение:ПК, Delphi
Теоретическая часть
Теперь рассмотрим форму представления условия отбора, задаваемого после ключевого слова WHERE. Это условие определяет критерий, по которому отбираются записи. Оператор Select отбирает только те записи, в которых заданное условие истинно. Условие может включать имена полей (кроме вычисляемых полей), константы, логические выражения, содержащие арифметические операции, логические операции and, or, not и операции отношения:
— | равно |
> | больше |
>= | больше или равно |
< | меньше |
<= | меньше или равно |
<> | не равно |
Like | наличие заданной последовательности символов |
between ... and | диапазон значений |
in | соответствие элементу множества |
Первые шесть операций очевидны. Например, оператор
SELECT Fam FROM Pers WHERE Sex='jK' and Year_b > 1960
отберет записи, относящиеся к женщинам, родившимся после 1960 года.
Операция Like имеет синтаксис:
<поле> LIKE ‘ «последовательность символов»’
Эта операция применима к полям типа строк и возвращает true, если в строке встретился фрагмент, заданный в операции как последовательность символов>. Заданным символам может предшествовать и их может завершать символ процента «%», который означает — любое количество любых символов. Если символ процента не указан, то заданная последовательность символов должна соответствовать только целому слову. Например, условие
Fam LIKE 'А%'
означает, что будут отобраны все записи, начинающиеся с заглавной русской буквы «А» (операция Like различает строчные и прописные символы). Условию
Fam LIKE 'Иванов%1
будут удовлетворять фамилии «Иванов» и «Иванова», а условию Fam LIKE '%ван%'
кроме этих фамилий будет удовлетворять, например, фамилия « Иванников ».
Операция between ... and имеет синтаксис:
<поле> between <значение> and <значение>
и задает для указанного поля диапазон отбираемых значений. Например, оператор
SELECT Fam, Year_b FROM Pers
WHERE Year_b BETWEEN 1960 AND 1970
отберет записи сотрудников в заданном диапазоне возраста.
Операция In имеет синтаксис:
<поле> in (<множество>)
и отбирает записи, в которых значение указанного поля является одпим из элементов указанного множества. Например, оператор
SELECT Fam, Year_b FROM Pers
WHERE Fam IN(1 Иванов 1, ■Петров ', 'Сидоров•)
отберет записи сотрудников с заданными фамилиями, а оператор
SELECT Fam, Year_b FROM pers WHERE Year_b IN (1950,I960)
отберет записи сотрудников указанных годов рождения.
Элемент оператора Select, начинающийся с ключевых слов ORDER BY, определяет упорядочивание (сортировку) записей. После этих ключевых слов следует список полей, определяющих сортировку. Можно указывать только поля, фигурирующие в списке отобранных (в списке после ключевого слова SELECT).
Если в списке сортировки указано только одно поле, то сортировка производится по умолчанию в порядке нарастания значений этого поля. Например, оператор
SELECT Dep, Fam, Year_b FROM Pers ORDER BY Year_b задает упорядочивание возвращаемых значений по нарастанию года рождения. Если желательно располагать результаты по убыванию значений, то после имени поля добавляется ключевое слово DESC:
SELECT Dep, Fam, Year_b FROM Pers ORDER BY Year_b DESC
Если в списке после ORDER BY перечисляется несколько полей, то первое из них — главное и сортировка проводится прежде всего по значениям этого поля. Записи, имеющие одинаковое значение первого поля упорядочиваются по значениям второго поля и т.д. Например, оператор
SELECT Dep, Fam, Year_b FROM Pers ORDER BY Dep, Fam сортирует записи прежде всего по отделам (значениям поля Dep), а внутри каждого отдела — по алфавиту. Оператор
SELECT Dep, Fam, Year_b, Sex FROM Pers ORDER BY Dep, Sex, Fam сортирует записи по отделам, полу и алфавиту.
После ключевого слова Select в оператор могут вставляться ключевые слова DISTINCT или ALL. Первое из них означает, что в результирующий набор данных не включаются повторяющиеся записи. Повторяющимися считаются те записи, в которых совпадают значения полей, перечисленных в списке оператора Select. Ключевое слово ALL означает включение всех записей. Оно подразумевается по умолчанию, так что вставлять его в оператор не имеет смысла. Приведем пример использования DISTINCT. Оператор
SELECT DISTINCT Dep FROM Pers выдаст список подразделений, в которых работают сотрудники.
Практическая часть
1. организовать выборку с условием МЕНЬШЕ числовых полей
2. организовать выборку с условием БОЛЬШЕ числовых полей
3. организовать выборку с условием В НЕ ДИАПОЗОНА числовых полей
4. организовать выборку с условием В ПРОМЕЖУТКЕ МЕЖДУ числовых полей
Вопросы для контроля
1. Напишите синтаксис оператора IN.
2. Напишите синтаксис оператора LIKE.
3. Напишите синтаксис оператора BETWEEN… AND.
4. Напишите синтаксис оператора ORDER BY.
5. Напишите синтаксис оператора DISTINCT.
Литература
1. Фаронов В.В. Программирование на языке высокого уровня: Учебник для вузов. -СПб.: Питер, 2003.
2. Бобровский С.И. Delphi 7. Учебный курс. - СПб.: Питер, 2005.
3. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Visual Basic, C++ Builder, Delphi. - СПб.: БХВ - Петербург, 2005.