КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Назначение и синтаксис оператора
Оператор выбора данных SELECT Оператор SELECT реализует все операции реляционной алгебры. В результате его выполнения формируется расчетная таблица, которая может включать данные из других таблиц или представлений (или запросов в СУБД Access) и расчетные поля. Синтаксис оператора SELECT имеет следующий вид: SELECT [ALL | DISTINCT] «список полей>|*) FROM < перечень исходных отношений (таблиц) [<тип связи>]> [WHERE <условие выборки записей или соединения>] [GROUP BY <список полей группировки >] [HAVING < условие выборки групп>] [ORDER BY <список полей, по которым упорядочить вывод>] Рассмотрим более детально основные фразы оператора SELECT. Ключевое слово SELECT сообщает СУБД, что эта команда – запрос. Все запросы начинаются этим словом с последующим пробелом. Затем следует список перечисленных через запятую столбцов, которые выбираются запросом из таблиц, или символ '*' (звездочка) для выбора всей строки или выражения для расчетных полей. Любые столбцы, не перечисленные здесь, не будут включены в результирующее отношение, соответствующее выполнению команды. Ключевое слово ALL (подразумевается по умолчанию) означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. Ключевое слово DISTINCT означает, что в результирующий набор включаются только различные строки, то есть дубликаты строк результата не включаются в набор. Символ *. (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса (такой запрос называется динамическим). В фразе FROM задаются имена таблиц и представлений (запросов в СУБД Access), используемых в качестве источника информации. В случае если указано более одного имени таблицы, неявно подразумевается, что над перечисленными таблицами осуществляется операция декартова произведения. Таблицам можно присвоить имена-псевдонимы (алиасы), что бывает полезно для осуществления операции соединения таблицы с самой собою или для доступа из вложенного подзапроса к текущей записи внешнего запроса. Для связывания таблиц используется фраза JOIN. Тип связи задается словами: LEFT/RIGHT(в запрос входят все записи из таблицы, стоящей в запросе слева/справа), INNER(входят только записи с совпадающими ключами связи). Пример задания базового запроса (выводит все поля базы) по базе строек. Select Stroiki.Ns, Stroiki.Ds, Stroiki.Ss, Stroiki.Fs, Stroiki.M, Stroiki.Em, Podrjdhiki.Np, Zakazhiki.Nz FROM “stroiki.DB“ Stroiki Inner Join “zakazhiki.db“ Zakazhiki ON (Stroiki.Kz = Zakazhiki.Kz) Inner Join “podrjdhiki.DB“ Podrjdhiki ON (Stroiki.Kp = Podrjdhiki.Kp) В результате выполнения запроса получается совокупность колонок, в заголовках которых могут находиться имена полей. Если нас не устраивают имена, формируемые по умолчанию, то можно назначить свои (псевдонимы), указав их после слова AS. В фразе ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении. Например, если первым полем списка будет указана Фамилия, а вторым Номер группы, то в результирующем отношении сначала будут собраны в алфавитном порядке студенты, и если найдутся однофамильцы, то они будут расположены в порядке возрастания номеров групп. В фразе WHERE задаются условия отбора строк результата или условия соединения кортежей исходных таблиц, подобно операции условного соединения в реляционной алгебре. В выражении условий фразы WHERE могут быть использованы следующие операции: Сравнения { =, <>, >,<, >=,<= }, которые имеют традиционный смысл. Between A and В – принимает значения между А и В. Предикат истинен, когда сравниваемое значение попадает в заданный диапазон, включая границы диапазона. Not Between A and В, который истинен тогда, когда сравниваемое значение не попадает в заданный интервал, включая его границы. IN (множество) – истинен тогда, когда сравниваемое значение входит в множество заданных значений. При этом множество значений может быть задано простым перечислением или встроенным подзапросом. NOT IN (множество), который истинен тогда, когда сравниваемое значение не входит в заданное множество. LIKE и NOT LIKE. Предикат LIKE требует задания шаблона, с которым сравнивается заданное значение, предикат истинен, если сравниваемое значение соответствует шаблону, и ложен в противном случае. Предикат NOT LIKE имеет противоположный смысл. В шаблон могут быть включены специальные символы: символ подчеркивания (_) – для обозначения любого одиночного символа; символ процента (%) – для обозначения любой произвольной последовательности символов; [n‑k]% – произвольная последовательность символов в интервале от n до k; остальные символы, заданные в шаблоне, обозначают самих себя. IS NULL – сравнение с неопределенным значением IS NULL. Неопределенное значение интерпретируется в реляционной модели как значение, неизвестное на данный момент времени. При сравнении неопределенных значений не действуют стандартные правила сравнения: одно неопределенное значение никогда не считается равным другому неопределенному значению. Для выявления равенства значения некоторого атрибута неопределенному применяют специальные стандартные операции: <имя атрибута>IS NULL и <имя атрибута> IS NOT NULL. Если в данном в данной строке указанный атрибут имеет неопределенное значение, то условие IS NULL принимает значение «Истина» (TRUE), а предикат IS NOT NULL – «Ложь» (FALSE), в противном случае условие IS NULL принимает значение «Ложь», а предикат IS NOT NULL принимает значение «Истина». Введение Null-значений вызвало необходимость модификации классической двузначной логики и превращения ее в трехзначную. Все логические операции, производимые с неопределенными значениями, подчиняются этой логике в соответствии с заданной таблицей истинности (Таблица 1.8.3.1). Таблица 1.8.3.1 Таблица истинности логических операций
В арифметическом выражении поле с неопределенным значением не трактуется как поле с нулевым значением и формируемый результат будет неопределенным! EXIST и несуществования NOT EXIST – относятся к встроенным подзапросам. В фразе GROUP BY <колонка>[,<колонка>...] задаются колонки (поля), по которым производится группирование выходных данных. Все записи таблицы, для которых значения колонок совпадают, отображаются в выборке единственной строкой. Группирование удобно для получения некоторых сводных характеристик (суммы, число записей, среднее) группы. В выражении могут использоваться собственные агрегатные функции, действующие “по вертикали”: среднее значение в группе (AVG),минимальное (MIN),максимальное (MAX),сумма (SUM),Количество строк или непустых значений полей, которые выбрал запрос (COUNT). Эта функция может иметь в качестве аргумента звездочку (COUNT (*)), что означает подсчет всех записей, попавших в выборку. Агрегатные функции могут применяться как в выражении вывода результатов строки SELECT, так и в выражении условия обработки сформированных групп HAVING. В этом случае каждая агрегатная функция вычисляется для каждой выделенной группы. Значения, полученные при вычислении агрегатных функций, могут быть использованы для вывода соответствующих результатов или для условия отбора групп. С функциями SUM и AVG могут использоваться только числовые поля. С функциями COUNT, MAX и MIN могут использоваться как числовые, так и символьные поля. При использовании с символьными полями МАХ и MIN и будут обрабатывать в алфавитном порядке. Нельзя использовать агрегатные функции в предложении WHERE, потому что условия оцениваются в терминах одиночной строки, а агрегатные функции – в терминах групп строк. В фразе HAVING < условие отбора группы > задаются критерий отбора сформированных в процессе выборки групп. В условие выборки фразы HAVING, прямо можно использовать только спецификации столбцов, указанных в качестве столбцов группирования в разделе GROUP BY. Остальные столбцы можно специфицировать только внутри спецификаций агрегатных функций COUNT, SUM, AVG, MIN и MAX, вычисляющих в данном случае некоторое агрегатное значение для всей группы строк. Аналогично обстоит дело с подзапросами, входящими в предикаты условия выборки раздела HAVING: если в подзапросе используется характеристика текущей группы, то она может задаваться только путем ссылки на столбцы группирования. Результатом выполнения фразы HAVING является сгруппированная таблица, содержащая только те группы строк, для которых результат вычисления условия поиска есть TRUE. В частности, если раздел HAVING присутствует в табличном выражении, не содержащем GROUP BY, то результатом его выполнения будет либо пустая таблица, либо результат выполнения предыдущих разделов табличного выражения, рассматриваемый как одна группа без столбцов группирования. Пример. Вывести число сотрудников, максимальную, среднюю, минимальную и итоговую зарплату по подразделениям (поле Podr) по таблице SOTRUDNIKI. SELECT podr, Count(*),Min(zarpl), Avg(zarpl), Max(zarpl), Sum(zarpl) From Sotrudniki Group By podr Order By podr Самый простой запрос SELECT без необязательных частей соответствует просто декартову произведению. Например, выражение SELECT * FROM Rl, R2 соответствует декартову произведению таблиц R1 и R2. Выражение SELECT Rl.A, R2.B FROM Rl. R2 соответствует проекции декартова произведения двух таблиц на два столбца А из таблицы R1 и В из таблицы R2, при этом дубликаты всех строк сохранены, в отличие от операции проектирования в реляционной алгебре, где при проектировании по умолчанию все дубликаты кортежей уничтожаются. В следующих примерах из [18, 19] используются базы данных: 1) «Поставки» с таблицами (ключевые поля подчеркнуты): S – поставщики (Номер_поставщика, Фамилия, состояние, Город); Р – детали (Номер_детали, Название, цвет, Вес, Город).; SP – поставки деталей (Номер_поставщика, Номер_детали, Количество); J – изделия (Номер_изделия, Название, Город); SPJ поставка деталей для изделий – (Номер_поставщика, Номер_детали, Номер_изделия, Количество). 2) «Сессия» из [19]: R1 – результаты сессия (ФИО, Дисциплина, Оценка); R2 – список студентов (ФИО, Группа); R3 – список учебных дисциплин по группам (Группы, Дисциплина); R4 – результаты лабораторных работ (ФИО, Дисциплина, Номер_лаб_раб, Оценка).
Дата добавления: 2014-12-10; Просмотров: 670; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |