Формирование запросов на языке SQL 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Формирование запросов на языке SQL



 

Формирование запросов на языке SQL предполагает ввод команд с клавиатуры в строгом соответствии с их форматами. Для описания форматов команд (иногда усеченных) будем использовать следующие соглашения:

ü угловые скобки (< >). То, что в них указано, определяет пользователь;

ü квадратные скобки ([ ]). Выделяют те части команды, которые могут отсутствовать;

ü фигурные скобки ({ }). Заключенная в эти скобки часть команды может быть повторена несколько раз;

ü круглые скобки (). В них заключаются аргументы команды;

ü вертикальная черта (). Означает альтернативный выбор.

Запись команд SQL, реализующих запросы к БД, с целью их лучшего восприятия будем приводить, используя прописные и строчные буквы и их различные начертания. Но для ускорения ввода команд целесообразно набирать их на одном регистре (например, полностью прописными буквами).

 

Создание таблицы. Обновление данных

Запрос на описание полей таблицы (т. е. на создание ее структуры) на языке SQL реализуется с помощью команды CREATE TABLE формата:

CREATE TABLE < имя таблицы>

({<имя поля> <тип данных>[<размер> ]

[<ограничения на поле>]

[<значение поля по умолчанию>] },...

[,<ограничения на таблицу>]);

Некоторые из ограничений на поля: NOT NULL (поле, для которого указано это ограничение, не допускает значений NULL); UNIQUE (поле, для которого указано это ограничение, не допускает повторяющихся значений); PRIMARY KEY (поле, для которого это ограничение задано, должно выступать в роли первичного ключа); CHECK (позволяет определить условие, которому должны удовлетворять вводимые в поле значения). Ограничения на таблицу применяются к группам, состоящим из нескольких полей, и задаются определенными ключевыми словами. Значение поля по умолчанию указывается при помощи ключевого слова DEFAULT.

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

 

Имена полей НОМЗ (№ зачетки) ФИО ГОД ПОЛ
Типы данных Целые числа Текст Целые числа Текст
Размеры полей        
Типы данных на языке SQL INT CHAR(15) INT CHAR(7)

 

Пример. Запрос на создание структуры таблицы Сведения имеет вид:

CREATE TABLE Сведения

(НОМЗ INT, ФИО CHAR(15), ГОД INT, ПОЛ CHAR(7));

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

INSERT < имя таблицы>[{<имя поля>},...]

VALUES({<значение>},...);

Если имена полей не указаны, то значениями заполняются поля, состав и порядок которых был описан командойCREATE TABLE. Значения полей задаются константами (выражения не допустимы).

 

Пример. Запрос на заполнение полей таблицы Сведения конкретными значениями:

INSERT INTO Сведения

VALUES (980101, " ИВАНОВ И. И.", 1980, "МУЖСКОЙ");

Запрос на изменение значений полей таблицы реализуется с помощью команды UPDATE, имеющей формат:

UPDATE < имя таблицы>

SET{<имя поля>=<выражение>},...

[WHERE <условие>];

Условие задается выражением типа сравнения или логическим выражением. Если предложение WHERE отсутствует, то изменения выполняются во всех записях таблицы.

 

Пример. Запрос на изменение в таблице Сведения фамилии и инициалов студентки, у которой номер зачетной книжки 980201, на Кравцова И.И.:

UPDATE Сведения

SET ФИО = "КРАВЦОВА И. И."

WHERE НОМЗ =980201;

Запрос на удаление записей из таблицы формируется с помощью команды DELETE формата:

DELETE FROM < имя таблицы>

[WHERE <условие>];

Если предложение WHERE отсутствует, то удаляются все записи таблицы.

 

Пример. Запрос на удаление из таблицы Сведения данных о студенте, у которого номер зачетной книжки 980201:

DELETE FROM Сведения

WHERE НОМЗ =980201;

 

Формирование запросов выбора

Для выбора информации из таблиц используется команда SELECT формата:

SELECT [DISTINCT ALL] {<выражение>},...*

FROM {< имя таблицы>},...

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

[ORDER BY {<имя поля> [ASCDESC] },...]

[GROUP BY {<имя поля>},...]

[HAVING <условие>];

Частным случаем выражения является поле. Команда SELECT позволяет выводить все поля (*) или некоторые по указанному списку из (FROM) заданной таблицы по некоторому условию (WHERE). Выводить можно все значения полей (ALL) или только неповторяющиеся (DISTINCT). При этом возможны сортировка записей (ORDER BY) по возрастанию (ASC) или убыванию (DESC), их группировка (GROUP BY) по некоторым полям, исключение определенных результирующих групп (HAVING).

Команда SELECT дает возможность проведения вычислений над полями, а также итоговых вычислений с использованием функций агрегирования SUM, AVG, COUNT, MAX, MIN. Она позволяет также создавать вложенные запросы.

 

Пример 1. Запрос на выбор из таблицы Сведения данных о студентах мужского пола:

SELECT *

FROM Сведения

WHERE ПОЛ ="МУЖСКОЙ";

Пример 2. Запрос на выбор из таблицы Сведения данных о студентах, у которых год рождения больше или равен 1977 и меньше или равен 1980:

SELECT *

FROM Сведения

WHERE ГОД>= 1977 AND ГОД<= 1980;

 

Пример 3. Запрос на выбор из таблицы Сведения данных о студентах, фамилии которых начинаются с буквы И.

SELECT *

FROM Сведения

WHERE ФИО LIKE "И %";

Представления и их создание

Представления (views) – это таблицы, содержимое которых извлекается из других таблиц БД. Представления подобны окнам, через которые просматривается информация, хранимая в БД. Как и любую другую таблицу, представления можно использовать: формулировать к нему запросы, выполнять обновление, вставку, удаление данных и соединение с другими таблицами и представлениями. Представление создается с помощью команды CREATE VIEW. Эта команда не поддерживается СУБД Access.

 

Управление доступом

Каждый пользователь БД имеет определенные права (действия) по отношению к объектам БД. Права могут меняться с течением времени: старые могут отменяться, новые – добавляться. Пользователь, создавший таблицу, является ее владельцем. Как владелец, пользователь имеет все права на таблицу и может назначить права для работы с ней другим пользователям. Язык SQL предусматривает права: SELECT (право читать таблицу); INSERT (право добавлять данные в таблицу); UPDATE (право изменять данные таблицы); DELETE (право удалять данные из таблицы); REFERENCES (право определять первичный ключ). Назначение прав осуществляется командой GRANT, а лишение прав – командой REVOKE. Эти команды не поддерживаются СУБД Access.

 

Управление транзакциями

Для обеспечения целостности данных используются средства обработки транзакций - команды COMMIT и ROLLBACK. Команда COMMIT сообщает об успешном окончании транзакции, а команда ROLLBACK - о неуспешном окончании транзакции и необходимости отмены всех изменений, внесенных в БД в результате выполнения транзакции. Эти команды не поддерживаются СУБД Access.

 

Встроенный SQL

Язык SQL можно использовать при написании прикладных программ на определенных языках программирования исключительно для управления БД. По мере надобности в эти программы “встраиваются” команды SQL.

Для пересылки данных из БД в программу используются специальные команды SQL (операторы) - DECLARE, OPEN, FETCH, CLOSE, предназначенные для работы с курсором. В языке SQL курсор понимается не традиционно (как мигающий графический символ на экране дисплея). Курсор SQL – это переменная, связанная с запросом. Ее значениями являются строки результатной таблицы запроса.

Оператор DECLARE описывает выполняемый запрос и связывает имя курсора с результатом запроса (определяет курсор для запроса). Оператор OPEN дает команду СУБД начать выполнение запроса и создавать таблицу результатов запроса (открывает курсор для чтения результата запроса). Оператор FETCH считывает данные запроса в переменную прикладной программы (считывает курсор из результатов запроса). Оператор CLOSE прекращает доступ к таблице результатов запроса и ликвидирует связь между курсором и этой таблицей.

 

 



Поделиться:


Последнее изменение этой страницы: 2017-01-27; просмотров: 451; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.31.240 (0.012 с.)