Скачать презентацию SQL 1999 SQL 3 Новые типы данных Скачать презентацию SQL 1999 SQL 3 Новые типы данных

SQL-99.pptx

  • Количество слайдов: 15

SQL: 1999 (SQL 3) SQL: 1999 (SQL 3)

Новые типы данных • • LARGE OBJECT (LOB) BOOLEAN ARRAY ROW Новые типы данных • • LARGE OBJECT (LOB) BOOLEAN ARRAY ROW

ARRAY Пример: WEEKDAYS VARCHAR (10) ARRAY[7] позволило бы хранить названия всех семи дней недели ARRAY Пример: WEEKDAYS VARCHAR (10) ARRAY[7] позволило бы хранить названия всех семи дней недели в одной строке базы данных. Означает ли это, что SQL: 1999 допускает базы данных, не удовлетворяющие первой нормальной форме? Действительно, допускает, в том смысле, что разрешаются "повторяющиеся группы", запрещаемые первой нормальной формой. Однако некоторые утверждают, что тип ARRAY в SQL: 1999 всего лишь допускает хранение информации, которую можно декомпозировать

ROW CREATE TABLE employee (emp_id INTEGER, name ROW (given VARCHAR (30), family VARCHAR (30) ROW CREATE TABLE employee (emp_id INTEGER, name ROW (given VARCHAR (30), family VARCHAR (30) ), address ROW ( street VARCHAR (50), city VARCHAR (30), state CHAR (2) ), salary REAL ); SELECT e. name. family FROM employee E

Новые предикаты. SIMILAR • Пример: WHERE name SIMILAR TO ' (SQL- (86|89|92|99) ) | Новые предикаты. SIMILAR • Пример: WHERE name SIMILAR TO ' (SQL- (86|89|92|99) ) | (SQL (1|2|3))‘ - Этот предикат производит сопоставление образца с различными названиями, присваивавшимися когда-либо стандарту SQL.

Новые предикаты. DISTINCT • похож по своему действию на обычный предикат SQL UNIQUE • Новые предикаты. DISTINCT • похож по своему действию на обычный предикат SQL UNIQUE • Отличия: – два неопределенных значения считаются неравными одно другому и поэтому удовлетворяют предикату UNIQUE – Предикат DISTINCT рассматривает два неопределенных значения как неотличающиеся одно от другого (хотя, конечно, они не являются равными и в то же время не являются неравными), и поэтому два неопределенных значения не удовлетворяют предикату DISTINCT.

 • В SQL: 1999 существенно расширен диапазон представлений, над которыми напрямую могут выполняться • В SQL: 1999 существенно расширен диапазон представлений, над которыми напрямую могут выполняться операции обновления с использованием только средств, обеспечиваемых стандартом.

рекурсивные запросы • Написание рекурсивного запроса вовлекает написание выражения запроса, которое вы хотите включить рекурсивные запросы • Написание рекурсивного запроса вовлекает написание выражения запроса, которое вы хотите включить в рекурсию и присвоение ему имени, а затем использование этого имени в соответствующем выражении запроса: WITH RECURSIVE Q 1 AS SELECT … FROM … WHERE …, Q 2 AS SELECT … FROM … WHERE …SELECT … FROM Q 1, Q 2 WHERE …

точки сохранения (savepoints) Операции § ROLLBACK TO SAVEPOINT § RELEASE SAVEPOINT точки сохранения (savepoints) Операции § ROLLBACK TO SAVEPOINT § RELEASE SAVEPOINT

Активные базы данных • обеспечивается через средство, называемое триггерами (triggers). • триггер - это Активные базы данных • обеспечивается через средство, называемое триггерами (triggers). • триггер - это предоставляемое разработчикам базы данных средство заставить систему баз данных выполнять некоторые операции каждый раз, когда приложение запрашивает выполнение определенных операций над указанными таблицами.

 • Пример (использование триггера для журнализации всех операций, которые изменяют значение заработной платы • Пример (использование триггера для журнализации всех операций, которые изменяют значение заработной платы в таблице служащих): CREATE TRIGGER log_salupdate BEFORE UPDATE OF salary ON employees REFERENCING OLD ROW as oldrow NEW ROW as newrow FOR EACH ROW INSERT INTO log_table VALUES (CURRENT_USER, oldrow. salary, newrow. salary)

Объектная ориентация • Структурные определяемые пользователями типы • пример определения структурного типа: CREATE TYPE Объектная ориентация • Структурные определяемые пользователями типы • пример определения структурного типа: CREATE TYPE emp_type UNDER person_type AS (emp_id INTEGER, salary REAL) INSTANIABLE NOT FINAL REF (emp_id) INSTANCE METHOD GIVE_RAISE (abs_or_pct BOOLEAN, amount REAL ) RETURNS REAL

 • Этот новый тип является подтипом другого структурного типа • новые атрибуты типа • Этот новый тип является подтипом другого структурного типа • новые атрибуты типа emp_type включают идентификатор служащего и размер заработной платы. • этот тип немедленно пригоден для прямого использования (instaniable) • ему разрешается иметь подтипы (NOT FINAL). • любая ссылка на этот тип (REF) порождаются из значений идентификаторов служащих. • определен метод, который может быть применен к экземплярам этого типа (его значениям).

REF-тип • специальный тип, называемый REF-типом, значениями которого являются уникальные идентификаторы. • Данный REF-тип REF-тип • специальный тип, называемый REF-типом, значениями которого являются уникальные идентификаторы. • Данный REF-тип всегда ассоциируется с указанным структурным типом. • Пример: если мы собирались определить таблицу, содержащую столбец с именем "manager", значения которого являются ссылками на строки типизированной таблицы служащих, то это выглядело бы подобно следующему: manager REF (emp_type)

Функциональная и точечная нотации • WHERE emp. salary > 10000 • WHERE salary (emp) Функциональная и точечная нотации • WHERE emp. salary > 10000 • WHERE salary (emp) > 10000