русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Теперь вернемся к синтаксису оператора SELECT.


Дата добавления: 2013-12-23; просмотров: 870; Нарушение авторских прав


§ СписокКолонок задается списком простых или групповых выражений, разделенных запятой. При наличии в этом списке хотя бы одного группового выражения, если фраза GROUP BY отсутствует в SELECT-операторе, то имеется в виду полная группировка – результат однострочная таблица (или пустая).

Если надо включить все колонки FROM-таблиц, то качестве элемента СпискаКолонок можно использовать [ПсевдонимТаблицы.]*

Имена колонок результирующей таблицы:

§ совпадает с именем поля, если оно и использовано в качестве простого выражения в СпискеКолонок,

§ генерируется системой,

§ либо может быть объявлено явно: приписать после выражения СпискаКолонок – AS Имя

§ КлючГруппировки задается списком (через запятую) возможно уточненных имен полей FROM-таблиц.

§ КлючУпорядочения задается списком (через запятую) имен полей результирующей таблицы или порядковыми номерами этих полей в СпискеКолонок. Для любой колонки можно указать невозрастающий порядок: приписать после элемента КлючаУпорядочения – DESC (по умолчанию имеется в виду неубывающий).

§ WHERE-УсловиеОтбора не может содержать групповых выражений (что вполне естественно, т.к. оно проверяется до группировки).

§ HAVING-УсловиеОтбораПослеГруппировки может быть любым выражением вида «условие».

ПРИМЕРЫ.

§ Решение задачи «о крупных поставках».

SELECT Psts.ImPst, Pst.Kol FROM Pst, Psts

WHERE (Psts.KPst=Pst.KPst) AND

(Pst.KDet=1010) AND (Pst.Kol>1000)

§ Для каждой детали - количество разных поставщиков уже поставивших эту деталь.

SELECT KDet,COUNT(DISTINCT KPst) AS KolPst

FROM Pst GROUP BY KDet

§ Для каждой детали - количество партий этой детали уже полученных от всех поставщиков.

SELECT MAX(Det.ImDet), Det.KDet, COUNT(*) AS KolP

FROM Det,Pst WHERE Det.KDet=Pst.KDet

GROUP BY Det.KDet ORDER BY 1

Замечание: MAX пришлось использовать по техническим причинам – InterBase «не любит неключевые поля там».



§ Договора, по которым есть поставки.

SELECT DISTINCT Dog.* FROM Dog,Pst

WHERE (Dog.KPst=Pst.KPst)AND(Dog.KDet=Pst.KDet)

Замечание: Задачу решает декартово произведение с выборкой (естественное соединение), DISTINCT исключает повторы, появляющиеся от декартова произведения.

§ Договора, по которым нет поставок.

SELECT Dog.* FROM Dog

WHERE NOT EXISTS (

SELECT Pst.* FROM Pst

WHERE (Dog.KPst=Pst.KPst)AND(Dog.KDet=Pst.KDet))

§ Перевыполнения по договорам.

SELECT Dog.KPst,Dog.KDet, SUM(Pst.Kol)-MAX(Dog.Kol)

FROM Dog,Pst

WHERE (Dog.KPst=Pst.KPst)AND(Dog.KDet=Pst.KDet)

GROUP BY Dog.KPst,Dog.KDet

HAVING SUM(Pst.Kol)>Dog.Kol

Замечание: опять пришлось использовать MAX по техническим причинам.

¨ INSERT (вставка).

¨ DELETE (удаление).

¨ UPDATE (обновление).


3.2. Record-ориентированные средства обработки БД. Средства обработки баз данных в Delphi.

Delphi - инструментальная среда разработки Object Pascal - программ. Delphi предоставляет программистам-разработчикам:

§ набор объектно-ориентированных библиотек, поэтому программирование в Delphi это, во многом существенном, сборка программ из готовых компонентов;

§ визуальные средства сборки программ.

VCL (Visual Component Library) – основной комплекс объектно-ориентированных библиотек Delphi. Предназначенные для работы с базами данных Delphi-средства во многом основаны на представлении данных, принятом в процессоре баз данных BDE(*).

Класс TDatabase. Объект этого типа обеспечивает соединение с (одной) базой данных.

§ property AliasName: String;

Задает внешний псевдоним, под которым база данных зарегистрирована в администраторе BDE. Использование псевдонимов позволяет обеспечить независимость Delphi-приложения от физического места хранения БД.

§ property DatabaseName: string;

Задает внутренний псевдоним, под которым БД будет известна только Delphi-приложению в периоде его выполнения. См. свойство Params.

§ property Params: TStrings;

Развитые СУДБ имеют средства контроля прав доступа к БД (DCL), SQL-сервер InterBase при соединении с БД запрашивает «Имя пользователя» и «Пароль». Свойство Params позволяет «привязать» эту информацию к внутреннему псевдониму БД. Если Delphi-приложение ссылается на БД по внутреннему псевдониму, то запрос прав доступа можно «скрыть».

§ property LoginPrompt: Boolean;

Если LoginPrompt= TRUE, то SQL-серверзапрашивает (повторное) подтверждение прав доступа.

§ property Connected: Boolean;

Это свойство позволяет включить-отключить-проверить соединение с БД.

Класс TTable. Объект этого типа обеспечиваетсвязь и выполнение операций с таблицей. Важнейшие свойства, методы и события этого класса унаследованы им от своего предка - класса TDataSet («абстрактная таблица»).

¨ Параметры связи с таблицей.

§ property DatabaseName: String;

Указывает (внутренний) псевдоним базы данных.

§ property TableName: TFileName;

Указывает имя таблицы в этой базе данных.

¨ Средства работы с таблицей на уровне записей (строк).

Как отмечалось выше - BDE является ядром СУБД, поэтому предоставляет типовой набор средств обработки таблиц в клиентском приложении (т.е. не SQL-сервером, а «на стороне клиента», на рабочей станции).

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

§ property Active: Boolean;

procedure Open; procedure Close;

Свойство Active позволяет открыть и закрыть таблицу или проверить, открыта ли она. Открыть и закрыть можно также с помощью методов Open и Close.

§ procedure First; procedure Last;

procedure Next; procedure Prior;

Эти методы позволяют перемещать маркер текущей строки – на первую, последнюю, следующую и предшествующую строки.

§ property Eof: Boolean; property Bof: Boolean;

Eof – известная по языку Паскаль функция, Bof – аналогичная: принимает значение TRUE, когда маркер текущей строки перемещен в другой конец за пределы таблицы.

§ property RecNo: Integer; {номер текущей строки}

property RecordCount: Longint; {количество строк}

§ procedure Append; {добавить пустую строку в конец}

procedure Delete; {удалить текущую строку}

§ Доступ к полям текущей строки таблицы.

function FieldByName(const FieldName:string):TField;

Этот метод по имени поля «FieldName» возвращает значение класса TField, который мы рассмотрим далее.

Отметим важное обстоятельство: в приложении может быть несколько одновременно активных объектов типа TTable, связанных с одной и той же таблицей БД. Возникает впечатление, что «объект работает с собственной копией таблицы», однако это не совсем так. Каждый объект имеет действительно «собственный» маркер текущей строки, который только он может перемещать по строкам таблицы, реальная таблица у таких объектов общая, поэтому операции вставки-удаления-изменения, выполненные одним объектом, «видны» всем другим.

¨ Средства локального управления доступом к данным.

§ procedure Post; override;

procedure Cancel;

Изменения, проведенные в текущей строке таблицы, фактически хранятся в буфере. Только после подтверждения (Post) строка в таблице реально обновляется (для чего, в случае SQL-серверной базы данных, Post пошлет соответствующий запрос). Cancel позволяет «откатить» изменения в текущей строке (еще до запроса к SQL-серверу). Post (а в некоторых ситуациях, наоборот - Cancel) неявно отрабатывает в каждом действии, «покидающем» измененную текущую строку (потому что «заложен» в реализующей процедуре) (*).

§ procedure Refresh;

Конкретный объект TTable может «не заметить» изменений в таблице, проведенных «помимо него окольным путем». Метод Refresh позволяет «освежить» его сведения о реальном хранилище данных.

Класс TField. Объекты этого типа обеспечивают работу с полями «абстрактной таблицы» TDataSet. Поля не создаются отдельно, они входят в состав TDataSet (TTable или TQuery)(**). В программе доступ к полям «абстрактной таблицы» можно получить, используя метод FieldByName класса TDataSet.

Свойства класса TField для присваивания-извлечения значения поля и приведения его к подходящему типу:

property Value:Variant; property AsString:string; {и другие As...}



<== предыдущая лекция | следующая лекция ==>
Выражения в SQL. | Индексные файлы и их использование.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.