Отбор данных из одной таблицы
Пример 6. Выбрать все данные (ставим *) из таблицы Р (ключевые слова SELECT … FROM …): SELECT *FROM P;Замечание. В результате получим новую таблицу, содержащую полную копию данных из исходной таблицы P. Пример 7. Выбрать все строки (ставим *) из таблицы Р, удовлетворяющих некоторому условию (ключевое слово WHERE …) (где в поле PNUM стоит значение, большее 2): SELECT *FROM PWHERE P.PNUM > 2;Замечание. В качестве условия в разделе WHERE можно использовать сложные логические выражения, использующие поля таблиц, константы, сравнения (>, <, = и т.д.), скобки, союзы AND (и) и OR(или), отрицание NOT (не). Пример 8. Выбрать значения некоторого поля (например, все значения (*) поля NAME) из исходной таблицы Р (указание списка отбираемых колонок): SELECT P.NAMEFROM P;Замечание. В результате получим таблицу с одной колонкой, содержащую все наименования поставщиков. Замечание. Если в исходной таблице присутствовало несколько поставщиков с разными номерами, но одинаковыми наименованиями, то в результатирующей таблице будут строки с повторениями - дубликаты строк автоматически не отбрасываются. Пример 9. Выбрать некоторые колонки из исходной таблицы, удалив из результата повторяющиеся строки (ключевое слово DISTINCT): SELECT DISTINCT P.NAMEFROM P;Замечание. Использование ключевого слова DISTINCT приводит к тому, что в результатирующей таблице будут удалены все повторяющиеся строки. Пример 10. Использование скалярных выражений и переименований колонок в запросах (ключевое слово AS …): SELECTTOVAR.PRICE,"=" AS EQU,TOVAR.KOL*TOVAR.PRICE AS SUMMAFROM TOVAR;В результате получим таблицу с колонками, которых не было в исходной таблице TOVAR:
Пример 11. Упорядочение результатов запроса (ключевое слово ORDER BY …):
В результате получим следующую таблицу, упорядоченную по полю DNUM:
Пример 12. Упорядочение результатов запроса по нескольким полям с возрастанием или убыванием (ключевые слова ASC, DESC): SELECTPD.PNUM,PD.DNUM,PD.VOLUMEFROM PDORDER BY DNUM ASC,VOLUME DESC;В результате получим таблицу, в которой строки идут в порядке возрастания значения поля DNUM, а строки, с одинаковым значением DNUM идут в порядке убывания значения поля VOLUME:
Замечание. Если явно не указаны ключевые слова ASC или DESC, то по умолчанию принимается упорядочение по возрастанию (ASC). Отбор данных из нескольких таблиц Пример 13. Естественное соединение таблиц (способ 1 - явное указание условий соединения): SELECTP.PNUM,P.PNAME,PD.DNUM,PD.VOLUMEFROM P, PDWHERE P.PNUM = PD.PNUM;В результате получим новую таблицу, в которой строки с данными о поставщиках соединены со строками с данными о поставках деталей:
Замечание. Соединяемые таблицы перечислены в разделе FROM оператора, условие соединения приведено в разделе WHERE. Раздел WHERE, помимо условия соединения таблиц, может также содержать и условия отбора строк. Пример 14. Естественное соединение таблиц (способ 2 - ключевые слова JOIN… USING…): SELECTP.PNUM,P.PNAME,PD.DNUM,PD.VOLUMEFROM P JOIN PD USING PNUM;Замечание. Ключевое слово USING позволяет явно указать, по каким из общих колонок таблиц будет производиться соединение. Пример 15. Естественное соединение таблиц (способ 3 - ключевое слово NATURAL JOIN): SELECTP.PNUM,P.PNAME,PD.DNUM,PD.VOLUMEFROM P NATURAL JOIN PD;Замечание. В разделе FROM не указано, по каким полям производится соединение. NATURAL JOIN автоматически соединяет по всем одинаковым полям в таблицах.
Пример 16. Естественное соединение трех таблиц: SELECTP.PNAME,D.DNAME,PD.VOLUMEFROMP NATURAL JOIN PD NATURAL JOIN D;В результате получим следующую таблицу:
Пример 17. Прямое произведение таблиц: SELECTP.PNUM,P.PNAME,D.DNUM,D.DNAMEFROM P, D;В результате получим следующую таблицу:
Замечание. Т.к. не указано условие соединения таблиц, то каждая строка первой таблицы соединится с каждой строкой второй таблицы. Использование имен корреляции (алиасов, псевдонимов) Иногда приходится выполнять запросы, в которых таблица соединяется сама с собой, или одна таблица соединяется дважды с другой таблицей. При этом используются имена корреляции (алиасы, псевдонимы), которые позволяют различать соединяемые копии таблиц. Имена корреляции вводятся в разделе FROM и идут через пробел после имени таблицы. Имена корреляции должны использоваться в качестве префикса перед именем столбца и отделяются от имени столбца точкой. Если в запросе указываются одни и те же поля из разных экземпляров одной таблицы, они должны быть переименованы для устранения неоднозначности в именованиях колонок результатирующей таблицы. Определение имени корреляции действует только во время выполнения запроса. Пример 19. Отобрать все пары поставщиков таким образом, чтобы первый поставщик в паре имел статус, больший статуса второго поставщика: SELECTP1.PNAME AS PNAME1,P1.PSTATUS AS PSTATUS1,P2.PNAME AS PNAME2,P2.PSTATUS AS PSTATUS2FROMP P1, P P2WHERE P1.PSTATUS1 > P2.PSTATUS2;В результате получим следующую таблицу:
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|