Архив рубрики «SQL»

Назначение встроенного SQL

Назначение встроенного SQL – комбинировать достоинства языков, давая возможность разрабатывать сложные процедурные программы, которые обращаются к БД через SQL, скрывая от пользователя сложности работы с таблицами в процедурном языке. Встраиваемые SQL-операторы могут вставляться статически или динамически. Программа со встроенным SQL представляет собой смесь SQL-операторов и кода на базовом (HOST) языке программирования, поэтому ее нельзя просто скомпилировать с помощью компилятора базового языка.
Прочитать остальную часть записи »

Общие правила (советы) написания запросов на SQL

Несмотря на то, что все реляционные СУБД имеют встроенный оптимизатор, существуют общие правила, которым стоит придерживаться при создании запросов:

1) Никогда не следует выполнять вычислений на индексированном столбце, например WHERE Amt*5 > : Value

2) Для отключения индекса следует использовать выражения: CName||”, CNum+0 или использовать функцию от значения столбца.
Прочитать остальную часть записи »

Генерация XML-документов в SQL

Для создания XML-документов, возвращаемых клиенту, в SQL Server в конце оператора SELECT предусмотрен раздел:

FOR XML {RAW|AUTO|EXPLICIT}

1) Режим RAW (без обработки)

Создается иерархический текст XML, в котором каждая строка возвращаемых данных преобразуется в одну строку с элементом <row .. />. Название поля определяет название атрибута, а значение столбца – значение атрибута. В запросе можно использовать раздел GROUP BY. Режим RAW лучше всего использовать в тех случаях, когда клиент ожидает встретить плоские документы XML и ищет элементы-строки.
Прочитать остальную часть записи »

Работа с мультимножествами в SQL

1) Создание мультимножеств

MULTISET [< перечисление>]|MULTISET(< запрос>)|TABLE(< запрос>)

Пример:

MULTISET[14, 16, 17]
MULTISET(SELECT SNum FROM SalesPeople)

Прочитать остальную часть записи »

Работа с NULL-значениями в SQL

1) Подмена NULL-значений

Для замены NULL-значения на «реальное» значение предусмотрена функция COALESCE:

COALESCE (< выр1>[, < выр2>, …], < результат>)

Если < выр1> не NULL, то оно является результатом функции, иначе проверяется < выр2> и так далее. Если же все < выр1>, < выр2>, … равны NULL то возвращается < результат>.
Прочитать остальную часть записи »

Организация ветвлений (case) в SQL

Для организации ветвлений в SQL-92 включен оператор CASE, который может использоваться там, где допускается ссылка на столбец. Предусмотрено две варианта его реализации.

1 Вариант

CASE {WHEN < условие> THEN < выр1>|NULL} [ELSE < выр2>|NULL]

Прочитать остальную часть записи »

Раздел объединения запросов в SQL

Виды объединений запросов:

1) UNION

< запрос1> UNION [ALL|DISTINCT] < запрос2>

Прочитать остальную часть записи »

Раздел ORDER BY при составлении запроса в SQL

Этот раздел предназначен для представления строк результирующих запроса в определенном порядке. Можно указать возрастающий – ASC (действует по умолчанию) или убывающий – DESC порядок сопоставления для каждого из перечисленных столбцов.

Если указано несколько столбцов, то внутри упорядочения данных по одному столбцы производится сортировка по последующему. Столбцы, по которым производится сортировка, можно задавать их именами, если запрос не содержит предложения UNION или арифметических выражений. В противном случае вместо имени столбца указывают его порядковый номер в списке имен выходных столбцов запроса.
Прочитать остальную часть записи »

Раздел GROUP BY при составлении запроса в SQL

Этот раздел предназначен для объединения результатов запроса в группы и расчета для каждой из них статистических значений. Иногда используют термин «сгруппированная таблица».

Синтаксическая форма
GROUP BY [{ROLLUP|CUBE|GROUPING SET}] (< список столбцов>) [HAVING < предикат>]
Прочитать остальную часть записи »

Вложенные и связанные подзапросы в SQL, предикат EXISTS

1) Вложенные подзапросы

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

Виды условий поиска:
• Сравнение с результатом вложенного запроса (=, <>, < , <=, >, >=)
• Проверка на принадлежность результатам подзапроса (IN)
• Проверка на существование (EXISTS)
• Многократное (количественное) сравнение (ANY, ALL)
Прочитать остальную часть записи »

Виды предикатов в SQL

1) Сравнения (отношения)
< конструктор значений строки> [NOT] {=|>|< |>=|< =|<>}|(< подзапрос>) < конструктор значений строки>

Сравниваются два множества, одно из которых – это обычно значение столбца, а другое – чаще всего константа или подзапрос. Значения. Которые при этом сравниваются, называют скалярными.
Прочитать остальную часть записи »

Выборка данных из таблицы в SQL (разделы SELECT, FROM и WHERE)

Выборка данных из таблицы в SQL осуществляется с помощью следующей конструкции:
SELECT [DISTINCT|ALL] *|< имена столбцов>
[AS < новые имена>] FROM < имена таблиц> [< псевдонимы>] [< условие внешнего объединения таблиц>] [WHERE < предикат> [AND < условие внутреннего объединения таблиц>]]
[GROUP BY [ROLLUP|CUBE|GROUPING SET(< список столбцов>)]|< список столбцов> [HAVING < предикат>]]
[ORDER BY < список имен|номеров столбцов> [COLLATE < список сопоставления>][ASC|DESC]]
Прочитать остальную часть записи »

Обновление (слияние) данных в SQL

Обновление (слияние) данных в SQL осуществляется с помощью следующей конструкции:
MERGE INTO {< имя таблицы>|< представления>} [[AS]< псевдоним>|USING < таблицу> [[AS] < псевдоним>] ON < предикат>
MERGE INTO {< имя таблицы>|< представления>} [[AS]< псевдоним>|USING < таблицу> [[AS] < псевдоним>] ON < предикат> WHEN MATCHED THEN UPDATE SET < имя столбца>=< выражение для определения столбца>|DEFAULT,…
MERGE INTO {< имя таблицы>|< представления>} [[AS]< псевдоним>|USING < таблицу> [[AS] < псевдоним>] ON < предикат> WHEN MATCHED THEN UPDATE SET < имя столбца>=< выражение для определения столбца>|DEFAULT,… WHEN NOT MTCHED THEN INSERT [(< список столбцов>)] VALUES (< конструктор таблицы>)
Прочитать остальную часть записи »

Удаление строк из таблицы в SQL

Удаление строк из таблицы в SQL осуществляется с помощью следующей конструкции:
DELETE FROM < имя таблицы> [WHERE < предикат>|CURRENT OF < имя курсора>]

Примечания:
• CURRENT OF применяется для встроенного SQL.
• Предикат может включать запросы и запросы с подзапросами.
Прочитать остальную часть записи »

Изменение значений столбцов таблицы в SQL

Изменение значений столбцов таблицы осуществляется с помощью следующей конструкции:
UPDATE < имя таблицы> SET < имя столбца>=< выражение для определения столбца>|NULL|DEFAULT,…
[WHERE < предикат>|CURRENT OF < имя курсора>]

Примечания:
• CURRENT OF применяется для встроенного SQL.
• В предложении SET можно использовать скалярные выражения.
• В предложении SET можно использовать значение NULL или DEFAULT, если оно было указано для данного столбца в операторе CREATE TABLE.
• Предикат может включать запросы и запросы и подзапросами (через предикат).
• Можно присваивать значения столбцов друг другу.
Прочитать остальную часть записи »

Добавление строк в таблицу в SQL

Добавление строк в таблицу осуществляется с помощью следующей конструкции:
INSERT INTO < имя таблицы> {[(< список стобцов>)}{VALUES(< конструктор значений таблицы>)|< запрос>}|DEFAULT VALUES}

Примеры:
Insert Into SalesPeople Values (1001, ‘Peel’, ‘London’, 0,12);
Insert Into Customer Values (2001, ‘Hoffman’, ‘London’, 100, 1001);
Insert Into Orders Values (3001, 18.69, ‘03/10/1990’, 2008, 1007);
Прочитать остальную часть записи »

Конструкторы значений строк и таблиц в SQL

Этот раздел относится к DML – язык манипулирования данными.

• Конструктор значений строки — одно или несколько значений, включая NULL и DEFAULT, заключенные в скобки.
Пример: {2001, ‘Hoffman’, DEFAULT, NULL}

• Конструктор значений таблицы – набор конструкторов строк, предваряемых ключевым словом VALUES.
Пример: VALUES (2001, ‘Hoffman’, ‘London’, 100), (2002, ‘Giovanni’, ‘Rome’, 200), …

Сеансы (сессии) работы в SQL

Работа с БД происходит сессиями, начиная с момента подключения клиента и до разрыва соединения.

Установление связи с СУБД
CONNECT TO {< спецификация среды>[AS < имя подключения>][USER < имя пользователя>]|DEFAULT}

Спецификация среды зависит от конкретной реализации сервера, используемого протокола обмена и т.п. обычно включает имя БД.
Прочитать остальную часть записи »

Управление транзакциями в SQL

1) Запуск транзакций
В соответствии со стандартом транзакция начинается после поступления первого оператора, изменяющего данные в БД, и заканчивается оператором Commit или Rollback.

Примечание:
В MS SQL Server используется режим явного указания начала транзакций с помощью оператора:
Begin Transaction
Для распределенной транзакции:
Begin Distributed Transaction
Прочитать остальную часть записи »

Создание роли в SQL

Роли относятся к разделу DDC – язык управления данными.

1. Создание роли
Роль является носителем привилегий.
CREATE ROLE < имя роли>
[WITH ADMIN {CURRENT_USER|CURRENT_ROKE}]
SET ROLE {NONE|< имя роли>}

Примечания:
WITH ADMIN {CURRENT_USER|CURRENT_ROLE} – Роль создается для текущего пользователя или роли и наделяется правом создавать новые роли.
NONE – Присваивает текущему сеансу текущую роль CURRENT_ROLE.
Прочитать остальную часть записи »

Схемы в SQL

1) Понятие схемы
Схемой называется поименованная группа связанных объектов БД.
Создатель схемы становится ее владельцем и управляет использованием объектов схемы (включая предоставления прав на объекты).

2) Создание схем
CREATE SCHEMA < имя схемы>|AUTHORIZATION
< идентификатор владельца>
[DEFAULT CHARACTER SET …]
[CREATE DOMAIN…, CREATE TABLE …, …]
Прочитать остальную часть записи »

Представления в SQL

1) Понятие представления
Представления (View) – это объекты БД, которые не содержат собственных таблиц, но их содержимое берется из других таблиц или представлений посредством выполнения запроса.

2) Создание представлений
CREATE [RECURSIVE] VIEW
< имя представления > [(< список столбцов>)]
AS < запрос>
[WITH [CASADED|LOCAL] CHECK OPTION]
Прочитать остальную часть записи »

Индексы в SQL

1) Понятие индекса
Индекс – это средство, обеспечивающее быстрый доступ к строкам таблицы на основе значений одного или нескольких столбцов.

Много разнообразия в этом операторе, ибо он не стандартизуется, поскольку стандарты не касаются вопросов производительности.
Прочитать остальную часть записи »

Вычисляемые столбцы в SQL

Конструкция для создания вычисляемого столбца в SQL:
< имя колонки> [< тип данных>]
GENERATED ALWAYS AS (< выражение>)
[< ограничение столбца>]
Прочитать остальную часть записи »

Уникальные значения в SQL

Для уникальной идентификации записей таблицы в современных СУБД имеют специальные встроенные средства.
Как и в desktop СУБД используются автоинкрементные поля.
Однако есть и специальные операторы.
Прочитать остальную часть записи »

Утверждения в SQL

Утверждения накладывает ограничение на содержимое всей БД, т.е. ограничивает содержимое нескольких таблиц, а также отношения между таблицами.
Затраты на выполнение проверок, связанных с утверждениями, бывают очень значительными.

1) Создание утверждения
CREATE ASSERTION < имя утверждения>
CHEK < предикат>
[[NOT] DEFERRABLE]
[INITIALLY IMMEDIATE|DEFERRED]
Прочитать остальную часть записи »

Таблицы в SQL

1) Создание структуры таблицы
CREATE [{GLOBAL|LOCAL} TEMPORARY]
TABLE < имя таблицы>
[LIKE < имя таблицы> [< опции копирования>]]|
(< определение столбцов> [< , ограничения таблицы>])|
[AS < запрос> [WITH [NO] DATA]]
Прочитать остальную часть записи »

Домены (области значений) в SQL

1) Понятие домена
Домен или область допустимых значений столбца определяет пользовательский тип данных и позволяет дополнительно указать:
a) Значение по умолчанию.
b) Ограничения на значения.
c) Правила проверки ограничений.
d) Время проверки ограничений.
e) Правила сравнения (для символьного типа).
Прочитать остальную часть записи »

Наборы символов в SQL

1) Понятие и особенности набора символов
В понятие набора символов входит совокупность символов (repertoire), форма использования (form-of-use) и способ сопоставления (collation).
Форма использования определяет способ представления символов в БД.
Способ сопоставления – способ их упорядочения.
Прочитать остальную часть записи »

Идентификаторы в SQL

Идентификаторы – это имена различных объектов, хранящихся в БД. В соответствии со стандартом идентификатор – это уникальная в пределах схемы последовательность из букв, цифр и знаков подчеркивания длиной до 128 символов, начинающаяся с буквы.
Прочитать остальную часть записи »




Статистика