Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
My_shpore_v02.doc
Скачиваний:
61
Добавлен:
21.09.2019
Размер:
2.18 Mб
Скачать

3 43(7) .Структура языка sql. Оператор select. Типы соединений таблиц.

Структура языка.

В язык SQL в качестве составных частей входят:

• язык манипулирования данными (Data Manipulation Language, DML)

используется, как это следует из его названия, для манипулирования данными в таблицах баз данных. Он состоит из трех основных команд: INSERT (вставить), UPDATE (обновить), DELETE(удалить).

• язык определения данных (Data Definition Language, DDL)

используется для создания и изменения структуры базы данных и ее составных частей - таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и сохраненных процедур. Основными его командами являются: CREATE(создать), ALTER(модифицировать), DROP(удалить).

• язык запросов к данным (Data Query Language, DQL)

используется для построения запросов. Состоит из команды SELECT(выбрать).

• язык управления данными (Data Control Language, DCL)

используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать “язык управления доступом”. Он состоит из двух основных команд: GRANT (дать права) REVOKE (забрать права).

• команды управления транзакциями – это команды, позволяющие пользователю

управлять транзакциями базы данных. COMMIT (сохранить транзакцию), ROLLBACK (отменить транзакцию), SET TRANSACTION (назначает имя транзакции).

Подчеркнем, что это не отдельные языки, а различные команды одного языка. Такое деление проведено только лишь с точки зрения различного функционального назначения этих команд.

Оператор SELECT.

Синтаксис оператора: общий вид оператора:

SELECT [ALL * DISTINCT список_полей] FROM список_таблиц

[ WHERE условие [[AND │ OR│ NOT] условие ]]

[ GROUP BY список]

[ HAVING условия]

[ ORDER BY список [ ASC | DESC ] ]

Звездочка (*) означает, что надо выводить все поля из всех таблиц, указанных во FROM. Опция ALL – показать все значения столбца, включая повторяющиеся. Опция DISTINCT – показать, исключая повторения. По умолчанию используется ALL.

ORDER BY – упорядочение (сортировка) значений. ASC – по возрастанию, DESC – по убыванию. По умолчанию упорядочение по возрастанию.

GROUP BY – сортировка данных по группам. Используется в основном, если в запросе присутствуют агрегатные функции (COUNT, SUM и т.д.). Если раздел GROUP BY присутствует, то агрегатные функции вычисляются по отдельности для каждой группы, определенной в разделе GROUP BY. Если раздела GROUP BY нет, то результат запроса возвращает не более одной строки. Раздел HAVING содержит условное выражение, вычисляемое для каждой группы, определяемой списком группировки в разделе GROUP BY.

Условие в выражении WHERE можно задать разными способами.

WHERE выражение = │!=│<│>│<=│>= ‘значение’.

WHERE выражение IS NULL – не задано значение.

W

43(8)

HERE выражение BETWEEN ‘значение’ and ‘значение’ – поиск значений, попадающих в диапазон.

WHERE выражение LIKE ‘[%|_ ] значение [%|_ ]’ – нахождение значений похожих на данное (по шаблону). % - любая последовательность символов, _ - один любой символ.

WHERE выражение IN (‘значение’, ’ значение’, ’ значение’) – сравнение значение с заданным списком буквальных значений. Чтобы возвратить TRUE, сравниваемое значение должно совпадать хотя бы с одним значением из списка.

WHERE EXISTS (условие) – поиск в таблице строк, удовлетворяющих заданным критериям. Оператор EXISTS возвращает логическую истину, если оператор SELECT внутри скобок вернул не пустой результат.

Соединение таблиц.

В разделе FROM оператора SELECT можно использовать соединенные таблицы. Типы соединений:

Таблица А CROSS JOIN Таблица В - перекрестное соединение возвращает просто декартово произведение таблиц. Такое соединение в разделе FROM может быть заменено списком таблиц через запятую.

Таблица А [NATURAL] [INNER | LEFT [OUTER]| RIGTH [OUTER]| FULL [OUTER]] JOIN Таблица В - естественное соединение производится по всем столбцам таблиц А и В, имеющим одинаковые имена. В результирующую таблицу одинаковые столбцы вставляются только один раз.

Таблица А [INNER | LEFT [OUTER]| RIGTH [OUTER]| FULL [OUTER]] JOIN Таблица В ON Предикат - соединение посредством предиката соединяет строки таблиц А и В посредством указанного предиката (например: author.id = link.auth_id ).

INNER - Тип соединения "внутреннее". Внутренний тип соединения используется по умолчанию, когда тип явно не задан. В таблицах А и В соединяются только те строки, для которых найдено совпадение.

LEFT (OUTER) - Тип соединения "левое (внешнее)". Левое соединение таблиц А и В включает в себя все строки из левой таблицы А и те строки из правой таблицы В, для которых обнаружено совпадение. Для строк из таблицы А, для которых не найдено соответствия в таблице В, в столбцы, извлекаемые из таблицы В, заносятся значения NULL.

RIGHT (OUTER) - Тип соединения "правое (внешнее)". Правое соединение таблиц А и В включает в себя все строки из правой таблицы В и те строки из левой таблицы А, для которых обнаружено совпадение. Для строк из таблицы В, для которых не найдено соответствия в таблице А, в столбцы, извлекаемые из таблицы А заносятся значения NULL.

FULL (OUTER) - Тип соединения "полное (внешнее)". Это комбинация левого и правого соединений. В полное соединение включаются все строки из обеих таблиц. Для совпадающих строк поля заполняются реальными значениями, для несовпадающих строк поля заполняются в соответствии с правилами левого и правого соединений.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]