- •Базы данных
- •19. Основы построения баз данных
- •19.1. Базы данных и информационные системы
- •Архитектура информационной системы
- •Модели данных
- •19.2. Реляционная модель данных
- •Элементы реляционной модели
- •19.3. Проблемы проектирования реляционных бд
- •Избыточное дублирование данных и аномалии
- •Формирование исходного отношения
- •19.4. Проектирование бд методом нормальных форм
- •Зависимости между атрибутами
- •Нормальные формы
- •19.5. Обеспечение целостности бд
- •19.6. Языки запросов qbe и sql
- •Язык запросов по образцу
- •Структурированный язык запросов
Структурированный язык запросов
Структурированный язык запросов SQL основан па реляционном исчислении с переменными кортежами. Язык имеет несколько стандартов, наиболее распространенными из которых являютсяSQL-89 и SQL-92
SQL предназначен для выполнения операций над таблицами (создание, удаление, изменение структуры) и над данными таблиц (выборка, изменение, добавление и удаление), а также некоторых сопутствующих операций. SOL является непроцедурным языком и не содержит имеющихся в обычных языках программирования операторов управления, организации подпрограмм, ввода-вывода и т.п. В связи с этим SOL автономно не используется, а обычно погружен в в среду встроенного языка программирования СУБД (например, языкаFoxPro СУБДVisual FoxPro) или даже процедурного языка типа C++ илиPascal.
В современных СУБД с интерактивным интерфейсом можно создавать запросы, не применяя SOL. Однако его применение в некоторых случаях позволяет расширить возможности использования СУБД. К примеру при подготовке запроса в среде Access можно перейти из окна конструктора запросов (задания запроса по образцу) в окно с эквивалентным оператором SQL. Подготовку нового запроса путем редактирования уже имеющегося в ряде случае проще выполнить путем изменения оператора SQL
К числу основных операторов усеченного подмножества SQL относятся следующие:
CREATE TABLE - создание таблицы;
DROP TABLE - удаление таблицы;
CREATE INDEX - создание индекса;
DROP INDEX - удаление индекса;
ALTER TABLE - изменение структуры таблицы;
SELECT, UPDATE, INSERT, DELETE - выборка, изменение, вставка и удаление записей.
К дополнительным операторам SQL относятся следующие:
CREATE DATABASE, SHOW DATABASE, START DATABASE, STOP DATABASE, DROP DATABASE - создание, просмотр, активизация, закрытие, удаление БД;
CREATE VIEW, DROP VIEW - создание, удаление выборки (представления);
CREATE SYNONYM - создание синонима;
GRANT, REVOKE - назначение, удаление привилегии для работы с выборками и таблицами.
Рассмотрим подробнее важнейший из перечисленных операторов - оператор SELECT. В упрощенном виде оператор имеет следующий формат:
SELECT [ALL|DISTINCT] <список данных>
FROM <список таблиц>
[WHERE <условие выборки>]
[GROUP BY <имя столбца> [, <имя столбца>]...]
[HAVING <условие поиска>]
[ORDER BY <спецификация сортировки>[,<спецификация сортировки>]...]
Оператор SELECT позволяет выполнять выборку и вычисления над данными одной или нескольких таблиц. Результатом выполнения оператора является ответная таблица, которая может иметь (ALL) или не иметь (DISTINCT) повторяющиеся строки.
В списке данных можно задавать имена столбцов и выражения над ними, к примеру арифметические. Если записи отбираются из нескольких таблиц, то используют составные имена <имя таблицы>.<имя столбцах
Пример. Имеется таблицаGoods (товары) с полями:Code (код),Name (наименование) иCost (стоимость). Требуется вывести стоимости и коды товаров, стоимость которых не превышает 500 единиц.
Для решения поставленной задачи можно записать оператор SELECT следующим образом:
SELECT Code, Cost
FROM Goods
WHERECosf<=500
В различных СУБД состав операторов SQL может несколько отличаться от рассмотренного нами.