Общая характеристика операторов языка SQL
СОДЕРЖАНИЕ
Введение
Характеристика
языка
Общие
данные об основных операторах языка SQL
Интерактивный
режим работы с SQL
Использование
языка SQL для выбора информации из таблиц
Использование
SQL для вставки, редактирования и удаления данных в таблицах
Язык
SQL и алгебраические операции
Вывод
Список
источников информации
ВВЕДЕНИЕ
В реферате дается общая характеристика
операторов языка SQL, используемых, в частности, для работы с базой данных в
интерактивном режиме (создание таблиц, выбор информации из таблиц, добавление,
удаление и модификация элементов). Приводятся примеры запросов к базе данных на
языке SQL. Тема является актуальной, потому что язык SQL очень удобен для
работы с базами данных.
Объект исследования - язык SQL.
Предмет исследования - операторы языка SQL,
интерактивный SQL.
Цель исследования - дать общую характеристику
операторов языка SQL и показать, как записываются основные запросы к базе
данных на языке SQL (в интерактивном режиме).
Для достижения поставленной цели в данной работе
необходимо рассмотреть ряд задач:
рассказать, что собой представляет язык SQL;
дать понятие интерактивного режима работы с SQL;
рассмотреть основные операторы SQL;
рассмотреть связь между операциями реляционной
алгебры и операторами языка SQL.
Для полного и всестороннего рассмотрения темы
работы, а также в качестве источника для добывания фактического материала в
работе будут использованы некоторые научные методы исследования, в частности
метод изучения и анализа научной литературы.
оператор язык данный таблица
ХАРАКТЕРИСТИКА ЯЗЫКА
(Structured Query Language - Структурированный
язык запросов) - язык управления базами данных для реляционных баз данных. Сам
по себе SQL не является Тьюринг-полным языком программирования, но его стандарт
позволяет создавать для него процедурные расширения, которые расширяют его
функциональность до полноценного языка программирования.
Язык был создан в 1970х годах под названием
“SEQUEL” для системы управления базами данных (СУБД) System R. Позднее он был
переименован в “SQL” во избежание конфликта торговых марок. В 1979 году SQL был
впервые опубликован в виде коммерческого продукта Oracle V2.
Первый официальный стандарт языка был принят
ANSI в 1986 году и ISO - в 1987. С тех пор были созданы еще несколько версий
стандарта, некоторые из них повторяли предыдущие с незначительными вариациями,
другие принимали новые существенные черты.
Несмотря на существование стандартов,
большинство распространенных реализаций SQL отличаются так сильно, что код
редко может быть перенесен из одной СУБД в другую без внесения существенных
изменений. Это объясняется большим объемом и сложностью стандарта, а также
нехваткой в нем спецификаций в некоторых важных областях реализации.создавался
как простой стандартизированный способ извлечения и управления данными,
содержащимися в реляционной базе данных. Позднее он стал сложнее, чем
задумывался, и превратился в инструмент разработчика, а не конечного
пользователя. В настоящее время SQL (по большей части в реализации Oracle)
остается самым популярным из языков управления базами данных, хотя и существует
ряд альтернатив.состоит из четырех отдельных частей:
язык определения данных (DDL) используется для
определения структур данных, хранящихся в базе данных. Операторы DDL позволяют
создавать, изменять и удалять отдельные объекты в БД. Допустимые типы объектов
зависят от используемой СУБД и обычно включают базы данных, пользователей,
таблицы и ряд более мелких вспомогательных объектов, например, роли и индексы.
язык манипуляции данными (DML) используется для
извлечения и изменения данных в БД. Операторы DML позволяют извлекать,
вставлять, изменять и удалять данные в таблицах. Иногда операторы select
извлечения данных не рассматриваются как часть DML, поскольку они не изменяют
состояние данных. Все операторы DML носят декларативный характер.
язык определения доступа к данным (DCL)
используется для контроля доступа к данным в БД. Операторы DCL применяются к
привилегиям и позволяют выдавать и отбирать права на применение определенных
операторов DDL и DML к определенным объектам БД.
язык управления транзакциями (TCL) используется
для контроля обработки транзакций в БД. Обычно операторы TCL включают commit
для подтверждения изменений, сделанных в ходе транзакции, rollback для их
отмены иsavepoint для разбиения транзакции на несколько меньших частей.
Следует отметить, что SQL реализует
декларативную парадигму программирования: каждый оператор описывает только
необходимое действие, а СУБД принимает решение о том, как его выполнить, т.е.
планирует элементарные операции, необходимые для выполнения действия и
выполняет их. Тем не менее, для эффективного использования возможностей SQL
разработчику необходимо понимать то, как СУБД анализирует каждый оператор и
создает его план выполнения.
ОБЩИЕ ДАННЫЕ ОБ ОСНОВНЫХ ОПЕРАТОРАХ ЯЗЫКА SQL
Как уже отмечалось в "Программное
обеспечение работы с современными базами данных"
<#"786073.files/image001.gif">
Рисунок №1.
ИСПОЛЬЗОВАНИЕ ЯЗЫКА SQL ДЛЯ ВЫБОРА
ИНФОРМАЦИИ ИЗ ТАБЛИЦ
Выборка данных осуществляется с
помощью оператора SELECT, который является самым часто используемым оператором
языка SQL. Синтаксис оператора SELECT имеет следующий вид:[ALL/DISTINCT]
<список атрибутов>/*<список таблиц>
[WHERE <условие выборки>]
[ORDER BY <список атрибутов>]
[GROUP BY <список атрибутов>]
[HAVING <условие>]
[UNION<выражение с оператором
SELECT>]
В квадратных скобках указываются
элементы, которые могут в запросе отсутствовать.
Ключевое слово ALL означает, что
результатом будут все строки, удовлетворяющие условию запроса, в том числе и
одинаковые строки. DISTINCT означает, что в результирующий набор не включаются
одинаковые строки. Далее идет список атрибутов исходной таблицы, которые будут включены
в таблицу-результат. Символ * означает, что в таблицу-результат включаются все
атрибуты исходной таблицы.
Обязательным ключевым словом
является слово FROM, за ним следуют имена таблиц, к которым осуществляется
запрос.
В предложении с ключевым словом
WHERE задаются условия выборки строк таблицы. В таблицу-результат включаются
только те строки, для которых условие, указанное в предложении WHERE, принимает
значение истина.
Ключевое слово ORDER BY задает
операцию упорядочения строк таблицы-результата по указанному списку атрибутов.
В предложении с ключевым словом
GROUP BY задается список атрибутов группировки (разъяснение этого и
последующего ключевого слова будет представлено немного позднее).
В предложении HAVING задаются
условия, накладываемые на каждую группу.
Отдельно отметим, что ключевые слова
FROM, WHERE, ORDER BY используются аналогичным образом и в других операторах
манипулирования данными языка SQL.
Рассмотрим реализацию запросов для
конкретного примера, представленного в "Использование формального аппарата
для оптимизации схем отношений" (см. рисунок №2)
Рисунок №2.
Выдать список всех студентов.
SELECT *
student
илиid_st,
surname
FROM student
Заметим, что если добавить к данному
запросу предложение ORDER BY surname, то список будет упорядочен по фамилии. По
умолчанию подразумевается, что сортировка производится по возрастанию. Если
необходимо упорядочение по убыванию, после имени атрибута добавляется слово
DESC.
Выдать список оценок, которые
получил студент с кодом "1".
SELECT
id_st, mark mark_st
WHERE id_st = 1
Выдать список кодов студентов,
которые получили на экзаменах хотя бы одну двойку или тройку.
В предложении WHERE можно записывать
выражение с использованием арифметических операторов сравнения (<, >, и
т.д.) и логических операторов ( AND, OR, NOT ) как и в обычных языках
программирования.
SELECT
id_st, mark mark_st
WHERE ( MARK >= 2 ) AND ( MARK
<= 3 )
Наряду с операторами сравнения и
логическими операторами для составления условий в языке SQL (из-за специфики
области применения) существуют ряд специальных операторов, которые, как
правило, не имеют аналогов в других языках. Вот эти операторы:- вхождение в
некоторое множество значений;- вхождение в некоторый диапазон значений;-
проверка на совпадение с образцом;NULL - проверка на неопределенное значение.
Оператор IN используется для
проверки вхождения в некоторое множество значений. Так, запросid_st,
markmark_stmark IN (2,3)
дает тот же результат, что и
вышеуказанный запрос (выведет идентификаторы всех абитуриентов, получивших хотя
бы одну двойку или тройку на экзаменах).
Того же результата можно добиться,
используя оператор BETWEEN:
SELECT
id_st, markmark_st
Выдать список всех студентов,
фамилии которых начинаются с буквы А.
В этом случае удобно использовать
оператор LIKE.
Оператор LIKE применим исключительно
к символьным полям, и позволяет устанавливать, соответствует ли значение поля
образцу. Образец может содержать специальные символы:
_ (символ подчеркивания) - замещает
любой одиночный символ;
% (знак процента) - замещает
последовательность любого числа символов.
SELECT
id_st, surnamestudent
WHERE surname LIKE 'А%'
Очень часто возникает необходимость
произвести вычисление минимальных, максимальных или средних значений в столбцах.
Так, например, может понадобиться вычислить средний балл. Для осуществления
подобных вычислений SQL предоставляет специальные агрегатные функции:-
минимальное значение в столбце;- максимальное значение в столбце;- сумма
значений в столбце;- среднее значение в столбце;- количество значений в
столбце, отличных от NULL.
Следующий запрос считает среднее
среди всех баллов, полученных студентами на экзаменах.
SELECT AVG(mark) mark_st
Естественно, можно использовать
агрегатные функции совместно с предложением WHERE:
SELECT
AVG(mark)mark_st
WHERE id_st = 100
Данный запрос вычислит средний балл
студента с кодом 100 по результатам всех сданных им экзаменов.
SELECT
AVG(mark)mark_st
WHERE id_ex = 10
Данный запрос вычислит средний балл
студентов по результатам сдачи экзамена с кодом 10.В дополнение к рассмотренным
механизмам язык SQL предоставляет мощный аппарат для вычисления агрегатных
функций не для всей таблицы результатов запроса, а для разных значений по
группам. Для этого в SQL существует специальная конструкция GROUP BY,
предназначенная для указания того столбца, по значениям которого будет
производиться группировка. Так, например, мы можем вычислить средний балл по
всем экзаменам для каждого студента. Для этого достаточно выполнить следующий
запрос:id_st, AVG(mark)
FROM
mark_stBY id_st
Все это, как обычно, может быть
совмещено с предложением WHERE. При этом, не вдаваясь в тонкости выполнения
запроса внутриСУБД, можно считать, что сначала выполняется выборка тех строк
таблицы, которые удовлетворяют условиям из предложения WHERE, а потом
производится группировка и агрегирование.
Приведем запрос, который вычисляет
средний балл по оценкам, полученным на экзамене с кодом 100, для каждого
студента.
SELECT
id_st, AVG(mark)mark_stid_ex = 100
GROUP BY id_st
Заметим, что группировка может
производиться более чем по одному полю.
Для запросов, содержащих секцию
GROUP BY, существует важное ограничение: такие запросы могут включать в
качестве результата столбцы, по которым производится группировка, и столбцы,
которые содержат собственно результаты агрегирования.
Для того чтобы форматировать вывод,
существуют различные возможности SQL. Так, например, допустимым является
включение текста в запрос. Рассмотрим пример того, как это делается:
SELECT 'Средний балл=',
AVG(mark)mark_st
WHERE id_ex = 10
В результате данного запроса
пользователь увидит не просто некоторое число, а число, сопровожденное
поясняющим текстом.
Как правило, в тех случаях когда
возникает необходимость выбирать информацию из разных таблиц, они тем или иным
образом связаны друг с другом, например отношениями один к многим или один к
одному по некоторому полю.
Рассмотрим соответствующую
ER-диаграмму на рисунке №3.
Рисунок №3.
В этом примере тоже присутствуют
связанные таблицы. Рассмотрим таблицы student,
mark_st и
exam_st.
Таблица mark_st связана с таблицей
exam_st по полю id_ex.
Таблица mark_st связана с таблицей
student по полю id_st.
Допустим, требуется распечатать
список студентов с оценками, которые они получили на экзаменах. Для этого
необходимо выполнить следующий запрос:student.surname, mark_st.id_ex,
mark_st.mark
FROM
student, mark_ststudent.id_st = mark_st.id_st
Отметим следующие изменения по
сравнению с запросами к одной таблице.
В секции FROM указаны две таблицы.
Так как таблиц стало больше одной,
появилась некоторая неоднозначность при упоминании полей. Так, во многих
случаях неизвестно, из какой таблицы из списка FROM брать поле. Для устранения
неоднозначности имена полей указываются с префиксом - именем таблицы. Имя
таблицы от имени поля отделяется точкой.
В предложении WHERE указано условие
соединения таблиц.
Нетрудно заметить, что использование
префиксов-имен таблиц сильно загромождает запрос. Для того чтобы избежать
подобного загромождения, используются псевдонимы. Так, можно переписать
предыдущий запрос следующим образом:
SELECT
E.surname, M.id_ex, M.markstudent E, mark_st ME.id_st = M. id_st
ИСПОЛЬЗОВАНИЕ SQL ДЛЯ ВСТАВКИ,
РЕДАКТИРОВАНИЯ И УДАЛЕНИЯ ДАННЫХ В ТАБЛИЦАХ
Для добавления данных в таблицу в
стандарте SQL предусмотрена команда INSERT. Рассмотрим ряд примеров
запросов.INTO mark_st(1, 2, 5)
Данный запрос вставляет в таблицу
mark_st строку, содержащую значения, перечисленные в списке VALUES. Если не
нужно указывать значение какого-то поля, можно присвоить ему NULL:
INSERT INTO
mark (1, 2, NULL)
В случае если необходимо
использование для некоторых полей значений по умолчанию, SQL позволяет явно
указать, какие поля необходимо заполнить конкретными данными, а какие -
значениями по умолчанию:
INSERT INTO
mark_st (id_st, id_ex)
VALUES (1, 2)
Для удаления данных из таблицы
существует команда DELETE:student
Этот запрос удаляет все данные из
таблицы student.
Можно ограничить диапазон удаляемой
информации следующим образом:
DELETE
studentsurname > 'И'
Для обновления данных используется
команда UPDATE.
UPDATE mark_st
mark = '5'id_st = 100 AND id_ex = 10
При помощи этого запроса изменится
на "5" оценка у студента с кодом 100 по экзамену с кодом 10.
ЯЗЫК SQL И АЛГЕБРАИЧЕСКИЕ ОПЕРАЦИИ
Язык SQL является средством выражения мощного
математического аппарата теории множеств и реляционной алгебры. В данном
разделе рассматривается связь операторов языка SQL с операциями реляционной
алгебры и теории множеств.
Операция объединения
Средствами языка SQL операция объединения представляется
следующим образом:
SELECT *A*
FROM B
Операция разности
Средствами языка SQL операция разности
представляется следующим образом:
SELECT *A*B
Операция проекцииFieldi1,
..., Fieldin A
Операция выборки (селекции)
SELECT *A(<condition>)
Операция пересечения*A
Операция соединения, эквисоединения
Если -
операция "=", то это эквисоединение.
Операция естественного соединения
Пусть есть отношения A(X1, ..., Xn, A1, ..., Am)
и B(X1, ..., Xn, B1, ..., Br).
SELECT A.X1, ..., A.Xn, A.A1, ...,
A.Am, B.B1, ..., B.BrA, B(A.X1 = B.X1) AND ... AND (A.Xn = B.Xn)
ВЫВОД
В реферате дается общая характеристика
операторов языка SQL, используемых, в частности, для работы с базой данных в
интерактивном режиме (создание таблиц, выбор информации из таблиц, добавление,
удаление и модификация элементов). Дается понятие интерактивного режима работы
с SQL. Рассматриваются основные операторы SQL, используемые для манипулирования
данными (выбор информации из таблиц, добавление, удаление и модификация элементов).
Приводятся примеры записи запросов к базе данных на языке SQL с использованием
операторов select, insert, update, delete. Рассматривается связь между
операциями реляционной алгебры и операторами языка SQL. Задачи исследования
выполнены.
СПИСОК ИСТОЧНИКОВ ИНФОРМАЦИИ
http://progopedia.ru/language/sql/://www.intuit.ru/studies/courses/508/364/lecture/8661?page=1