Выбор данных u1080 из таблиц. Команда SELECT
Выборка данных из БД является наиболее распространенной операцией SQL. Обращение к базе данных называется запросом и для его реализации необходимо использовать команду SELECT. Базовая команда (предписание) SELECT состоит из двух частей, носящих названия клауз (clause):
SELECT некоторые данные (имя (имена) колонки) FROM таблица или некоторые таблицы (имя (имена) таблицы);
Клауза SELECT всегда вводится первой, а за ней следует клауза FROM. Вывод запрошенной информации в данном случае (спецификация вывода не определена) осуществляется на экран дисплея. Рассмотрим выборку данных в таблицах DEPT и ЕМР, используя некоторые простые запросы SQL. Простейший пример - вывести все строки и колонки таблицы DEPT. Команды SQL, обеспечивающие этот запросы, следующие (строки после последовательности дефисов являются комментарием, не входят в исходный текст и не должны вводиться в диалоге):
SELECT DEPTNO,DNAME,LOC --- вводит пользователь! FROM DEPT; ---то же...
SELECT-запрос возвращает значение (в отличие от других, описанных ниже, SQL-предписаний). Обычно SQL-запрос возвращает множество строк (в частном случае ни одной), причем указатель (обычно реализованный в виде стрелки или цветовой подсветки определенной строки) в каждый момент указывает на одну из них. В вышеприведенном примере запроса были перечислены имена всех колонок таблицы DEPT (а именно DEPTNO, DNAME, LOC) в клаузе SELECT. Обычно при задании всех колонок можно использовать звездочку (*) как сокращение списка имен:
SELECT * FROM EMP; --- конец команды
Для удобства восприятия текста часто разделяют большинство команд SQL на несколько строк и печатают их большими буквами для простоты чтения. Однако, при желании, можно набирать команды и в одной строке большими или маленькими буквами. Конец отдельной команды SQL идентифицируется точкой с запятой. Когда интерпретирующая SQL система обнаружит ее, он запустит команду на исполнение (интерпретацию). В некоторых системах (в том числе Delphi / C++Builder) точка с запятой необязательна. SELECT-запрос возвращает некоторое множество (возможно, пустое) строк, именуемое курс о ром. Возникает естественный вопрос - кто 'принимает' это значение (с целью последующей обработки) в прикладной программе? Для связи SQL с пользовательской программой (написанной на конкретном языке программирования) используется клауза INTO:
SELECT некоторые данные (имя (имена) колонки) INTO куда копировать возвращаемые SELECT’ом данные FROM таблица или некоторые таблицы (имя (имена) таблицы);
Часто используемая клауза FETCH используется для выборки первой записи курс о ра, присвоения значений столбцов этой записи переменным, перечисленным в клаузе INTO, и перемещения указателя на следующую строку курс о ра. Таким образом, последовательно применяя FETCH, можно запомнить значение любой записи из возвращенных по запросу. Во многих системах программирования имеются ‘родные’ функции, по функциональности аналогичные FETCH. Кроме того, в реальной исполняющей системе каждое SQL-предписание возвращает код окончания операции (в переменной SQLCODE, для Fortran’а - SQLCOD); причем нулевое значение этой системной переменной информирует о успешности выполнения SQL-предписания, положительное - о возникновении некоторой исключительной ситуации, отрицательное – о невозможности выполнения запроса. В стандарте SQL/92 введена (предпочтительная) строковая переменная SQLSTATE, для Fortran’а - SQLSTA) из 5-ти символов, причем первые 2 символа - дают общую информацию (class) об ошибке, следующие 3 символа (subclass) уточняют описание.
|