- •Методическая разработка
- •Отношения и переменные-отношения
- •Оптимизация
- •Каталог
- •Базовые переменные отношения и представления
- •Транзакции
- •Введение в язык sql
- •Обзор языка sql
- •Каталог
- •Представления
- •Транзакции
- •Взаимодействие приложений и субд
- •Домены, отношения и базовые переменные-отношения
- •Значения отношений
- •Средства sql
Обзор языка sql
В языке имеются операции как для определения данных, так и манипулирования ими. Сначала познакомимся с операциями определения данных. На рис. 2.6 показано, как с помощью средств языка SQL определяется база данных поставщиков и деталей.
CREATE TABLE S (SN CHAR(5), SNAME CHAR(20), STATUS NUMERIC(5), CITY CHAR(15), PRIMARY KEY ( SN ) ); CREATE TABLE P (PN CHAR(6), PNAME CHAR(20), COLOR CHAR(6), WEIGHT NUMERIC(5,1), CITY CHAR(15), PRIMARY KEY ( PN ) ); CREATE TABLE SP (SN CHAR(5), PN CHAR(6), QTY NUMERIC(9), PRIMARY KEY (SN, PN), FOREIGN KEY (SN ) REFERENCES S, FOREIGN KEY (PN ) REFERENCES P); |
Рис. 2.6. Определение БД поставщиков и деталей средствами языка SQL
Как можно видеть, определение включает один оператор CREATE TABLE для каждой базовой таблицы. Каждый оператор CREATE TABLE задает имя создаваемой таблицы, имена и типы столбцов этой таблицы, а также первичный ключ таблицы и любые внешние ключи, присутствующие в ней, и некоторую другую информацию. Для определения столбцов можно использовать следующие встроенные типы:
CHARACTER ( n ) INTEGER DATE INTERVAL
BIT (n) SMALLINT TIME
NUMERIC (r, q) FLOAT ( p ) TIMESTAMP DECIMAL(p,q)
Допускается определять собственные типы для так называемых доменов, что будет рассмотрено позже.
Определив базу данных, можно начинать выполнять в ней различные операции, задаваемые с помощью операторов манипулирования данными языка SQL: SELECT, INSERT, UPDATE и DELETE. В частности, можно выполнять с данными реляционные операции выборки, проекции и соединения, причем во всех этих случаях следует использовать один и тот же оператор манипулирования данными языка SQL: SELECT.
Выборка:
SELECT SN, PN, QTY
FROM SP
WHERE QTY < 150
Проекция:
SELECT SN, CITY
FROM S
Соединение:
SELECT S.SN, SNAME, STATUS, CITY, PN, QTY
FROM S, SP
WHERE S.SN = SP.SN
Замечание: В данном случае показан пример указания уточненных имен (S.SN, SP.SN), которые допустимы всегда, а неуточненные имена допустимы, только если при этом не возникает неоднозначности.
В языке SQL допустима сокращенная форма предложения SELECT, как показано в следующем примере:
SELECT * -- или SELECT S.* (т.е. символ * может быть уточнен)
FROM S
Результат выполнения последнего запроса – вся таблица S, т.е. * - сокращение для списка всех имен столбцов. Комментарий в конце строки отделяется ‘--’.
Перейдем к операциям обновления. Операции INSERT, UPDATE и DELETE обрабатывают данные на уровне множеств. Рассмотрим несколько примеров обновления на уровне множеств для базы данных поставщиков и деталей:
INSERT
INTO TMP -- Предполагается, что в TMP два столбца PN, WEIGHT
SELECT PN, WEIGHT
FROM P
WHERE COLOR = ‘Красный’
Данный оператор вставляет в таблицу TMP номера деталей и соответствующие веса всех деталей с цветом ‘Красный’.
UPDATE S
SET STATUS = STATUS * 2
WHERE CITY = ‘Москва’
Приведенный выше оператор UPDATE удваивает статус всех поставщиков в ‘Москве’.
Приведенный ниже оператор удаляет из таблицы SP все строки с информацией о детали с номером ‘P2’.
DELETE
FROM SP
WHERE PN = ‘P2’