- •Выборка данных
- •Оператор select
- •Выражения sql
- •Выражение from
- •Операции left join, right join
- •Операция inner join
- •Выражение in
- •Предикаты all, distinct, distinctrow, top
- •Объявление with owneraccess option
- •Выражение where
- •Операция Like
- •Операция In
- •Операция Between...And
- •Подзапрос
- •Выражение order by
- •Выражение group by
- •Выражение having
- •Оператор union
- •Оператор transform
- •Выражение procedure
- •Объявление parameters
- •Изменение данных
- •Оператор update
- •Оператор insert into
- •Оператор delete
- •Изменение структуры
- •Оператор select...Into
- •Оператор create table3
- •Выражение constraint4
- •Оператор alter table5
- •Оператор create index6
- •Оператор drop7
- •Агрегатные функции
- •Функция Count
- •Функция Avg
- •Функция Sum
- •Функции Var и VarP
- •Функции StDev и StDevP
- •Функции Min, Max
- •Функции First, Last
Объявление with owneraccess option
Не обязательно. В многопользовательской среде с защитой на уровне пользователя позволяет выполнить запрос с теми же правами, которыми обладает владелец запроса. Формат
sqlstatement WITH OWNERACCESS OPTION
Следующий запрос позволяет посмотреть Salary даже пользователю, не имеющему доступа к таблице Employees, т.к. работает с правами владельца запроса:
SELECT LastName, FirstName, Salary FROM Employees ORDER BY LastName WITH OWNERACCESS OPTION;
Часто используется для ограничения доступа к полям: пользователь не имеет доступа к таблице (в отличие от владельца запроса), но может посмотреть/изменить указанные в запросе поля. Если пользователь не имеет права создавать или менять таблицы, запрос с WITH OWNERACCESS OPTION позволит ему это сделать. Использование этого объявления равносильно установке свойства RunPermissions = Owner в окне свойств конструктора запросов, а отсутствие соответствует RunPermissions = User.
Объявление WITH OWNERACCESS OPTION требует доступа к файлу рабочих групп (System.mdw)
Выражение where
Указывает, на какие записи таблиц, перечисленных в выражении FROM действуют операторы SELECT, UPDATE или DELETE. Формат
SELECT fieldlist FROM tableexpression WHERE criteria
Оператор SELECT, содержащий выражение WHERE, имеет следующие части:
Часть |
Описание |
fieldlist |
Имя выводимого поля/полей с псевдонимами и предикатами ALL, DISTINCT, DISTINCTROW или TOP и т.п. |
tableexpression |
Имя таблицы/таблиц с данными |
criteria |
Выражение, которому должны удовлетворять записи, попадающие в запрос. |
WHERE не обязательно, но если указано, следует за FROM. Microsoft Jet отбирает записи, удовлетворяющие условию в выражении WHERE. Например, можно выбрать всех сотрудников отдела продаж (WHERE Dept = 'Sales') или всех клиентов возрастом от 18 до 30 (WHERE Age Between 18 And 30). Если оно не указано, выбираются все записи. Если указано несколько таблиц и нет выражения WHERE или JOIN, формируется декартово произведение таблиц.
Если при объединении данных из нескольких таблиц не используется выражение JOIN, построенный на основе запроса набор записей (Recordset) будет необновляемым.
WHERE аналогично HAVING. Оно указывает, какие записи будут выбраны, так же как HAVING указывает, какие записи будут выведены при группировании (GROUP BY). Выражение WHERE используется, чтобы исключить ненужные записи из запроса.
В выражении WHERE можно использовать до 40 логических выражений, объединенных операторами And или Or. Имена полей, содержащие пробелы или знаки пунктуации, заключаются в прямые скобки: SELECT [Customer's Favorite Restaurant]. Дата должна быть указана в американском формате – месяц/число/год, например 5/10/96 – 10 мая 1996 – и заключена в #:
SELECT * FROM Orders WHERE ShippedDate = #5/10/96#;
Можно использовать функцию DateValue, учитывающую региональные настройки:
SELECT * FROM Orders WHERE ShippedDate = DateValue('5/10/96');
– United States
SELECT * FROM Orders WHERE ShippedDate = DateValue('10/5/96');
– United Kingdom.
Для полей типа GUID используется следующий формат:
WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}
Условия в выражении WHERE те же, что используются в конструкторе запросов.
Выбор всех служащих по фамилии King:
SELECT LastName, FirstName FROM Employees WHERE LastName = 'King';
Выбор всех служащих с фамилией, начинающейся на S:
SELECT LastName, FirstName FROM Employees WHERE LastName Like 'S*';
Выбор товаров с ценой от $20 до $50 включительно:
SELECT ProductName, UnitPrice FROM Products WHERE (UnitPrice >=20.00 And UnitPrice <= 50.00);
Выбор товаров с названиями между "Cha" и "Out" включительно (не возвращает "Outback Lager" т.к. "Outback Lager" «больше» "Out"):
SELECT ProductName, UnitPrice FROM Products WHERE ProductName Between 'Cha' And 'Out';
Выбор заказов за перыую половину 1995 года:
SELECT OrderID, OrderDate FROM Orders WHERE OrderDate Between #1-1-95# And #6-30-95#;
Выбор заказов, доставленных в Idaho, Oregon и Washington:
SELECT OrderID, ShipRegion FROM Orders WHERE ShipRegion In ('ID', 'OR', 'WA');
