ALTER TABLE Bars DROP license Представления (VIEWs). Выражение, которое описывает таблицу, но не создает ее.

Определение схемы (структуры) базы данных.

CREATE TABLE имя (список элементов).

Как правило, элементы – это атрибуты и их типы, также можно объявить ключи и ограничения.
Команда CREATE X применяется для других элементов структуры X: представлений (VIEW), индексов (INDEX), утверждений (ASSERTION), триггеров(TRIGGER).
«DROP X имя» удаляет созданный элемент вида X с именем «имя».

Пример.

CREATE TABLE Sells (
bar CHAR(20),
beer VARCHAR(20),
price REAL
);

DROP TABLE Sells;

Типы.

INT или INTEGER.
REAL или FLOAT.
CHAR( n ) = строка символов фиксированной длины, дополненная, в случае необходимости справа символом-заполнителем (чаще всего – пробелом).
VARCHAR( n ) = строка символов переменной длины, не более n символов.
В Oracle используется тип VARCHAR2( n ). Отличие: память под VARCHAR2 имеет переменную длину; VARCHAR хранится в массиве, имеющем ограничивающий символ.
Использовать VARCHAR в Oracle нежелательно (этот тип данных может быть запрещен в будущем); постарайтесь использовать тип VARCHAR2.

Даты. Форма этого типа в SQL - DATE 'yyyy-mm-dd'
В Oracle используются отличные от SQL форматы дат.
Время. Форма этого типа в SQL - TIME 'hh:mm:ss[.ss...]' .
В Oracle: NUMBER – это и целое число, и число с плавающей точкой.


Дата в Oracle по умолчанию.

Формат даты по умолчанию определяется в момент генерации системы и может быть позднее изменен системным администратором для всех или пользователем в пределах сеанса работы, текущий формат - 'dd.mm.yy', например, 09.04.02

Величина, хранимая в поле типа DATE, будет иметь точность, которая допустима на компьютере.

Пример:
CREATE TABLE Days (
d DATE
);
INSERT INTO Days VALUES('06.11.97');

В Oracle есть функция to_date для преобразования дат в формат по умолчанию.

INSERT INTO Days
VALUES(to_date('2000-01-01', 'yyyy-mm-dd'));




Определение ключей.

Используются ключевые слова PRIMARY KEY или UNIQUE.

В Oracle эти опции являются синонимами.
В SQL может быть только один первичный ключ, а уникальных - может быть несколько.
SQL разрешает реализациям создавать индекс (для ускорения доступа к данным по ключу) только для опции PRIMARY KEY.
Oracle создает индексы при задании и той и другой опции.
SQL не разрешает оставлять не заполненными значения первичных ключей (NULL), но это допустимо для «уникальных» столбцов (которые могут иметь два или более пустых значения, но не пустые значения не могут повторяться).

Ключи определяются в одном из двух мест:
После типа атрибута, если этот атрибут представляет собой ключ.
Как отдельный элемент.
Существенно, если ключ содержит более чем 1 атрибут.


Пример.

CREATE TABLE Sells (
bar CHAR(20),
beer VARCHAR(20),
price REAL,
PRIMARY KEY(bar,beer)
);



Другие свойства, которые можно назначать атрибутам.

NOT NULL = каждый кортеж должен иметь определенное значение для этого атрибута.
DEFAULT значение = значение, которое будет присвоено атрибуту, если не какое другое значение.


Пример.

CREATE TABLE Drinkers (
name CHAR(30) PRIMARY KEY,
addr CHAR(50) DEFAULT '123 Sesame St',
phone CHAR(16)
);

INSERT INTO Drinkers(name)
VALUES('Sally')

В результате выполнения команд получим:

name addr phone

Sally 123 Sesame St. NULL

Первичный ключ не может принимать значения по умолчанию NULL.
Такое добавление допустимо.
Допускается в INSERT указывать список атрибутов и список соответчтвующих значений.
Если бы в CREATE TABLE определили

phone CHAR(16) NOT NULL

то такое добавление было бы невозможным.



Изменение столбцов.

Добавить атрибут к отношению R можно, используя команду:

ALTER TABLE R ADD < описание столбца > ;

Пример:

ALTER TABLE Bars ADD phone CHAR(16)
DEFAULT 'unlisted';

Столбец можно удалить.

ALTER TABLE Bars DROP license;


Представления (VIEWs).

Выражение, которое описывает таблицу, но не создает ее.
















Представление определяется командой:

CREATE VIEW < имя > AS < запрос > ;


Пример.

Представление CanDrink – это набор пар посетитель-сорт пива (drinker-beer) таких, что посетитель часто посещает бар, предлагающий данный сорт.

CREATE VIEW CanDrink AS
SELECT drinker, beer
FROM Frequents, Sells
WHERE Frequents.bar = Sells.bar;


Запросы к представлениям.

Выборка производится как для обычного отношения.

Пример.

SELECT beer
FROM CanDrink
WHERE drinker = 'Sally';



Семантика использования представлений.


SQL запрос реляционная
алгебра
SQL
SQL определение реляционная
представления алгебра
Пример.



(drinker, beer ( beer


(drinker_’Sally’


Frequents Sells CanDrink



CanDrink Query


В результате комбинирования получаем

( beer


(drinker_’Sally’


(drinker, beer






Frequents Sells




Оптимизировать запрос.

1. Поместить выбор вниз дерева.
2. Удалить ненужные проекции.


( beer





(drinker=’Sally’ Sells




Frequen
·
·
·
·
·
·
·
·
·
B Heading 1> Heading 2H Heading 3H Heading 4: Heading 5Ў< Default Paragraph FontтB Body Text

Приложенные файлы

  • doc 7066421
    Размер файла: 56 kB Загрузок: 0

Добавить комментарий