Программирование в Microsoft SQL Server 2000

Сортировка и выборка строк

Разбить на страницы
Показывать лекцию целиком

Вы научитесь:

  • сортировать строки, возвращенные запросом;
  • отбирать строки с использованием базового условия WHERE ;
  • отбирать строки с использованием оператора LIKE ;
  • отбирать строки с использованием оператора BETWEEN ;
  • отбирать строки с использованием оператора IN ;
  • объединять условия отбора с помощью операторов OR и AND.
  • Фраза ORDER BY

    Фраза ORDER BY является необязательным компонентом оператора SELECT. Она позволяет вам задавать порядок, в котором строки будут возвращены. Можно задать несколько столбцов, а строки возвращать в порядке возрастания или убывания.

    Сортировка строк

    Простейшая форма фразы ORDER BY предоставляет имя одного столбца, который будет использоваться для сортировки строк, возвращенных запросом.

    Отсортируйте строки с использованием панели сетки Grid Pane.

  • Откройте конструктор запросов Query Designer для таблицы Oils, щелкнув правой кнопкой мыши на ее имени в рабочей панели Details Pane, открыв меню Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки). SQL Server откроет конструктор запросов для таблицы.
  • Отобразите панель сетки Grid Pane, щелкнув на кнопке Grid Pane (Панель сетки) в панели инструментов конструктора запросов.
  • Выберите для отображения только столбцы OilID, OilName и LatinName. Конструктор запросов выделит тусклым содержимое панели результатов Results Pane, указывая, что оно больше не отвечает спецификации запроса.
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов отобразит только заданные столбцы.
  • Установите тип сортировки Sort Type для поля OilName Ascending (По возрастанию).
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов отобразит строки, отсортированные по значению поля OilName.
  • Отсортируйте строки с использованием панели SQL Pane

  • Скройте панель сетки Grid Paneи отобразите панель SQL Pane, щелкнув на кнопках в панели инструментов конструктора запросов.
  • Добавьте
  • Примечание. Ключевое слово DESC предписывает SQL Server возвращать строки в порядке убывания. Ключевое слово ASC, которое является необязательным, возвращает строки в порядке возрастания.

  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит результаты, отсортированные по убывающему порядку значений столбца Oil Name.
  • Сортировка по нескольким столбцам

    Вы можете указывать в фразе ORDER BY несколько столбцов. Если указано несколько столбцов, порядок их следования определяет результат – SQL Server будет сортировать строки по первому столбцу, затем по второму столбцу и т.д.

    Совет. Упражнения в этом разделе используют таблицу OilOdors, которая действует как узловая таблица, устанавливающая отношение много-ко-многим между таблицами Oils и Odors. Обычно вам следует использовать внешние ключи, содержащиеся в этой таблице, с помощью связывания. Как это делается, мы рассмотрим в следующем уроке, "Связывание таблиц".

    Отсортируйте строки с использованием панели сетки Grid Pane

  • Выберите окно номер 1 из меню Windows, чтобы вернуться в дерево консоли Console Tree.
  • Откройте конструктор запросов Query designer для таблицы OilOdors, щелкнув правой кнопкой мыши на ее имени в рабочей панели Details Pane, открыв меню Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки). SQL Server откроет конструктор запросов Query designer для таблицы.
  • Отобразите панель сетки Grid Pane, щелкнув на кнопке Grid Pane (Панель сетки)в панели инструментов конструктора запросов.
  • Замените * в панели сетки Grid Pane на имена двух полей. SQL Server выделит содержимое панели результатов Results Pane тусклым, указывая, что оно больше не отвечает спецификации запроса.
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит только два указанных вами столбца.
  • Установите значение типа сортировки Sort Type для обоих столбцов на Ascending (По возрастанию).
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит строки, отсортированные сначала по полю OilID, а затем по полю OdorID в соответствии со значениями номеров OilID.
  • Отсортируйте строки с использованием панели SQL Pane

  • Скройте панель сетки Grid Paneи отобразите панель SQL Pane, щелкнув на кнопках в панели инструментов конструктора запросов.
  • Поменяйте местами имена столбцов во фразе
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит результаты, отсортированные сначала по полю OdorID, а затем по полю OilID.
  • Закройте окно конструктора запросов.
  • Фраза WHERE

    Воспользовавшись необязательной фразой WHERE оператора SELECT, вы можете задать подмножество строк, которые будут возвращены. Например, вам нужно увидеть лишь тех клиентов, которые за предыдущие 12 месяцев приобрели вашу продукцию на сумму более $10000, либо только названия продуктов, начинающихся с буквы "R". Эти условия вы можете указать с помощью фразы WHERE.

    Базовая фраза WHERE

    Основу фразы WHERE составляет условие выбора, которое определяет, какие строки будут возвращены. Базовая структура фразы WHERE имеет форму WHERE <столбец> <оператор> < значение>. SQL Server предоставляет полный объем операторов сравнения, показанных в таблице 13-1.

    Операторы сравнения
    ОператорЗначение
    = Равно
    > Больше чем
    < Меньше чем
    >= Больше или равно
    <= Меньше или равно
    <> Не равно

    При этом <значение>, указанное в условии WHERE, может быть константой, такой как "Red" или 10000, либо выражением, возвращающим значение, таким как GETDATE. Аналогично, значение <столбец> может быть получено с помощью функций Transact-SQL, такой как LEFT, которые возвращают указанное число символов, отсчитываемое от начала строки. Мы подробно рассмотрим функции в уроке 24, "Компоненты языка Transact-SQL".

    Задайте условие WHERE с использованием панели сетки Grid Pane

  • Выберите окно номер 2 из меню Windows, чтобы вернуться в окно конструктора Query Designer, используемое нами ранее в этом уроке.
  • Скройте панель SQL Paneи отобразите панель сетки Grid Pane, щелкнув на кнопках в панели инструментов конструктора запросов.
  • Введите =
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит только одну строку.
  • Задайте условие WHERE с использованием панели SQL Pane

  • Скройте панель сетки Grid Paneи отобразите панель SQL Pane, щелкнув на кнопках в панели инструментов конструктора запросов.
  • Измените фразу
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит названия ароматических масел, начинающихся с "R".
  • Использование специальных операторов

    В дополнение к стандартному формату фразы WHERE <столбец> <оператор> <значение> SQL Server также поддерживает три специальных оператора: LIKE, который позволяет вам указывать значения с использованием символов замещения, представленных в таблице 13-2; BETWEEN, который позволяет вам задавать диапазон значений; и IN, который позволяет вам задавать множество, в котором содержатся значения.

    Символы замещения.
    Символ замещения Значение Пример
    - Любой одиночный символ LIKE 'a_' Соответствует "at" и "as", но не "and"
    % Любая строка из нуля или более символов LIKE '%t%' Соответствует "at", "bat" и "together", но не "lucky"
    [] Любой определенный символ внутри области или множества LIKE '[a-c]at' Соответствует "cat" и "bat", но не "fat" LIKE '[ab]at' Соответствует "bat", но не "cat"
    [^] Любой определенный символ, не содержащийся в области или множестве LIKE '[^c]at' Соответствует "bat" и "fat", но не "cat"

    Задайте условие WHERE с использованием оператора LIKE

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит все строки, начинающиеся с "Rose".
  • Задайте условие WHERE с использованием оператора BETWEEN

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит все строки, начинающиеся с A, B или C.
  • Примечание. Transact-SQL также поддерживает оператор NOT BETWEEN, который работает точно так же, но исключает диапазон значений. Например, LEFT(OilName,1) NOT BETWEEN 'C' AND 'E' будет возвращать все строки, кроме тех, для которых значение OilName начинается с C, D или E.

    Задайте условие WHERE с использованием оператора IN

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит 8 строк.
  • Объединение условий отбора

    Помимо задания фразы WHERE с использованием одиночных выражений в формате <столбец> <оператор> <значение>, вы можете также объединять выражения с помощью логических операторов OR или AND. Условие WHERE в формате <выражение> OR <выражение> будет возвращать строки, которые отвечают одному из условий, в то время как условие WHERE в формате <выражение> AND <выражение> возвращает строки, отвечающие обоим условиям.

    Задайте составное условие с использованием оператора OR

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит 2 строки.
  • Задайте составное условие с использованием оператора AND

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит 4 строки.
  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer исключит строку для Rose Otto.
  • Краткое содержание

    Чтобы ... Используйте синтаксис оператора SELECT
    Выбрать все столбцы в запросе SELECT * FROM <таблица>
    Отсортировать строки, возвращаемые запросом SELECT ... ORDER BY <столбец>
    Выбрать строки с использованием базового условия WHERE SELECT ... WHERE <столбец> <оператор> <значение>
    Выбрать строки с использованием SELECT ... WHERE <столбец> LIKE LIKE оператор <символы замещения значение>
    Выбрать строки с использованием оператора BETWEEN SELECT ... WHERE <столбец> BETWEEN <значение> AND <значение>
    Выбрать строки с использованием оператора IN SELECT ... WHERE <столбец> IN (<значение>, <значение>...)
    Объединить условия отбора с помощью оператора OR SELECT ... WHERE <условие> OR <условие>
    Объединить условия отбора с помощью оператора AND SELECT ... WHERE <условие> AND <условие>
    Страницы:

    Вы научитесь:

  • сортировать строки, возвращенные запросом;
  • отбирать строки с использованием базового условия WHERE ;
  • отбирать строки с использованием оператора LIKE ;
  • отбирать строки с использованием оператора BETWEEN ;
  • отбирать строки с использованием оператора IN ;
  • объединять условия отбора с помощью операторов OR и AND.
  • Фраза ORDER BY

    Фраза ORDER BY является необязательным компонентом оператора SELECT. Она позволяет вам задавать порядок, в котором строки будут возвращены. Можно задать несколько столбцов, а строки возвращать в порядке возрастания или убывания.

    Сортировка строк

    Простейшая форма фразы ORDER BY предоставляет имя одного столбца, который будет использоваться для сортировки строк, возвращенных запросом.

    Отсортируйте строки с использованием панели сетки Grid Pane.

  • Откройте конструктор запросов Query Designer для таблицы Oils, щелкнув правой кнопкой мыши на ее имени в рабочей панели Details Pane, открыв меню Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки). SQL Server откроет конструктор запросов для таблицы.
  • Отобразите панель сетки Grid Pane, щелкнув на кнопке Grid Pane (Панель сетки) в панели инструментов конструктора запросов.
  • Выберите для отображения только столбцы OilID, OilName и LatinName. Конструктор запросов выделит тусклым содержимое панели результатов Results Pane, указывая, что оно больше не отвечает спецификации запроса.
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов отобразит только заданные столбцы.
  • Установите тип сортировки Sort Type для поля OilName Ascending (По возрастанию).
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов отобразит строки, отсортированные по значению поля OilName.
  • Отсортируйте строки с использованием панели SQL Pane

  • Скройте панель сетки Grid Paneи отобразите панель SQL Pane, щелкнув на кнопках в панели инструментов конструктора запросов.
  • Добавьте
  • Примечание. Ключевое слово DESC предписывает SQL Server возвращать строки в порядке убывания. Ключевое слово ASC, которое является необязательным, возвращает строки в порядке возрастания.

  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит результаты, отсортированные по убывающему порядку значений столбца Oil Name.
  • Сортировка по нескольким столбцам

    Вы можете указывать в фразе ORDER BY несколько столбцов. Если указано несколько столбцов, порядок их следования определяет результат – SQL Server будет сортировать строки по первому столбцу, затем по второму столбцу и т.д.

    Совет. Упражнения в этом разделе используют таблицу OilOdors, которая действует как узловая таблица, устанавливающая отношение много-ко-многим между таблицами Oils и Odors. Обычно вам следует использовать внешние ключи, содержащиеся в этой таблице, с помощью связывания. Как это делается, мы рассмотрим в следующем уроке, "Связывание таблиц".

    Отсортируйте строки с использованием панели сетки Grid Pane

  • Выберите окно номер 1 из меню Windows, чтобы вернуться в дерево консоли Console Tree.
  • Откройте конструктор запросов Query designer для таблицы OilOdors, щелкнув правой кнопкой мыши на ее имени в рабочей панели Details Pane, открыв меню Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки). SQL Server откроет конструктор запросов Query designer для таблицы.
  • Отобразите панель сетки Grid Pane, щелкнув на кнопке Grid Pane (Панель сетки)в панели инструментов конструктора запросов.
  • Замените * в панели сетки Grid Pane на имена двух полей. SQL Server выделит содержимое панели результатов Results Pane тусклым, указывая, что оно больше не отвечает спецификации запроса.
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит только два указанных вами столбца.
  • Установите значение типа сортировки Sort Type для обоих столбцов на Ascending (По возрастанию).
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит строки, отсортированные сначала по полю OilID, а затем по полю OdorID в соответствии со значениями номеров OilID.
  • Отсортируйте строки с использованием панели SQL Pane

  • Скройте панель сетки Grid Paneи отобразите панель SQL Pane, щелкнув на кнопках в панели инструментов конструктора запросов.
  • Поменяйте местами имена столбцов во фразе
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит результаты, отсортированные сначала по полю OdorID, а затем по полю OilID.
  • Закройте окно конструктора запросов.
  • Фраза WHERE

    Воспользовавшись необязательной фразой WHERE оператора SELECT, вы можете задать подмножество строк, которые будут возвращены. Например, вам нужно увидеть лишь тех клиентов, которые за предыдущие 12 месяцев приобрели вашу продукцию на сумму более $10000, либо только названия продуктов, начинающихся с буквы "R". Эти условия вы можете указать с помощью фразы WHERE.

    Базовая фраза WHERE

    Основу фразы WHERE составляет условие выбора, которое определяет, какие строки будут возвращены. Базовая структура фразы WHERE имеет форму WHERE <столбец> <оператор> < значение>. SQL Server предоставляет полный объем операторов сравнения, показанных в таблице 13-1.

    Операторы сравнения
    ОператорЗначение
    = Равно
    > Больше чем
    < Меньше чем
    >= Больше или равно
    <= Меньше или равно
    <> Не равно

    При этом <значение>, указанное в условии WHERE, может быть константой, такой как "Red" или 10000, либо выражением, возвращающим значение, таким как GETDATE. Аналогично, значение <столбец> может быть получено с помощью функций Transact-SQL, такой как LEFT, которые возвращают указанное число символов, отсчитываемое от начала строки. Мы подробно рассмотрим функции в уроке 24, "Компоненты языка Transact-SQL".

    Задайте условие WHERE с использованием панели сетки Grid Pane

  • Выберите окно номер 2 из меню Windows, чтобы вернуться в окно конструктора Query Designer, используемое нами ранее в этом уроке.
  • Скройте панель SQL Paneи отобразите панель сетки Grid Pane, щелкнув на кнопках в панели инструментов конструктора запросов.
  • Введите =
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит только одну строку.
  • Задайте условие WHERE с использованием панели SQL Pane

  • Скройте панель сетки Grid Paneи отобразите панель SQL Pane, щелкнув на кнопках в панели инструментов конструктора запросов.
  • Измените фразу
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит названия ароматических масел, начинающихся с "R".
  • Использование специальных операторов

    В дополнение к стандартному формату фразы WHERE <столбец> <оператор> <значение> SQL Server также поддерживает три специальных оператора: LIKE, который позволяет вам указывать значения с использованием символов замещения, представленных в таблице 13-2; BETWEEN, который позволяет вам задавать диапазон значений; и IN, который позволяет вам задавать множество, в котором содержатся значения.

    Символы замещения.
    Символ замещения Значение Пример
    - Любой одиночный символ LIKE 'a_' Соответствует "at" и "as", но не "and"
    % Любая строка из нуля или более символов LIKE '%t%' Соответствует "at", "bat" и "together", но не "lucky"
    [] Любой определенный символ внутри области или множества LIKE '[a-c]at' Соответствует "cat" и "bat", но не "fat" LIKE '[ab]at' Соответствует "bat", но не "cat"
    [^] Любой определенный символ, не содержащийся в области или множестве LIKE '[^c]at' Соответствует "bat" и "fat", но не "cat"

    Задайте условие WHERE с использованием оператора LIKE

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит все строки, начинающиеся с "Rose".
  • Задайте условие WHERE с использованием оператора BETWEEN

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит все строки, начинающиеся с A, B или C.
  • Примечание. Transact-SQL также поддерживает оператор NOT BETWEEN, который работает точно так же, но исключает диапазон значений. Например, LEFT(OilName,1) NOT BETWEEN 'C' AND 'E' будет возвращать все строки, кроме тех, для которых значение OilName начинается с C, D или E.

    Задайте условие WHERE с использованием оператора IN

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит 8 строк.
  • Объединение условий отбора

    Помимо задания фразы WHERE с использованием одиночных выражений в формате <столбец> <оператор> <значение>, вы можете также объединять выражения с помощью логических операторов OR или AND. Условие WHERE в формате <выражение> OR <выражение> будет возвращать строки, которые отвечают одному из условий, в то время как условие WHERE в формате <выражение> AND <выражение> возвращает строки, отвечающие обоим условиям.

    Задайте составное условие с использованием оператора OR

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит 2 строки.
  • Задайте составное условие с использованием оператора AND

  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer отобразит 4 строки.
  • Измените условие
  • Нажмите кнопку Run (Выполнить)в панели инструментов конструктора запросов, чтобы исполнить запрос. Конструктор запросов Query Designer исключит строку для Rose Otto.
  • Краткое содержание

    Чтобы ... Используйте синтаксис оператора SELECT
    Выбрать все столбцы в запросе SELECT * FROM <таблица>
    Отсортировать строки, возвращаемые запросом SELECT ... ORDER BY <столбец>
    Выбрать строки с использованием базового условия WHERE SELECT ... WHERE <столбец> <оператор> <значение>
    Выбрать строки с использованием SELECT ... WHERE <столбец> LIKE LIKE оператор <символы замещения значение>
    Выбрать строки с использованием оператора BETWEEN SELECT ... WHERE <столбец> BETWEEN <значение> AND <значение>
    Выбрать строки с использованием оператора IN SELECT ... WHERE <столбец> IN (<значение>, <значение>...)
    Объединить условия отбора с помощью оператора OR SELECT ... WHERE <условие> OR <условие>
    Объединить условия отбора с помощью оператора AND SELECT ... WHERE <условие> AND <условие>
    Вернуться к учебному плану