- •Язык запросов sql
- •Общие сведения
- •Insert - запрос на добавление;
- •Инструкция select
- •Синтаксис select
- •Расширения инструкции select в access
- •Порядок выполнения выборки
- •Управление списком выбора
- •Указание источника данных
- •Применение реляционных операторов
- •Применение булевых операторов
- •Обработка неопределенных значений
- •Сортировка данных
- •Вычисление агрегатных функций
- •Группировка данных
- •Ограничение для групп данных
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Операции с таблицами
- •Изменение структуры таблицы
- •Удаление таблицы
- •Действия со строками
- •Вставка строк в таблицу
- •Изменение данных в таблице
- •Удаление данных из таблицы
- •Инструкция transform
- •In ("Физика", "Математика");
- •Глава 5 Работа с формами
Указание источника данных
Если источником данных для таблиц запроса является внешняя база (это может быть БД Access, Paradox, Foxpro, dBASE или другая БД с установленным драйвером ODBC), необходимо указать в инструкции SELECT предложение IN:
SELECT selectionjist FROM table_name IN DB_name [str_connection];
где: DB_name - имя внешней БД, используемой в качестве источника данных (в кавычках);
str_connection - строка подключения указанного источника данных (в квадратных скобках). Для баз Access параметр str_connection не указывается.
Например, если требуется указать в качестве источника базу D:\Edu.mdb, нужно указать следующее предложение IN:
IN "D:\Edu.mdb"
Для других баз данных (не Access) имя файла не указывается (вместо этого вводим пустую строку ""), а параметр str_connection имеет специальный вид, например:
IN [Paradox 5.x; DATABASE=D:\Edu;]
IN "" [Foxpro 2.6; DATABASE=D:\Edu;]
IN "" [dBASE 5.0; DATABASE=D:\Edu;]
Если подключается источник данных ODBC, то в параметре str_connection указывается строка следующего вида:
IN [ODBC; DATABASE=DB_name; UID=user_name; PWD=password; DSN=source_name]
где: DB_name - имя базы данных; user_name - имя пользователя; password - строка пароля; source_name - имя источника данных.
Если не указана БД (DATABASE=) или источник данных (DSN=), то при выполнении запроса будет выведено диалоговое окно со списком доступных источников данных, где потребуется выбрать нужный. Если не указать имя пользователя (UID=) и пароль (PWD=), то при выполнении запроса отобразится диалог регистрации пользователя.
ЗАПРОС НА СОЗДАНИЕ ТАБЛИЦЫ
Выборку, полученную при выполнении запроса, можно сохранить в новой таблице. Для этого в инструкции SELECT используется ключевое слово INTO:
SELECT selectionjist INTO new_table
FROM table_name;
Например, чтобы сохранить данные о студентах (фамилия, имя и отчество) в новой таблице (назовем ее qryStudentsPersonnel), нужно выполнить такой запрос:
SELECT fLastName, fFirstName, fMiddleName INTO tblStudents-
Personnel
FROM tbIStudents;
ПРЕДЛОЖЕНИЕ WHERE
Как правило, нет необходимости извлекать из таблицы все строки, особенно для больших таблиц, которые содержат сотни, а то и сотни тысяч записей. Намного чаще пользователей интересуют только отдельные строки с необходимой им информацией.
Для задания условий выборки в операторе SELECT предусмотрено использование предложения WHERE, которое имеет следующий синтаксис:
SELECT selectionjist
FROM table_name
[WHERE condition [,...n]];
WHERE служит для задания условий (condition) выборки, которые указываются непосредственно за этим предложением и кроме имен столбцов могут включать в себя следующие компоненты построения условий:
-
реляционные операторы;
-
булевы операторы.
Применение реляционных операторов
Реляционный оператор - это математический символ, который указывает на определенный тип отношения между двумя значениями. Перечислим реляционные операторы, которые поддерживаются в языке SQL:
-
=-равно;
-
>-больше;
-
<-меньше;
-
>= - больше или равно;
-
<= - меньше или равно;
-
<> - не равно.
Наверное, самый простой и часто используемый из этих операторов - оператор равенства. Например, если необходимо отобразить полную информацию из таблицы tbIStudents только для студентов с фамилией «Иванов», следует задать условие отбора для столбца fLastName:
SELECT *
FROM tbIStudents
WHERE fLastName = 'Иванов';
Если в этом же запросе изменить знак равенства на противоположный знак «не равно», то будет отображена информация о
студентах с любой фамилией, кроме фамилии «Иванов»:
SELECT *
FROM tbIStudents
WHERE fLastName о 'Иванов';
К текстовой информации можно применять и оставшиеся операторы сравнения (<, >, <=, >=). Они сравнивают символы в соответствии с порядком их следования в алфавите. В частности, литера «А» младше литеры «Б», которая младше «В» и т.д.
Например, выполним запрос, в котором будут отображаться только те студенты, фамилии которых начинаются с литеры, расположенной в алфавите раньше, чем «И»:
SELECT *
FROM tbIStudents WHERE fLastName < 'И';
Так же работают и операторы, которые используются совместно с именами столбцов, содержащих не текстовую информацию. Например, для отображения информации о товарах (из рассмотренной выше таблицы tbIGoods), цена которых ниже 700 грн., можно выполнить следующий запрос:
SELECT fNameGoods AS Товар, fModelGoods AS Модель,
fPriceGoods AS Цена
FROM tbIGoods
WHERE fPriceGoods < 700;