Оператор select sql: SELECT | SQL | SQL-tutorial.ru
Содержание
Оператор SELECT в SQL — CodeChick
В этой статье вы узнаете, как выбирать записи из таблиц базы данных с помощью конструкции SELECT FROM в SQL.
В предыдущей статье мы узнали, как вставлять данные в таблицу базы данных. Теперь пришло время выбрать данные из существующих таблиц с помощью SQL-запроса.
Оператор SELECT
используется для выбора или получения данных из одной или нескольких таблиц. Вы можете использовать этот оператор для получения всех строк из таблицы за один раз, а также для получения только тех строк, которые удовлетворяют определенному условию или комбинации условий.
Синтаксис
Основной синтаксис для выбора данных из таблицы выглядит так:
SELECT имя_столбца1, имя_столбца2, имя_столбцаN FROM имя_таблицы;
имя_столбца1
, имя_столбца2
и т.д. — это имена столбцов или полей таблицы базы данных, значения которых вы хотите получить.
Если вам нужно получить значения всех столбцов в таблице, используйте символ *
:
SELECT * FROM имя_таблицы;
Символ *
после SELECT
указывает, что нужно вернуть все столбцы таблицы — в том порядке, в котором они находятся в исходной таблице.
Используем SELECT
Для практики будем использовать данные с сайта data.world.
У них есть статистика по приютам для животных в городе Остине (США) по состоянию на 7 декабря 2017 года.
Для начала скачайте таблицу Austin_Animal_Center_Intakes.csv (Google Disc →) и установите ее в свою СУБД — с именем austin_animal_center_intakes.
Чтобы посмотреть все содержимое таблицы, воспользуемся SELECT *
.
SELECT * FROM austin_animal_center_intakes
Вы увидете первые строки таблицы — вот они:
animal_id | name | datetime | monthyear | found_location | intake_type | intake_condition | animal_type | sex_upon_intake | age_upon_intake | breed | color |
A006100 | Scamp | 2017-12-07T14:07:00 | 2017-12 | Colony Creek And Hunters Trace in Austin (TX) | Stray | Normal | Dog | Neutered Male | 10 years | Spinone Italiano Mix | Yellow/White |
A006100 | Scamp | 2014-12-19T10:21:00 | 2014-12 | 8700 Research Blvd in Austin (TX) | Public Assist | Normal | Dog | Neutered Male | 7 years | Spinone Italiano Mix | Yellow/White |
A191351 | Bri-Bri | 2015-11-13T15:57:00 | 2015-11 | 1912 E William Cannon Rd in Austin (TX) | Stray | Normal | Cat | Intact Female | 16 years | Domestic Longhair Mix | Black/White |
A322813 | Tyson | 2015-03-05T14:49:00 | 2015-03 | Austin (TX) | Public Assist | Normal | Dog | Neutered Male | 11 years | Rottweiler Mix | Black/Brown |
A553074 | Jo Jo | 2016-03-27T00:04:00 | 2016-03 | 3614 Bill Price in Travis (TX) | Public Assist | Normal | Dog | Spayed Female | 7 years | Labrador Retriever/German Shepherd | Brown/Black |
A672744 | Oso | 2014-02-17T17:10:00 | 2014-02 | Travis (TX) | Owner Surrender | Normal | Dog | Intact Male | 3 years | Rottweiler Mix | Black/Tan |
A672744 | Oso | 2014-02-17T17:10:00 | 2014-02 | Austin (TX) | Public Assist | Normal | Dog | Intact Male | 3 years | Rottweiler Mix | Black/Tan |
А что, если нам не нужна вся эта информация? Предположим, мы хотим видеть только тип животных, их пол, возраст и состояние, в котором они находились при поступлении в приют. Такой запрос будет выглядеть следующим образом:
SELECT animal_type, sex_upon_intake, age_upon_intake, intake_condition FROM austin_animal_center_intakes
Вот несколько первых строк таблицы, которые вы получите после такого запроса:
animal_type | sex_upon_intake | age_upon_intake | intake_condition |
Dog | Neutered Male | 10 years | Normal |
Dog | Neutered Male | 7 years | Normal |
Cat | Intact Female | 16 years | Normal |
Dog | Neutered Male | 11 years | Normal |
Dog | Spayed Female | 7 years | Normal |
Dog | Intact Male | 3 years | Normal |
Dog | Intact Male | 3 years | Normal |
Примечание. Обратите внимание, что порядок столбцов в результатах соответствует порядку, в котором мы перечислили столбцыв запросы, а не порядку, в котором они находятся в исходной таблице. Это очень удобно для представления информации в нужном порядке с учетом ваших целей.
Используем SELECT AS
Еще один способ изменить представление данных — изменить названия столбцов на более читабельные или удобные для ваших целей. В последнем примере наш запрос выдал данные о виде, поле, возрасте и состоянии животных. Если бы мы хотели переименовать столбцы, чтобы они соответствовали этим названиям в наших результатах, нужно было бы выбрать те же столбцы, но использовать ключевое слово AS
после каждого названия столбца и указать после него новое название столбца.
Короче: AS
позволяет переименовывать столбцы.
Давайте попробуем переименовать все столбцы из прошлого запроса.
SELECT animal_type AS Animal, sex_upon_intake AS Sex, age_upon_intake AS Age, intake_condition AS Condition
FROM austin_animal_center_intakes
Теперь таблица стала более читабельной и понятной. Вот первые несколько строк результата:
Type | Sex | Age | Condition |
Dog | Neutered Male | 10 years | Normal |
Dog | Neutered Male | 7 years | Normal |
Cat | Intact Female | 16 years | Normal |
Dog | Neutered Male | 11 years | Normal |
Dog | Spayed Female | 7 years | Normal |
Dog | Intact Male | 3 years | Normal |
Dog | Intact Male | 3 years | Normal |
Примечание. Если вы используете
AS
с нечисловыми значениями в новом имени столбца (например, пробелы), нужно заключить новое имяв обратные кавычками. Обратная кавычка (`
) находится на клавиатуре на той же клавише, что и тильда (~
). И это не одно и то же, что обычная одинарная кавычка.
Если бы вместо замены названий столбцов на заголовки из одного слова мы захотели бы просто убрать подчеркивания, нам пришлось бы написать запрос с использованием обратных кавычек:
SELECT animal_type AS `animal type`, sex_upon_intake AS `sex upon intake`, age_upon_intake AS `age upon intake`, intake_condition AS `intake condition` FROM austin_animal_center_intakes
Результат:
animal type | sex upon intake | age upon intake | intake condition |
Dog | Neutered Male | 10 years | Normal |
Dog | Neutered Male | 7 years | Normal |
Cat | Intact Female | 16 years | Normal |
Dog | Neutered Male | 11 years | Normal |
Dog | Spayed Female | 7 years | Normal |
Dog | Intact Male | 3 years | Normal |
Dog | Intact Male | 3 years | Normal |
Используем SELECT DISTINCT
Датасет, который мы используем в этой статье, очень большой. За почти три года, охватываемых набором данных, в Техасский центр для животных в Остине доставили 54 724 животных.
Если вы хотите узнать, какие виды животных были взяты в центр (все ли они были собаками и кошками, например), можно воспользоваться удобным модификатором для выражения SELECT
под названием DISTINCT
. DISTINCT
используется с оператором SELECT
и возвращает уникальные комбинации данных по всем столбцам из запроса.
Для нашей задачи — узнать, какие виды животных поступали в приют, — напишем такой SQL-запрос:
SELECT DISTINCT animal_type FROM austin_animal_center_intakes
Результат:
animal_type |
---|
Dog |
Cat |
Other |
Bird |
Livestock |
Если вы хотите показать только уникальные виды животных, но и увидеть соответсвующие ячейки из столбцов возраста и пола, подойдет такой запрос:
SELECT DISTINCT animal_type, sex_upon_intake, age_upon_intake FROM austin_animal_center_intakes
Это легитимный запрос, поэтому вы не получите ошибку, но в результирующей таблице не будет отдельных значений только для типа животного. Вместо этого отличимыми значениями будут считаться каждая комбинация типа, пола и возраста. DISTINCT
относится к уникальной строке данных, а не к уникальному столбцу. Вот как будут выглядеть первые несколько строк результатов:
animal_type | sex_upon_intake | age_upon_intake |
---|---|---|
Dog | Neutered Male | 10 years |
Dog | Neutered Male | 7 years |
Cat | Intact Female | 16 years |
Dog | Neutered Male | 11 years |
Dog | Spayed Female | 7 years |
Dog | Intact Male | 3 years |
Dog | Spayed Female | 2 years |
Оператор SELECT языка программирования SQL
Резюме: в этой статье вы узнаете, как использовать SQL оператор SELECT для написания запроса выборки данных из одной таблицы.
Содержание
- Введение в оператор SQL SELECT
- Простой выбор данных
- Группировка данных
- Команда HAVING
- Выборка из нескольких таблиц (горизонтальное соединение)
- Вертикальное соединение выборки из разных таблиц
- Упорядочивание
- Копирование в другие таблицы через SELECT
- Исключение дублей
- Примеры использования SELECT в языке программирования SQL
- 1) Пример SQL SELECT — получение информации при выборе данных из всех столбцов.
- 2) SQL SELECT — выбор данных из определенных столбцов
- Сводка
Введение в оператор SQL SELECT
SELECT в SQL позволяет выбрать данные как из одной, так и из нескольких таблиц, но в рамках текущего материала мы рассмотрим выборку только из одной таблицы.
Простой выбор данных
Ниже описан основной синтаксис оператора SELECT, позволяющий выбрать данные из одной таблицы. Он применим как для MySQL так и для других систем.
В этом синтаксисе:
- В первую очередь укажите перечень столбцов таблицы в предложении SELECT. Разделите колонки запятыми.
- После чего следует написать непосредственно имя таблицы после предложения FROM.
При построении плана запроса система баз данных SQL вначале считывает предложение FROM, а уже после этого предложение SELECT.
Это можно читать следующим образом: «выбери мне из таблицы следующие столбцы».
Разделитель в виде точки с запятой (;) не является частью запроса. Сервер баз данных использует ее для разделения нескольких операторов SQL.
К примеру, в случае если выполняются два или более оператора SELECT, следует разграничить их точкой с запятой (;).
При необходимости запросить данные из всех столбцов таблицы, можно применить оператор звездочка (*) вместо перечисления поименно всех столбцов таблицы:
Сиквел не чувствителен к регистру. Поэтому написание команды в виде SELECT или select не теряет смысла запроса.
По конвенции SQL, предлагается использовать заглавные буквы для ключевых слов, таких как SELECT и FROM, и прописные буквы для таких сущностей как имя таблицы или колонки. Это соглашение делает операторы SQL более удобочитаемыми.
Группировка данных
Традиционно в SQL для группировки данных применяется оператор GROUP BY
Группировка или объединение применяется при необходимости сжать какую-то информацию, сгруппировав ее по заданным полям. На картинке выше показан синтаксис применения данной команды. В качестве примера можно рассмотреть продажи фруктов в магазине. Для этого мы группируем записи по колонке fruit, а в качестве второго поля берем агрегатную функцию подсчитывающую количество продаж (в данном случае, независимо от объема). Агрегатные функции (такие как AVG, SUM, COUNT и другие) будут рассмотрены нами позднее в рамках отдельной статьи.
Команда HAVING
Команда HAVING берется обычно как дополнение к группировке используемой в SQL с помощью условия GROUP BY для SELECT.
Она может показаться громоздкой, непонятной. Однако спустя несколько удачных или неудачных ее использований приходит понимание синтаксиса. И в дальнейшем она может оказаться вам весьма полезной.
Выборка из нескольких таблиц (горизонтальное соединение)
Эта функция реализована благодаря применению операнда JOIN. Простейшая реализация представлена далее
Здесь таблица A соединяется с таблицей B, поля по которым они соединяются представлены в блоке ON.
Вертикальное соединение выборки из разных таблиц
Бывают ситуации, когда SELECT помогает отобрать записи из нескольких таблиц грубо говоря друг под другом. В подобной ситуации незаменима команда UNION. Ниже продемонстрировано как вывести в один столбец идентификаторы из разных таблиц. Практическое применение такого SELECT‘а сложно представить. А вот в качестве наглядной иллюстрации SQL запроса с применением UNION почему бы и нет.
Упорядочивание
Поменять порядок в выборке можно благодаря добавлению ASC (по алфавиту, от меньшего к большему) и DESC (в обратном порядке) команд. Детали здесь.
Копирование в другие таблицы через SELECT
Если позволяет структура таблиц, то имея одинаковую структуру содержимого в SQL допустимо через SELECT производить добавление данных в отдельную таблицу строкой INSERT INTO table:
Обратите пожалуйста внимание, что здесь мы применили условие WHERE в соответствии с которым данные в table2 фильтруются по некоему заданному условию. Включающему операторы сравнения (AND, OR). Подробнее в этой статье.
Чтобы это стало возможно как уже говорилось выше структура у них должна быть одинаковой, для этой цели применим оператор CREATE TABLE name. Он не относится к SELECT, но мы не могли не упомянуть его в этой статье.
Что касается заполнения таблиц, в примере выше не упомянули, однако следует понимать важность использования правильных типов данных в SQL. Также немаловажный вопрос использования NULL и NOT NULL колонок. В зависимости от выбранной опции будет определяться позволит ли вам база данных поместить данные с неопределенным значением (NULL) в табличку или нет. При отсутствии этого указания (как на рисунке выше), считается, что вы такое разрешение дали.
Исключение дублей
Вычленить только неповторяющуюся информацию команде SELECT дает возможность DISTINCT. Именно его применение вы можете увидеть под этим текстом. Подробнее здесь.
Это получение всех возможных вариантов зарплат из сущности со списком сотрудников. Если вы обратили внимание, то безусловно заметили применение в SQL запросе сортировки и указания обратного порядка с помощью DESC.
Примеры использования SELECT в языке программирования SQL
Для демонстрации мы будем использовать таблицу employees.
1) Пример SQL SELECT — получение информации при выборе данных из всех столбцов.
В следующем примере применяется запрос с использованием команды SELECT для выборки всех строк и столбцов таблицы employees:
Далее показан результирующие наборы данных, которые вернул сервер базы данных. Это напоминает некую электронную таблицу, которая имеет свой набор строк и колонки с заголовком:
Команда SELECT * полезна только для специфических запросов и редко применяется профессиональными программистами. Это обусловлено тем что крайне редко возникают ситуации, когда требуются получить полный набор данных. Обычно он ограничен частью столбцов. Поэтому в процессе разработки рекомендуется избегать использования звездочки select.
Если вы используете select *, БД требуется больше времени, чтобы прочитать информацию с диска, нежели если использовать именованную выборку (т.е. перечислить имена всех нужных колонок). Это часто приводит к ухудшению производительности. Особенно это чревато проблемами, если таблица содержит большое количество столбцов со значительным числом строк.
2) SQL SELECT — выбор данных из определенных столбцов
Чтобы выбрать данные из определенных столбцов, можно указать список столбцов после пункта SELECT оператора SELECT.
Например, ниже приведена выборка данных из идентификатора сотрудника, имени, фамилии и даты приема на работу из всех строк таблицы «Сотрудники»:
Теперь набор результатов включает только четыре столбца, указанные в предложении SELECT:
3) SQL SELECT — выполнение простого вычисления
В следующем примере оператор SELECT используется для получения имени, фамилии, зарплаты и новой зарплаты:
Выражение salary * 1.05 добавляет 5% к зарплате каждого сотрудника. По умолчанию SQL использует выражение в качестве заголовка столбца:
Чтобы присвоить выражению или столбцу псевдоним, нужно указать ключевое слово AS, за которым следует псевдоним столбца, как показано ниже:
Например, следующий оператор SELECT использует new_salary в качестве псевдонима столбца для выражения salary * 1.05:
Вывод:
Сводка
Используйте оператор SQL SELECT для выбора данных из таблицы.
Чтобы выбрать данные из таблицы, укажите имя таблицы в предложении FROM и список столбцов в предложении SELECT.
SELECT * — это сокращение от SELECT все столбцы таблицы.
Предыдущая статья: Синтаксис SQL
Следующая статья: Сортировка данных (ORDER BY)
Предложение SELECT оператора SQL
Перейти к основному содержанию
SELECT — это первое предложение в операторе SQL. Предложение SELECT используется для указания столбцов, которые вы хотите видеть в результате запроса. Наряду с предложением FROM, предложение SELECT требуется для каждого оператора SQL, который мы пишем.
Синтаксис предложения SELECT
Предложение SELECT оператора SQL всегда начинается с ключевого слова SELECT (обратите внимание, что хотя ключевые слова в операторе SQL не чувствительны к регистру, в этом уроке мы будем использовать их с заглавной буквы, чтобы выделить их). Сразу после ключевого слова SELECT в предложении SELECT мы перечисляем имена столбцов, которые должны отображаться в результатах запроса, разделенные запятыми. Например, если мы хотим увидеть фамилию и адрес электронной почты каждого из членов в данных студенческой организации, оператор SQL для этого запроса будет следующим:
SELECT last_name, email FROM Member
Результаты этого запроса отображаются в виде Рисунок 12.10 .
Рисунок 12.10: Результат запроса.
Вы можете включить или исключить любые столбцы из таблицы Member в своем результате. Кроме того, столбцы, которые вы включаете, могут отображаться в любом порядке. Если вы хотите, чтобы адрес электронной почты отображался перед фамилией в результате, вы должны написать запрос следующим образом:
SELECT email, first_name FROM Member
Существует сокращенный способ включить в запрос все столбцы из таблицы. Это делается с помощью символа * вместо списка заголовков столбцов в предложении SELECT. Этот синтаксис показан ниже и даст результаты Рисунок 12.11 . Обратите внимание, что в результате запроса отображается больше столбцов, чем показано на снимке экрана.
Рисунок 12.11: SELECT * Запрос и результат.
Веб-сайт data.world содержит дополнительные инструкции и примеры использования предложения SELECT в операторах SQL. Вы можете получить доступ к этим материалам на Основные понятия: пункты SELECT и FROM .
Удаление повторяющихся строк из результата запроса
Вы, наверное, помните, что каждая строка таблицы базы данных уникальна. Это не всегда так с результатом запроса. Обратите внимание, что если бы мы написали запрос для отображения только столбца position из таблицы Member, многие строки результата запроса содержали бы повторяющуюся информацию (см. Рисунок 12.12 ).
Рисунок 12.12: Результат запроса с повторяющимися строками.
Дублированные строки появляются, потому что несколько участников занимают одинаковые должности в клубе. В этом случае многие участники занимают позицию «члена». Могут быть случаи, когда вы захотите увидеть эту дублированную информацию. Однако если первоначальной целью запроса было отобразить список различных позиций, занимаемых членами, повторяющиеся строки могут затруднить определение уникальных позиций.
Мы можем переписать запрос, чтобы в результатах запроса отображались только уникальные строки (см. Рисунок 12.13 ). Для этого мы включаем ключевое слово DISTINCT после SELECT в предложение SELECT. Обратите внимание, что среди 33 членов таблицы есть только шесть уникальных позиций. Обновленный синтаксис приведен ниже.
SELECT DISTINCT position FROM Member
Рисунок 12.13: Запрос, показывающий только уникальные строки.
Предыдущий
Далее
Использование оператора SELECT в SQL
Оператор SQL «SELECT» — это выражение, используемое для извлечения данных из базы данных. Вы можете получить данные только из одной таблицы или из нескольких. Для начала лучше всего получить данные из одной таблицы, а потом научиться соединять таблицы. Обратите внимание, что большинство разработчиков SQL используют все заглавные буквы для выражений SQL.
Оператор SELECT
Ниже приведен шаблон, который можно использовать для написания оператора SELECT:
SELECT
Имя | Фамилия |
Фрэнк | Лоэ |
Эд | Томпсон |
Эд | Томпсон |
Джо | Смит |
Фрэнк | Доу |
В большинстве случаев вы не хотите возвращать все записи. В приведенном выше примере SQL возвращает имя и фамилию для всех клиентов в таблице «Клиенты». Обычно вы хотите выбрать данные только из определенного количества записей. Например, вы можете захотеть найти всех клиентов с фамилией «смит». Обратите внимание, что регистр значения не имеет. «Smith», «SMITH» и «smith» вернут одни и те же записи. Следующая инструкция SQL находит всех клиентов с фамилией «smith» и возвращает их:
SELECT first_name, last_name FROM Customers WHERE last_name=’smith’
Приведенный ниже набор данных — это то, что возвращает SQL.
Имя | Фамилия |
Джо | Смит |
Вы также можете использовать следующую инструкцию SQL для возврата всех столбцов:
SELECT * FROM Customers WHERE last_name=’smith’
Второй оператор следует использовать, когда вы хотите просмотреть все столбцы, но опять же, из соображений производительности лучше избегать использования звездочки для возврата столбцов. Использование звездочки удобно, если вы хотите просмотреть данные, но не знаете имен столбцов в таблице. Обратите внимание, что строковое значение заключено в одинарные кавычки. В большинстве языков программирования вы используете кавычки для обозначения строкового ввода.
При создании оператора SELECT вам необходимо знать столбцы в таблице. Если вы используете имя столбца, которого нет в таблице, ваш механизм SQL вернет ошибку.
Допустим, вы хотите найти в своих записях одного клиента, вы используете тот же запрос SELECT, но с уникальным идентификатором. На следующем изображении показан пример таблицы SQL:
Приведенная выше таблица похожа на таблицу клиентов, за исключением того, что она называется «Учетные записи». Столбец AccountId задан как первичный ключ, поэтому вы знаете, что этот столбец должен быть уникальным среди остальных данных таблицы. Затем вы можете использовать этот столбец, чтобы найти одного клиента. Когда вы работаете с веб-сайтами, у вас обычно есть таблица со списком учетных записей или клиентов. Вам нужно будет найти одного клиента из тысяч (или миллионов) других клиентов. Столбец первичного ключа — это то, как вы ищете клиента в своей таблице. Используя приведенную выше таблицу, вы можете найти уникального клиента, используя следующий запрос SELECT:
ВЫБЕРИТЕ имя, фамилию ИЗ учетных записей, ГДЕ AccountId=344
Обратите внимание, что целочисленное значение не заключено в кавычки. Вы не используете кавычки при запросе по числовому значению. В приведенном выше запросе результатом является одна запись с AccountId, которая соответствует 344.
SQL также позволяет использовать даты в запросах. Например, вы можете получить список клиентов, которые зарегистрировались за последние 24 часа. В примере таблицы Accounts имя столбца — «CreateDate». В языке SQL есть функция getDate(), которая получает текущую дату. Функция getDate() получает дату на сервере. Если ваш сервер находится в другом часовом поясе, язык SQL отображает время сервера. Следующий код получает список аккаунтов, зарегистрированных за последние 24 часа:
SELECT first_name, last_name FROM account WHERE CreateDate > getdate()-24
Оператор getdate()-24 получает текущую дату и вычитает из нее 24 часа. Затем он захватывает данные, в которых дата больше, чем дата, зарегистрированная в столбце CreateDate. Результатом является список клиентов, которые подписались на ваши отчеты в течение последних 24 часов.
Предложение WHERE не ограничивается одним столбцом. Вы можете использовать предложение WHERE для фильтрации по нескольким столбцам. Например, предположим, что вы не знаете уникальный идентификатор учетной записи клиента. Вы знаете фамилию клиента и знаете, что он зарегистрировался между двумя датами. Следующий запрос поможет вам найти клиента:
ВЫБЕРИТЕ AccountId, Имя, Фамилию ИЗ учетных записей, ГДЕ Фамилия = ‘smith’ и CreateDate между ‘1/1/2014′ и ’31/1/2014’
В приведенном выше примере оператор SQL находит всех клиентов с последним имя «smith» и еще больше ограничивает список теми клиентами, которые зарегистрировались между «01.01.2014» и «31.01.2014». Даты, как и строки, также заключаются в одинарные кавычки. Пример запроса не ограничивает ваши результаты одной записью. Существует вероятность того, что запрос может вернуть более одной учетной записи, но набор записей должен быть достаточно мал, чтобы вы могли найти нужного клиента, а затем использовать поиск SQL-запроса, чтобы найти точного клиента.
Ключевое слово DISTINCT также полезно, когда вы хотите найти одну запись в таблице. DISTINCT возвращает только уникальные значения. Например, предположим, что вы хотите знать, из каких стран ваши клиенты. Вероятно, у вас есть несколько клиентов в одном и том же месте, но вам нужен только список городов. Вы используете фразу DISTINCT, чтобы вернуть только уникальные города в вашей таблице клиентов. Следующий оператор получает отдельный список городов:
SELECT DISTINCT city FROM Accounts
В приведенном выше запросе, даже если у вас есть десятки клиентов в одном городе, значение города возвращается только один раз. Затем у вас есть список городов клиентов.
Одна из проблем с этими запросами заключается в том, что они неупорядочены. Это помогает вернуть набор записей, упорядоченный в алфавитном порядке. В SQL есть фраза ORDER BY, которая позволяет упорядочивать записи в алфавитном, числовом или хронологическом порядке. Следующая инструкция SQL упорядочивает записи по названию города:
SELECT DISTINCT city FROM Accounts ORDER BY city
Вы также можете расположить записи в обратном порядке. Следующий код перечисляет в алфавитном порядке отдельные наборы записей городов в обратном порядке:
ВЫБРАТЬ ОТДЕЛЬНЫЙ город ИЗ учетных записей ORDER BY city DESC
SQL позволяет упорядочивать записи, используя несколько столбцов. Предположим, вы хотите увидеть список клиентов для каждого города. Вы хотите упорядочить города, но у вас также есть несколько клиентов в одном городе, поэтому вы хотите расположить имена клиентов в алфавитном порядке по фамилии. Следующая инструкция SQL выполняет сортировку за вас:
ВЫБЕРИТЕ город, имя, фамилию ИЗ учетных записей ORDER BY city, lastname
Фраза DISTINCT была удалена из выписки, поскольку у вас мог быть клиент в том же городе с тем же именем и фамилией. Использование фразы DISTINCT отсеет часть клиентов, и ваш отчет будет неверным. Пример оператора возвращает список имен и фамилий клиентов. В первой части списка отображается город, а города расположены в алфавитном порядке. После того, как города упорядочены, SQL сортирует клиентов в каждом городе по фамилии клиента.
Последнее значение, которое вы можете сохранить в своих таблицах, это NULL. Значения NULL — это заполнители, указывающие на отсутствие значения, хотя технически NULL является значением. Структура таблицы SQL позволяет решить, разрешены ли значения NULL в столбцах. Когда в качестве значения сохраняется NULL, вы можете удалить эти значения из своих отчетов. Например, ваш клиент не указал город в процессе регистрации, и вам это не требовалось, поэтому база данных сохранила NULL вместо значения. Следующая инструкция SQL отфильтровывает значения NULL из набора записей:
ВЫБЕРИТЕ город, имя, фамилию ИЗ Учетных записей, ГДЕ город НЕ НУЛЬ УСТАНОВИТЬ ПО городам, фамилиям.