Формат SQL-операторов
Существуют SQL-операторы для всех типов операций, которые можно выполнять с базой данных. SQL-операторы используются для создания новой базы данных и добавления в нее таблиц и индексов. Можно использовать SQL-операторы для обновления базы данных. SQL - функционально полный язык для управления базами данных, но наиболее часто он используется для выборки данных из базы. Выборка данных из базы называется запросом к базе данных, а SQL-операторы для осуществления запросов к базе данных называются командами выбора (Select-statements), потому что они содержат глагол SELECT (Выбирать).
Общий формат команд выбора следующий. SELECT (список полей) FROM (список таблиц) WHERE (выражение).
Примечание
Ключевые слова SQL в книге печатаются прописными буквами, но SQL не чувствителен к регистру. Использование верхнего регистра — вопрос стиля. Это помогает читателям, которые не знакомы с SQL, находить ключевые слова и лучше понимать его сложные элементы.
(список полей)
Эта часть команды SQL — список полей, разделенных запятыми, которые будут включены в запрос. Если имя элемента (поля или таблицы) содержит пробел, необходимо заключить его в квадратные скобки ([ ]) Например, чтобы включить в запрос поле Customer Name (Имя заказчика), нужно ввести [Customer Name].
Полное имя каждого поля предваряется именем таблицы, которой оно принадлежит Эта запись обеспечивает уникальность имен полей, даже если несколько таблиц имеют поля с одинаковыми именами. Например, полное имя поля Total (Итог) в таблице Customer Orders (Счета заказчика) — [Customer Orders] Total. Если имя поля Total не появляется ни в какой другой таблице, то имя таблицы можно опустить и обратиться к этому полю как Total.
Результат выполнения запроса Select содержит записи таблицы, соответствующие критериям, и строку заголовков. Заголовки — это имена полей, задаваемые при проектировании базы данных. При отображении результатов запроса с помощью связанного с данными элемента управления Grid (Сетка) в качестве заголовков отображаются имена полей. Чтобы изменить заголовки, используйте ключевое слово AS после имени поля. Это удобно, когда для имени поля таблицы возникает неоднозначность в контексте запроса, содержащего несколько таблиц с совпадающими именами в различных таблицах. Например, если имеется поле Total в таблице Customer Orders, то можно отобразить заголовок Order Total этого поля следующим образом.
[Customer Orders].[Total] AS [Order Total]
Чтобы выбрать все поля в таблице, используйте звездочку (*) вместо пере числения имен всех полей. Например, следующая команда выбирает все поля в таблице Orders: SELECT * FROM Orders
(список таблиц)
Эта часть команды — список всех таблиц, на которых основан запрос. Чтобы выбрать поля из нескольких таблиц, разделите имена полей запятыми. Если SQL-запрос основан более чем на одной таблице, было бы неплохо перед именами полей добавить имена таблиц, которым поля принадлежат.
При выборе полей из нескольких таблиц необходимо указать, как связать таблицы. Если вы укажете только имена таблиц, то результат запроса будет содержать все возможные комбинации полей в каждой таблице. Чтобы связать поля в нескольких таблицах, создайте, так называемое, объединение (join), являющееся фундаментальным понятием в командах выбора SQL.
(выражение)
Эта часть команды — логическое выражение, использующееся для отбора данных и возвращающее объект RecordSet. Для формирования этого выражения можно использовать большинство встроенных функции и операторов Visual Basic, а также следующие SQL-операторы.
field_name BETWEEN value1 AND value2
- возвращаются только строки, в которых поле field_name имеет значение в диапазоне от valuel до value2 (пример см в параграфе "#date#")
field_name IN (valuel, value2, ...) - возвращаются только те строки, в которых поле field_name совпадает с одним из значений в круглых скобках. Внутри скобок задается любое число элементов. Следующая команда возвращает записи для заказчиков из определенных городов.
SELECT Customers.CompanyName, Customers.ContactTitle,
Customers.City, Customers.Country FROM Customers WHERE
UCase(customers.city) IN ("BERLIN", "LONDON", "BERN", "PARIS")
ORDER BY Customers.Country
#date# Этот оператор определяет даты внутри выражения по американской системе месяц/день/год. Например, следующая SQL-команда возвращает из базы данных NWIND все заказы, произведенные в 1994 году.
SELECT Orders.ShipName, Orders.OrderDate, Orders.CustomerID
FROM Orders WHERE OrderDate BETWEEN #1/1/94# AND #12/31/94#
LIKE Этот оператор - один из наиболее мощных и сложных в SQL. Он предназначен для выбора строк по шаблону. Для формирования выражения используются специальные символы, перечисленные в табл. 17.11.
Таблица 17.11. Специальные символы, используемые в операторе LIKE
Символ |
Пояснение |
Пример |
* |
Любая группа символов |
Joh* определяет John, Johnson и John's |
? |
Любая одиночная буква |
?t определяет at и it |
# |
Любая одиночная цифра |
1234#67 определяет 1234167, 1234267, 1234367, 1234467 и т.д. |
[] |
Один символ из заключенных в скобки |
[ai]t определяет at и it, но не bt |
[!] |
Любой символ не из скобок |
[!a]t определяет it, но не at |
[-] |
Любой символ из диапазона |
[i-k]t определяет it, jt, и kt, но не at или st |
SELECT Customers.CompanyName, Customers.ContactName,
Customers.Country, Customers.City FROM Customers
ORDER BY Customers.Country, Customers.City
(В этой команде можно не указывать имя таблицы перед именами полей.) Результаты работы команды показаны ниже.