DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Простой оператор SELECT - выборка записей


Простой оператор SELECT

1. Выборка всех полей

   В простейшем случае команда SELECT выбирает из заданной таблицы все данные
   (т.е. все записи и все поля):
       SELECT * FROM имя_таблицы;
   Звездочка (*) является сокращенным обозначением всех несистемных полей.

2. Список полей

   Вместо полной выборки с символом * можно перечислить поля, включаемые в
   итоговый набор, после ключевого слова SELECT. Запрос возвращает данные
   только для полей, входящих в этот список. Порядок перечисления полей не
   обязан совпадать с их порядком в структуре таблицы; допускается как
   многократное вхождение, так и отсутствие некоторых полей в списке.
       SELECT id, author_id, title, id 
               FROM books;

3. Вычисляемые поля

   Целями команды SELECT могут быть не только простые поля, но и произвольные
   выражения (включающие вызовы функций или различные операции с
   идентификаторами) и константы.
       SELECT isbn, cost, retail, retail-cost
               FROM stock;
   Для каждой цели в списке может задаваться необязательная секция AS, которая
   назначает синоним (новое произвольное имя) для каждого поля в итоговом 
   наборе. Назначение синонима не влияет на исходное поле и действует лишь в 
   контексте итогового набора, возвращаемого запросом.
       SELECT isbn, cost AS стоимость, retail AS цена, 
               retail - cost AS наценка 
               FROM stock; 
   Команда SELECT также может использоваться для простого вычисления и вывода
   результатов выражений и констант. В этом случае она не содержит секции FROM.
       SELECT 2+2 AS "2+2", pi(), 
               'PostgreSQL is more than a calculator' AS comments;
   (Внутри '' могут встречаться пробелы или ключевые поля, 
    "имя" интерпретируется буквально)

4. Сортировка записей

   Записи хранятся в таблицах в произвольном порядке. Упорядочить данные
   запроса можно с помощью секции ORDER BY. Секции ORDER BY передается список
   полей, разделенных запятыми (или выражений, в которых используются поля).
   Переданный список задает критерий сортировки. Для каждого критерия сортировки
   могут дополнительно указываться ключевые слова ASC (по возрастанию,
   используется по умолчанию), DESC (по убыванию). 
       SELECT isbn, edition, publication
               FROM editions
               ORDER BY publication;
   При сортировке по нескольким выражениям сначала упорядочивается итоговый
   набор по первому (левому) критерию, а дальнейшие критерии применяются лишь в
   том случае, если сортировка по первому критерию не обеспечивает однозначного
   результата.
       SELECT edition, publication
               FROM editions
               ORDER BY edition ASC, publication DESC;

5. Уточнение запросов

   В секции WHERE задается логическое условие, которому должны удовлетворять
   записи итогового набора. Секция WHERE может содержать несколько условий,
   объединенных логическими операторами (AND, OR, NOT). Для группировки
   нескольких условий могут быть использованы круглые скобки.
       SELECT title FROM books
               WHERE subject_id = 4
               AND author_id != 7805;

6. Удаление дубликатов

   Необязательное ключевое слово DISTINCT исключает дубликаты из итогового
   набора. На дубликаты проверяются поля, входящие в целевой список SELECT.
       SELECT DISTINCT author_id
               FROM books;
   В секции ON можно указать, по какому полю проверять дубликаты.
       SELECT DISTINCT ON (author_id)
               author_id, title
               FROM books;
   Если порядок сортировки не задан, то PostgreSQL выбирает записи,
   исключаемые из итогового набора, по своему усмотрению.

7. Выбор интервалов записей

   Замечание: возможности, предоставляемые операторами LIMIT и OFFSET, 
   не являются стандартными в языке SQL, т.е. не поддерживаются другими CУБД.

   Секция LIMIT ограничивает количество записей в итоговом наборе (хотя размер
   итогового набора вполне может быть меньше заданной величины). При наличии
   секции OFFSET в итоговом наборе пропускается количество записей, заданное
   параметром секции. Если заданы оба ключевых слова, то отсчет ограничения,
   указанного в секции LIMIT, начинается после пропуска записей в соответствии с
   секцией OFFSET.
       SELECT isbn, publication
               FROM editions
               ORDER BY publication DESC;

       SELECT isbn, publication
               FROM editions
               ORDER BY publication DESC
               LIMIT 5;

       SELECT isbn, publication
               FROM editions
               ORDER BY publication DESC
               LIMIT 5
               OFFSET 2;

8. Конструкции CASE 
  
       CASE WHEN условие1 THEN результат1
            WHEN условие2 THEN результат2
            [...]
            [ELSE результат_по_умолчанию]
       END [AS синоним]

   Конструкция CASE напоминает условные команды if в традиционных языках
   программирования. Если условие в секции WHEN выполняется, результат
   соответствующей секции THEN возвращается в поле итогового набора. Если ни 
   одно условие не выполнено, можно задать значение по умолчанию в секции ELSE.
       SELECT isbn, 
               CASE        WHEN cost > 20        THEN 'over $20.00 cost'
                       WHEN cost = 20        THEN '$20.00 cost'
                       ELSE 'under $20.00 cost'
               END AS cost_range
               FROM stock;
   По умолчанию итоговому полю конструкции CASE присваивается имя case, но ему
   можно назначить синоним, как любому обычному полю.

Задания


Запустить psql с базой данных booktown и вашим именем пользователя postgreSQL.
Ознакомиться со структурой БД booktown.
Выполнить запросы, приведенные в качестве примеров в методичке выше.
Выполнить самостоятельные задания:

1.  Получить все сведения об авторах (authors).
2.  Получить список (имя и фамилия) всех авторов.
3.  Получить список (имя и фамилия) всех авторов, отсортированный по фамилиям.
4.  Получить всю информацию о переиздании книг (т.е. не первое издание, 
    а второе и выше), так чтобы сначала списка шли книги, выдержавшие наибольшее
    количество переизданий (editions).
5.  Получить всю информацию об издании книг с типом h в порядке их публикации.
6.  Получить информацию об изданиях книг до XXI века.
7.  Получить информацию об имеющихся книгах на складе (stock). Отсортировать по
    убыванию количества, отсутствующие книги не выводить.
8.  Для каждого кода книги вывести ее стоимость, отпускную цену, количество на 
    складе, расходы магазина на покупку книги (с учетом количества), доходы от 
    их реализации и прибыль магазина. Отсортировать по isbn.
9.  Получить список книг с отпускной ценой в диапазоне от 20 до 30 в порядке
    возрастания цены.
10. Вывести список покупателей (customers), которых зовут Jean.
11. Получить список неповторяющихся кодов тем книг, имеющихся в наличии.
12. Получить 10 книг, в наибольшем количестве имеющихся на складе.

 


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







jAntivirus