Чтение онлайн

ЖАНРЫ

Понимание SQL

Грубер Мартин

Шрифт:

DELETE (УДАЛИТЬ)

Синтаксис

DELETE FROM <table name>

{ [WHERE <predicate>]; }

| WHERE CURRENT OF <cursorname><SQL term

Если предложение WHERE отсутствует, ВСЕ строки таблицы удаляются. использует предикат><predicate>, строки, которые удовлетворяют условию этого предиката<predicate > удаляются. Если предложение WHERE имеет аргумент CURRENT OF(ТЕКУЩИЙ) в имени курсора<cursor name >, строка из таблицы<table name> на которую в данный момент имеется ссылка с помощью имени курсора <cursor name> будет удалена. Форма WHERE CURRENT может использоваться только

во вложенном SQL, и только с модифицируемыми курсорами.

EXEC SQL (ВЫПОЛНИТЬ SQL)

Синтаксис

EXEC SQL <embedded SQL command> <SQL term>

EXEC SQL используется чтобы указывать начало всех команд SQL, вложенных в другой язык.

FETCH (ВЫБОРКА)

Синтаксис

EXEC SQL FETCH <cursorname>

INTO <host-varlable llst><SQL term>

FETCH принимает вывод из текущей строки запроса<query>, вставляет ее в список главных переменных<host-variable list>, и перемещает курсор на следующую строку. Список<host-variable list> может включать переменную indicator в качестве целевой переменной (См. Главу 25. )

GRANT (ПЕРЕДАТЬ ПРАВА)

Синтаксис (стандартный)

GRANT ALL [PRIVILEGES] | {SELECT | INSERT | DELETE | UPDATE [(<column llst>)]

| REFERENCES [(<column llst>)l } .,..

ON <table name> .,..

TO PUBLIC | <Authorization ID> .,..

[WITH GRANT OPTION];

Аргумент ALL(ВСЕ), с или без PRIVILEGES(ПРИВИЛЕГИИ), включает каждую ривилегию в список привилегий. PUBLIC(ОБЩИЙ) включает всех существующих пользователей и всех созданых в будущем. Эта команда дает возможность передать права для выполнения действий в таблице с указаным именем. REFERENCES позволяет дать права чтобы использовать столбцы в списке столбцов<column list> как родительский ключ для внешнего ключа. Другие привилегии состоят из права выполнять команды для которых привилегии указаны их имнами в таблице. UPDATE, подобен REFERENCES, и может накладывать ограничения на определенные столбцы. GRANT OPTION дает возможность передавать эти привилегии другим пользователям.

Синтаксис (нестандартный )

GRANT DBA | RESOURCE | CONNECT ... .

TO <Authorization ID> .,..

[IDENTIFIED BY> password>

CONNECT дает возможность передавать право на регистрации и некоторые другие ограниченные права. RESOURCE дает пользователю право создавать таблицы. DBA дает возможность передавать почти все права. IDENTIFIED BY используется вместе с CONNECT, для создания или изменения пароля пользователя.

INSERT (ВСТАВКА)

Синтаксис

INSERT INTO <table name> (<column llst>)

VALUES (<value llst>) I <query>;

INSERT создает одну или больше новых строк в таблице с именем <table name>. Если используется предложение VALUES, их значения вставляются в таблицу с именем< table name>. Если запрос<query > указан, каждая строка вывода будет вставлена в таблицу с именем <table name>. Если список столбцов<column list> отсутствует, все столбцы таблицы<table name>, принимаются в упорядоченном виде.

OPEN CURSOR (ОТКРЫТЬ КУРСОР)

Синтаксис

EXEC SQL OPEN CURSOR <cursorname><SQL term>

OPEN CURSOR выполняет запрос связанный с курсором<cursor name>.

Вывод может теперь извлекать по одной строке для каждой команды FETCH.

REVOKE (*NONSTANDARD*) (ОТМЕНИТЬ ПОЛНОМОЧИЯ) (НЕСТАНДАРТНО)

Синтаксис

REVOKE { ALL [PRIVILEGES]

| <privilege> .,.. } [ON <table name>]

FROM { PUBLIC

| <Authorization ID> .,.. };

Привелегия<privelege> может быть любой из указаных в команде GRANT. Пользователь дающий REVOKE должен иметь те же привелегии, что и пользователь который давал GRANT. Предложение ON может быть использовано, если используется привилегия специального типа для особого объекта.

ROLLBACK (WORK) (ОТКАТ) (ТРАНЗАКЦИИ)

Синтаксис

ROLLBACK WORK;

Команда отменяет все изменения в базе данных, сделанные в течение текущей транзакции. Она кроме того заканчивается текущую, и начинает новую транзакцию.

SELECT (ВЫБОР)

Синтаксис

SELECT { IDISTINCT | ALL] < value expression > .,.. } / *

[INTO <host variable list> (*embedded only*)]

FROM < table reference > .,..

[WHERE <predicate>]

[GROUP BY <grouping column> .,..]

[HAVING <predicate>]

[ORDER BY <ordering column> [ASC | DESC] .,.. ];

Это предложение огранизует запрос и выводит значения из базы данных( см. Глава 3 - Глава 14). Применяются следующие правила:

* Если ни ALL, ни DISTINCT - не указаны, принимается - ALL.

* Выражение<value expression> состоит из <column spec>, агрегатной функции <aggregate funct>, нестандартной функции<nonstandard function>, постоянной<constant>, или любой их комбинации с операторами в допустимых выражениях.

* Ссылаемая таблица<table reference>, состоит из имени таблицы, включая префикс владельца если текущий пользователь не владелец, или синоним(нестандартно) для таблицы. Таблица может быть или базовой таблицей или просмотром. В принципе, псевдоним может указать, какой синонимом используется для таблицы только на время текущей команды. Имя таблицы или синоним должны отделяться от псевдонима одним или более разделительными знаками<separator>.

* Если используется GROUP BY, все столбцы<column spec> используемые в предложении SELECT, должны будут использоваться как группа столбцов<grouping column>, если они не содержатся в агрегатной функции<aggregate funct>. Вся группа столбцов<grouping column> должна быть представлена среди выражений< value expressions> указанных в предложении SELECT. Для каждой отдельной комбинации значений группы столбцов<grouping column>, будет иметься одна и только одна строка вывода.

* Если HAVING используется, предикат<predicate > применяется к каждой строке произведенной предложением GROUP BY, и те строки которые сделают этот предикат верным, будут выведены.

* Если ORDER BY используется, вывод имеет определенную последовательность. Каждый идентификатор столбца<column identifer> ссылается к указанному <value expression> в предложении SELECT. Если это <value expression> является указанным столбцом<column spec>, <column identifier> может быть таким же как <column spec>. Иначе <column identifier> может быть положительным целым числом, указывающим место где находится <value expression> в последовательности предложения SELECT. Вывод будет сформирован так чтобы помещать значения содержащиеся в <column identifier > в порядке возрастания, если DESC не указан. Имя идентификатора столбца<column identifier> стоящее первым в предложении ORDER BY будет предшествовать позже стоящим именам в определении последовательности вывода.

Поделиться с друзьями: