Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 143; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.69.107 (0.01 с.) |