double arrow

Выборка данных - оператор SELECT.

Тема: Создание запросов на выборку.

Введение в SQL

SQL является инструментом для выборки и обработки информации, которая содержится в компьютерной базе данных. Уникальность этого языка состоит в том, что он является единственным стандартным языком баз данных. Язык SQL поддерживают свыше 100 СУБД (С истемы У правления Б азами Д анных). И самое главное: несмотря на то, что каждая СУБД по-своему извращается над стандартом (вносит какие-то свои дополнения), стандартный SQL поддерживают все базы данных.

Когда пользователю необходимо получить информацию из базы данных, он запрашивает эту информацию у СУБД с помощью SQL. СУБД обрабатывает запрос, находит (или не находит) требуемые данные и возвращает результат пользователю.

SQL используется для реализации всех функциональных возможностей, предоставляемых СУБД. К ним относятся:

  • Организация данных. SQL предоставляет пользователю возможность изменять структуру представления данных, а также устанавливать отношения между элементами базы данных.
  • Выборка данных. SQL дает пользователю или приложению возможность извлекать из базы данных содержащуюся в ней информацию и пользоваться ею.
  • Обработка данных. SQL дает пользователю или приложению возможность изменять базу данных, то есть добавлять в нее новые данные, а также удалять или модифицировать имеющиеся данные.
  • Управление доступом. С помощью SQL можно ограничить возможности пользователя по выборке и изменению данных и защитить их от несанкционированного доступа.
  • Совместное использование данных. SQL позволяет координировать совместное использование данных пользователями, которые работают параллельно, чтобы они не мешали друг другу.
  • Целостность данных. SQL позволяет обеспечить целостность базы данных, защищая ее от разрушения из-за несогласованных изменений или отказа системы.

Операторы языка SQL.

Команды языка SQL можно поделить на три категории:

  • DDL - D ata D efinition L anguage (Язык Определения Данных) - состоит из команд, которые создают объекты (таблицы, индексы, представления, и так далее) в базе данных.
  • DML - D ata M anipulation L anguage (Язык Манипулирования Данными) - это набор команд, которые определяют какие значения представлены в таблицах в любой момент времени.
  • DCL - D ata C ontrol L anguage (Язык Управления Данными) - состоит из средств, которые определяют, разрешить ли пользователю выполнять определенные действия или нет.

Рассмотрим основные операторы DDL.

Выборка данных - оператор SELECT.

Замечание: SQL является регистронезависимым языком, то есть различия между большими и малыми буквами не существует.

Предположим у нас есть таблица, которая хранит информацию об имеющихся книгах и их атрибутах

Запрос, позволяющий отобразить всю таблицу (она называется Books) целиком, выглядит таким образом: Select * From Books

Здесь: Select - оператор выборки данных; * - указывает, что должны выбираться все столбцы в том же порядке, как они определены в базе данных; ключевое слово From указывает откуда должны выбираться данные (имя таблицы).

Если же пользователю не нужна полная информация, он может указать какие столбцы необходимо выбирать и в каком порядке, расположив имена столбцов после инструкции Select, и разделив их запятыми.

Select Name, Author, Press, Pages

From Books

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

Пользователь также имеет возможность форматировать вывод результата запроса на экран. Например, результат запроса

Select 'Book = ', Name, 'Press = ', Press

From Books

дает следующие результаты (см. рисунок).

Как можно заметить, у текстовых столбцов не очень понятное название (Expr2000 и т. п.). Так происходит потому, что таких столбцов в базе не существует и Access дает им собственные названия. Чтобы этого избежать, можно дать этим столбцам псевдонимы.

Select 'Book = ' as BookName, Name, 'Press = 'as PressName, Press

From Books

Результат представлен на рисунке.

Кстати, такой псевдоним можно назначить даже существующему в таблице столбцу.

SQL также позволяет создавать "на лету" столбцы, значения в которых строятся на основе какого-либо выражения, в котором участвуют значения "реальных" столбцов, в каждой строке соответственно. Такой столбец называется вычислимым.

Например, вычислим общее количество страниц по имеющимся в наличии книгам.

Select Name, Quantity * Pages as TotalPages

From Books

Результат выполнения запроса представлен на рисунке.

Бывают случаи, когда в результирующем наборе строк появляются дубликаты (идентичные строки). Например, рассмотрим следующий запрос:

Select Author From Books

В данном случае мы получаем список всех авторов в таблице, но так как некоторые из них написали более одной книги, то в результирующем наборе встречаются одинаковые строки. Если нам это не нужно, то существует возможность исключить из результирующего набора строк дубликаты с помощью ключевого слова Distinct. Перепишем запрос:

Select Distinct Author From Books

Результат выполнения запроса представлен на рисунке.

Как видите, строки-дубликаты больше не появляются.

Однако, далеко не всегда нужно выбирать все строки таблицы. Если пользователю нужна какая-то конкретная информация, то он может ограничить результирующий набор строк, используя дополнительные условия (уточняя запрос).

Для установки условия используется ключевое слово Where и набор логических операторов:

  • > - больше
  • >= - больше либо равно
  • < - меньше
  • <= - меньше либо равно
  • = - равно
  • <> - не равно (в некоторых базах используется знак!=)
  • and - логическое "И" (умножение)
  • or - логическое "или" (сложение)
  • not - логическое "не" (отрицание)
  • between - принадлежность диапазону
  • in - проверка на членство в множестве
  • like - проверка на соответствие шаблону
  • is null - проверка на равенство значению NULL

Под значением NULL понимают неопределенное значение. Результатом логического выражения в SQL может быть либо истина, либо ложь, либо NULL (когда любая из частей выражения равна NULL). Строка будет включаться в результирующий набор только в том случае, если результат проверки условий отбора равен истине.

Приведем несколько примеров:

Запрос: необходимо вывести книги по программированию издательств "Питер" и "BHV"

Select Name as Название, Themes as Тематика, Press as Издательство

From Books

Where Themes = 'Программирование' and (Press = 'BHV' or Press = 'Питер')

Результат выполнения запроса представлен на рисунке.

Замечание: строки в SQL берутся в одинарные кавычки

Запрос: отобразить все книги, у которых количество страниц лежит в пределах от 200 до 600

Select Name as Название, Pages as Страницы

From Books

Where Pages Between 200 And 600

Результат выполнения запроса представлен на рисунке.

Запрос: отобразить все книги, имена авторов которых лежат в диапазоне от буквы 'В' до 'О'

Select Name as Название, Author as Автор

From Books

Where Name Between 'В' And 'О'

Результат выполнения запроса представлен на рисунке.

Замечание: при сравнении с текстом, отбор осуществляется согласно ASCII-кодам символов

Запрос: выбрать книги, относящиеся к программированию или к базам данных, и издательства которых не 'Питер'и не 'Бином'

Select Name as Название, Themes as Тематика, Press as Издательство

From Books

Where Press not in ('Питер','Бином')

and

Themes in ('Программирование','Базы данных')

Результат выполнения запроса представлен на рисунке.

Запрос: выбрать из таблицы тех авторов, у которых в имени и фамилии не менее трех букв 'а'

Select Name as Автор

From Books

Where Name Like '*а*а*а*'

Результат выполнения запроса представлен на рисунке.

Оператор Like реализует поиск по шаблону:

  • * - означает, что данной позиции может присутствовать 0 или более любых символов (в других СУБД применяется символ %);
  • ? - означает, что в данной позиции обязан присутствовать 1 любой символ (в других СУБД применяется символ _);
  • # - означает, что в данной позиции обязана присутствовать 1 любая цифра;
  • [a-z] - означает, что в данной позиции обязан присутствовать 1 символ из указанного диапазона;
  • [dfaf] - означает, что в данной позиции обязан присутствовать 1 символ из указанного множества;
  • [!safgwe] - означает, что в данной позиции обязан присутствовать 1 символ, не входящий в указанный диапазон.

Для сортировки результирующих строк используется оператор Order By с необязательным параметром Asc (стоит по умолчанию) - сортировка по возрастанию (по алфавиту для строк), или Desc - сортировка по убыванию.

Запрос: отобразить всех авторов и их книги, авторов отсортировать по возрастанию, а названия книг (по авторам) по убыванию (вторичная сортировка)

Select Author as Автор, Name as Название

From Books

Order By Author, Name Desc

Результат выполнения запроса представлен на рисунке.

Итог:

Запрос на выборку данных подчиняется строгой структуре:

  1. Сначала указывается что выбрать и как отобразить (Select)
  2. Затем откуда выбрать (From)
  3. Как выбрать (Where)
  4. Как сортировать (Order By)

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: