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

SQL/CLI: JDBC (Java DataBase Connectivity)

Общие сведения о JDBC
JDBC — это набор реляционных объектов и методов взаимодействия с источниками данных. JDBC является частью пакета API Enterprise JavaSoft и, следовательно, частью реализации виртуальной машины Java(JVM).
Прочитать остальную часть записи »

SQL/CLI: ODBC (Open DataBase Connectivity)

История создания
Если в 1970-80 г.г. фактически каждый разработчик предоставлял пользователю средства разработки приложений с технологией доступа к своим СУБД, то с конца 80-х годов все существенно изменилось. В 1989 году была образована группа SQL Access Group (SAG), объединившая 42 компании, производящие СУБД и инструментальные средства к ним. Основной задачей этой группы является создание спецификаций форматов и протоколов для коммуникаций в системах БД с архитектурой клиент/сервер на основе спецификаций удаленного доступа к БД (Remote Database Access – RDA). Соответствующие стандарты были разработаны – SQL/CLI.
Прочитать остальную часть записи »

Параметры в программах на SQL

Описанный в предыдущей статье (использование языка SQL в Delphi) способ изменения программы на SQL во время выполнения приложения неудобен тем, что он предъявляет весьма высокие требования к квалификации пользователя приложения: он должен знать структуру файлов и владеть языком. Конечно, за это он имеет в своем распоряжении всю мощь языка и обширные возможности для поиска данных. Имеется и третья возможность: программа на SQL может содержать формальные параметры и пользователь приложения, не меняя структуру программы, может с помощью фактических параметров формулировать разные запросы.
Прочитать остальную часть записи »

ASP (Active Server Pages) — общие сведения и особенности

1) Общие сведения об ASP
ASP (Active Server Pages) – это технология программирования, позволяющая создавать на Web-сервере (с IIS, 1997 г.) динамические интерактивные Web-страницы. ASP представляет собой файлы с расширением *.Asp, содержащие смесь кода HTML, кода сценариев на языке VBScript или JavaScript, средств доступа к БД (ADO), управления внешними COM-объектами и внутренних объектов ASP. Эта технология впервые была реализована в Web-сервере IIS фирмы Microsoft и фактически является интерпретируемым вариантом ISAPI-расширения сервера.
Прочитать остальную часть записи »

Связь веб-клиента с СУБД по API (Application Programming Interface)

1) Общие сведения об API

API (Application Programming Interface) — это расширение Web-сервера запускается как многопоточная динамическая библиотека (DLL), выполняющее обработку каждого вызова сервера в обычном процессе Web-сервера, что значительно проще, чем создание отдельного процесса для каждого клиентского запроса.
Прочитать остальную часть записи »

CGI (Common Gateway Interface)

1) Общие сведения о CGI
С 1993 года CGI является очень часто используемой технологией создания трехзвенных клиент/серверных приложений в Интернет. CGI-приложение совместно с Web-сервером выполняют роль сервера приложений в трехзвенной архитектура клиент/сервер. CGI – набор правил (спецификация), согласно которым пользовательские программы, запускаемые на Web-сервера, могут возвращать данные клиенту в виду HTML-документа. CGI – это консольное приложение, загружаемое в ответ на запрос клиента на выборку или обновление данных, функционирующее как отдельный однопоточный процесс под управлением Web-сервера и выгружаемое сразу после завершения работы. WinCGI – Windows реализация CGI.
Прочитать остальную часть записи »

Особенности работы СУБД в WEB

Возможность доступа к БД с помощью Web существенно изменила стратегии доступа к данным из-за того, что:
• Количество пользователей может не только существенно варьироваться, но и изменяться без предупреждения. В обычных клиент/серверных приложениях администраторы могут контролировать число пользователей и возможность их доступа к данным.
Прочитать остальную часть записи »

Объявление пакета в SQL, понятие уровней строгости

1. Понятие пакета
В СУБД Oracle, начиная с 7 версии, предусмотрена возможность создания пакетов, представляющих по существу коллекцию функций, процедур, констант, пользовательских типов данных, переменных, курсоров, исключительных ситуаций. Пакет включает спецификацию пакета и его тело. Объекты, объявленные в спецификации, являются общедоступными. Тело пакета включает реализацию общедоступных объектов, а также объявление и реализацию приватных объектов. Пакет можно сделать невыгружаемым из памяти. Помещая в пакет наиболее часто используемые процедуры и функции, можно существенно повысить быстродействие системы.
Прочитать остальную часть записи »

Триггеры, объявление и назначения триггеров в SQL

Понятие триггера

Триггер – это подпрограмма, похожая на процедуру БД, автоматически вызываемая СУБД при изменении, удалении или добавлении записи в таблице. К триггерам невозможно обратиться из программы, передать им параметры или получить от них результат. Наиболее часто триггеры применяются для поддержания ссылочной целостности и каскадных операций в БД. Ссылочные спецификации, определяющие каскадные действия при удалении и обновлении и создаваемые при объявлении таблиц, также реализуются через триггеры, однако текст этих триггеров не редактируется.
Прочитать остальную часть записи »

Табличные функции в SQL

Понятие табличных функций
В SQL:2003 специфицированы табличные функции, т.е. функции, вызываемые из SQL и возвращающих результат «таблицу». Поскольку в SQL нет типа таблица, то фактически результатом табличной функции является мультимножество (типом элементов которого является анонимный строчный тип). Однако к результату табличной функции можно адресовать запросы таким же образом, как и к таблица. В синтаксических конструкциях для определения и вызова табличных функций предусмотрено ключевое слово TABLE.
Прочитать остальную часть записи »

Внешние функции в SQL

1) Понятие внешней функции
SQL/PSM разрешает для определения тела подпрограммы использовать код, написанный на широко известных HOST-языках программирования. Под внешней функцией понимается функция, написанная на одном из HOST-языков программирования и специальным образом подключенная к БД.
Прочитать остальную часть записи »

Встроенные и хранимые функции в SQL

Встроенные (системные) функции

1) Список стандартных функций

ФункцияВозвращаемый результат
Bit_Length(< строка>)Количество битов в < строке>
Cast(< значение> As < тип данных>)< значение>, преобразованное в указанный < тип данных>
Char[acter]_Length(< строка>)Длина < строки> символов
Convert(< строка> using < функция>)< строка>, преобразованная в соответствии с указанной < функцией>
Current_DateТекущая дата
Current_Time(< точность>)Текущее время с указанной < точностью>
Current_TimeStamp(< точность>)Текущая дата и время с указанной < точностью>
Extract(< часть> from < значение>)Указанная < часть> (Day, Hour и т.п.) из < значения> даты
Lower(< строка>)< строка>, преобразованная к нижнему регистру
Octet_Length(< строка>)Число байтов в < строке>
Position(< строка1> in < строка2>)Позиция, с которой < строка1> входит в < строку2>
Substring(< строка> from for < длина>)Часть < строки>, начинающаяся с позиции и имеющая указанную < длину>
Trim(Leading|Trailing|Both < символ> from < строка>)< строка>, у которой удалены ведущие | концевые | с обоих сторон < символы>
Upper(< строка>)< строка>, преобразованная к верхнему регистру
UserОпределяет идентификатор пользователя


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

Особенности промышленных серверов при работе с процедурами SQL

InterBase/Firebird

1) Процедуры действия

CREATE PROCEDURE < имя процедуры> [(< имя параметра>< тип данных>[(< размер>)],…)] [RETURNS (< имя параметра>< тип данных>[(< размер>)],…)] AS [DECLARE VARIABLE < имя переменной>< тип данных>[(< размер>)];]
BEGIN
<SQL-операторы>
END

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

Работа с процедурами SQL в Delphi

1) Основные свойства компонента TStoredProc
StoredProcName :Strings – позволяет с помощью встроенного компонента ComboBox указать имя хранимой процедуры.
Params :TParams — позволяет указать типы и значения входных и выходных параметров, если таковые есть.
Прочитать остальную часть записи »

Особенности процедур — преимущества и трудности при работе с ними

1) Повышение скорости работы БД

→ Процедуры хранятся в скомпилированном виде, а значит, СУБД не тратит время на компиляцию запроса при каждом его исполнении.
→ Команда для вызова хранимой процедуры значительно короче, чем запрос, содержащийся в коде приложения, поэтому требуется меньше времени и трафика на передачу операторов на сервер БД.
→ Быстродействие хранимых процедур обусловлено еще и тем, что после вызова они загружаются в память и выгружаются из нее с учетом алгоритма вытеснения по давности использования. В Oracle размер памяти для КЭШа хранимых процедур оказывается в файле Init.Ora.
→ С помощью автоматической или ручной перекомпиляции изменяют плана выполнения из-за изменения индексов и т.п. В СУБД SQL Server при создании процедуры предусмотрена опция WITH RECOMPILE, используемая как при создании, так и при вызове процедур.
Прочитать остальную часть записи »

Кодировка в MySQL 4.1 : русские кодировки koi8r, windows 1251

Несколько слов о кодировках в MySQL 4.1 (но не 4.0).

Самое приятное в версии 4.1 то, что кодировки в которых работают клиент и сервер можно указывать отдельно. Поэтому для смены кодировки пересобирать сервер совсем не обязательно.
Настройка клиентов через my.cnf
Прочитать остальную часть записи »

Протоколирование SQL-запросов : log-file, протокол, MySQL запросы, отладка

Иногда, при отладке, очень хочется посмотреть, какие запросы получает MySQL-сервер. Узнать это очень просто: надо включить режим протоколирования.
Включаем протоколирование SQL-запросов

Пишем в /etc/my.cnf в секцию mysqld строчку:

[mysqld]
log = /var/log/MySQL.log

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

Хранимые процедуры в SQL

Объявление процедуры

CREATE PROCEDURE < имя процедуры> [({IN|OUT|INOUT} < имя параметра> < тип данных> [< размер>] [,…])]
[DYNAMIC RESULT SET < целое>]
BEGIN [ATOMIC]
<SQL-операторы>
END

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

Введение в SQL/PSM — объявление переменных, операторы циклов и т.д.

1. Объявление переменных

DECLARE < имя переменной> [DEFAULT < значение>]

Примечания: переменные могут иметь любой SQL-тип данных (использование доменов не предусмотрено). Особенностью этих переменных является то, что они могут хранить NULL-значения. В SQL Server имя локальной переменной предваряется символом @, а глобальной — @@.
Прочитать остальную часть записи »

Использование API для доступа к БД

В ряде СУБД при разработке приложений используются библиотеки функций, представляющие собой интерфейс между прикладными программами и СУБД(Application Program Interface — API). В настоящее время существует много новых API для доступа к БД. Это ODBC, JDBC, OLE DB.
Прочитать остальную часть записи »

Динамический SQL в Delphi

1) Основные свойства компонента TQuery
SQL : TStrings – позволяет разместить в нем текст SQL-оператора.
Params[Index : Word] : TParams – позволяет указать значения параметров при многократных запросах.
Примечание: свойства SQL имеет методов Clear, Add, Append, LoadFromFile, LoadFromStream и ряд других для очистки свойства и помещения в него текста SQL-оператора.
Прочитать остальную часть записи »

Курсоры в SQL — способы объявления курсоров, связывание курсора с оператором

1) Способы объявления курсоров
• С помощью оператора DECLARE (объявленный), аналогичный рассмотренному нами ранее.
• Создан из ранее подготовленного оператора (выделенный курсор).

2) Связывание курсора с оператором

ALLOCATE < имя курсора> [INSENSITIVE][SCROLL] CURSOR FOR < имя оператора>

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

Способы передачи параметров во встроенном SQL

1) Переменные HOST-языка

Это простейший способ, основанный на применении раздела USING оператора EXECUTE. Число и типы данных переменных должны быть совместимы с типами данных соответствующих параметров. Если какая-нибудь переменная содержит отрицательное значение, то соответствующему маркеру параметра присваивается NULL-значение.
Прочитать остальную часть записи »

Операторы двухэтапного исполнения в динамическом SQL

Особенности оператора

Если в программе содержится много динамических операторов, то машинное время, затрачиваемое на одноэтапное выполнение операторов, может быть очень значительным.

Если выполняемые операторы похожи друг на друга, то расход машинного времени будет просто расточительным.
Прочитать остальную часть записи »

Динамический SQL, оператор одноэтапного исполнения

1. Причины разработки динамического SQL

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

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

Многооператорные инструкции и атомарность

Стандарт SQL-92 предусматривает возможность выполнения отдельных операторов в программе, написанной на HOST-языке.

Например, программа, вставляющая нового покупателя в таблицу и далее оформляющая на него заказ, на языке C может выглядеть как:

void main () {
exec sql insert into Customer
values (2009, ‘Hammer’, ‘New York’, 150);
/* Проверить SQLSTATE на ошибки */
exec sql insert into Orders
values (3012, 109.86, 15/12/1999, 2009, 1007);
/* Проверить SQLSTATE на ошибки */ }

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

Обработка NULL-значений во встроенном SQL

1) Проблемы работы с NULL-значениями
NULL – это специальные маркеры, определенные в SQL. Попытка присвоить NULL переменным HOST-языка приведет к ошибке, поскольку они не поддерживают NULL-значений. Для устранения таких ошибок используют индикаторы переменных. Их используют не только при чтении, но и при изменении данных в таблицах БД.
Прочитать остальную часть записи »

Курсоры в встроенном SQL

1) Понятие курсора
В интерактивном SQL однострочные и многострочные запросы не различаются. Во встроенном SQL эти запросы выполняются по-разному. Однострочные запросы возвращают одну строку и нами уже рассмотрены. Когда результатом выполнения запроса является не одна строка, встроенный SQL должен обеспечить прикладной программе возможность построчного получения результатов запроса. Для этого используются курсоры. Под курсором понимается переменная, связанная с запросом. Ее значением является каждая строка, удовлетворяющая запросу. Как и переменные, курсоры должны быть описаны перед их использованием. В отличие от представлений курсоры предназначены для построчной обработки.
Прочитать остальную часть записи »

Однострочный оператор SELECT во встроенном SQL

1) Синтаксическая форма

SELECT *|[DISTINCT|ALL] < список имен столбцов> INTO < список переменных> FROM < имена таблиц> [WHERE < предикат>]

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

Контроль ошибок во встроенном SQL

1) Особенности контроля ошибок
Во встроенном SQL за обработку ошибок отвечает прикладная программа. Для идентификации вида ошибки используют специальные переменные. SQL-операторы могут вызывать сообщения об ошибках двух типов.

2) Ошибки компиляции и выполнения
Ошибки компиляции
Подобные ошибки обнаруживаются препроцессором, программист получает соответствующее сообщение и может устранить ошибки и заново скомпилировать прикладную программу.
Ошибки выполнения
Ссылки на несуществующие столбцы, отсутствие разрешения на обновление таблицы и т.п. могут быть обнаружены только во время выполнения.
Прочитать остальную часть записи »




Статистика