- •1) Базовые понятия реляционных баз данных.
- •Кортеж, отношение
- •2) Фундаментальные свойства отношений. Отсутствие кортежей-дубликатов
- •Отсутствие упорядоченности кортежей
- •Отсутствие упорядоченности атрибутов
- •Атомарность значений атрибутов
- •3) Теоретические языки запросов.
- •4) Реляционная алгебра.
- •Общая интерпретация реляционных операций:
- •Замкнутость реляционной алгебры и операция переименования
- •Специальные реляционные операции:
- •Операция ограничения
- •Операция взятия проекции
- •Операция соединения отношений
- •Операция деления отношений
- •5) Реляционное исчисление.
- •Кортежные переменные и правильно построенные формулы
- •Целевые списки и выражения реляционного исчисления
- •Реляционное исчисление доменов
- •6) Индексирование.
- •7) Связывание таблиц.
- •8) Контроль целостности связей.
- •1) Общая характеристика субд Access.
- •2) Создание таблиц и ввод данных средствами sql.
- •Определение столбца
- •Определение ограничений целостности таблицы
- •3) Выборка данных средствами sql.
- •Директива from
- •4) Предикаты.
- •Предикат all
- •Предикат distinct
- •Предикат distinctrow
- •Предикат null
- •Операция объединения inner join
- •5) Сложные запросы в sql и поддержка целостности данных. Групповые функции
- •Запросы на выполнение действия
3) Выборка данных средствами sql.
-
Ключевое слово
Перевод
SELECT<список_полей>
выбрать
FROM<имена_таблиц>
из
WHERE <Условия_поиска>
при
IN <имя_внешней_базы_данных>
в
INNER JOIN
объединяя
GROP BY <список_полей >
группируя по
HAVING <условия _поиска>
имеющие
ORDER BY <список_полей>
упорядочивая по
AS <псевдонимы>
как
ALL,DISTINCT, DISTINCTROW, TOP (предикаты)
все, различные, различные ряды, первые
При наборе запроса для перехода на другую строку следует использовать комбинацию <CTRL>+<ENTER> .
Оператор SELECT
Пример:
SELECT Клиенты.Фирма
FROM Клиенты, [Заинтересованные лица]
WHERE Клиенты.Фирма = [Заинтересованные лица].Фирма;
Выборка будет содержать все фирмы, которые присутствуют как в таблице “Заинтересованные лица”, так и в таблице “Клиенты”.
SELECT является первым ключевым словом в определении SQL-запроса.
При указании более чем одного поля их имена отделяются друг от друга запятыми. Перечислять имена полей следует в той последовательности, в которой они должны быть помещены в выборку.
Если используется имя поля, содержащее пробелы или другие разделители, имя следует заключать в квадратные скобки.
Если в запросе обрабатывается несколько таблиц, то во избежание неопределенности в списках полей рекомендуется приводить полную спецификацию поля, т.е. <имя_таблицы>.<имя_поля>.
Директива from
Директива FROM задает имя таблицы или запросы, которые содержат поля, перечисленные в операторе SELECT.
Директива FROM является обязательной.
При перечислении таблиц самые короткие таблицы (содержащие меньшее количество записей) рекомендуется указывать в первую очередь.
С помощью “*” из таблицы можно выбрать все поля:
SELECT Клиенты.* FROM Клиенты;
В выборках автоматически используются имена выбираемых полей в качестве имен полей в выборке. Если необходимо изменить имена полей в выборке, следует использовать директиву AS и задать соответствующий псевдоним.
В следующем примере поле «Фирма» должно быть представлено в выборке как поле «Название клиента»:
SELECT Фирма AS [Название клиента] FROM Клиенты;
Директива WHERE
WHERE является необязательной директивой. Если WHERE отсутствует, будут выбраны все записи данных.
Директива ORDER BY
Определяет список полей и порядок сортировки записей данных, включенных в выборку.
Синтаксис:
ORDER BY поле1 [ASC | DESC] , поле2 [ASC | DESC] [,[…]]
Директива ORDER BY не является обязательной. Если она не используется, данные представляются в неотсортированном виде. Однако, если используется предикат TOP, то Директива ORDER BY становится обязательной.
По умолчанию используется группировка по возрастанию (ACS). DECS – группировка по убыванию.
Порядок перечисления полей задает иерархию уровней сортировки.
Директива ORDER BY является последней директивой в запросе.
Директива GROUP BY
Группирует записи данных и объединяет в одну запись все записи данных, которые содержат идентичные значения в указанном поле (или полях).
Пример:
SELECT [название товара], SUM([Стоимость])
FROM Товары
GROUP BY [Название товара]
В этом примере исходные записи с одинаковыми названиями товара группируются и объединяются в одну запись в выборке.
Директива не является обязательной. Если условие указывается, оно должно следовать за FROM или WHERE.
Для фильтрации записей, которые должны группироваться, может использоваться директива WHERE, директива HAVING может использоваться для фильтрации записей, полученных в результате этой группировки.
В директиве GROUP BY можно использовать любые поля, упомянутые в директиве FROM; эти поля не обязательно должны быть перечислены в списке полей оператора SELECT.
В операторе SELECT для всех полей, включенных в выборку, но не перечисленных в директиве GROUP BY, обязательно должны присутствовать функции группирования, такие как SUM, COUNT, AVG.
Директива HAVING
Используется для фильтрации записей после группирования только в случае использования в запросе директивы GROUP BY.
Директива HAVING не является обязательной. Если она присутствует, то должна следовать за директивой GROUP BY.
Функция директивы HAVING схожа с WHERE – обе используются для фильтрации.
Директива WHERE определяет, какие записи должны участвовать в группировании, т.е. фильтрует записи до группирования. HAVING определяет, какие из получившихся в результате группировки записей будут включены в результирующую выборку, т.е. фильтрует записи после группирования.
Пример:
SELECT Отделение, Count ([Отделение])
FROM Сотрудники
GROUP BY Отделение
HAVING Count ([Отделение]) > 50;
В выборку будут включены отделения, в которых число сотрудников больше 50.
Директива IN
Директива IN используется для запросов к другим базам данных, с которыми Access может быть связан. В следующем примере формируется запрос, который использует данные таблицы Access «Заинтересованные лица» и файл БД в формате dBASE IV CLIENTS.DBF:
SELECT CLIENTS.DBF.Firm
FROM CLIENTS.DBF, [Заинтересованные лица]
IN C:\ dBASE\DATA\ CLIENTS «dBASE;»
WHERE CLIENTS.DBF.Firm = [Заинтересованные лица].[Фирма]
Можно формировать только одну связь к внешней БД (под внешней базой данных понимается любая другая база, отличная от текущей).
Для указания базы данных, которая имеет формат, отличный от формата Access, нужно добавить к обозначению типа базы данных точку с запятой и заключить его в кавычки, например, «dBASE;».
