Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Теперь вернемся к синтаксису оператора SELECT.Содержание книги Поиск на нашем сайте § СписокКолонок задается списком простых или групповых выражений, разделенных запятой. При наличии в этом списке хотя бы одного группового выражения, если фраза 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...}
|
||
|
Последнее изменение этой страницы: 2016-06-23; просмотров: 207; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.108 (0.008 с.) |