Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МР - занятие № 2.doc
Скачиваний:
2
Добавлен:
24.08.2019
Размер:
308.22 Кб
Скачать
    1. Обзор языка 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’