Upload
evgeniy-golendyhin
View
74
Download
0
Embed Size (px)
Citation preview
1
Запросы к базе данных•Определение• Назначение•Типы, виды•Создание
Система КЗТО - «КАКОВ
ЗАПРОС, ТАКОВ ОТВЕТ»
2
О П Р Е Д Е Л Е Н И Е
ЗАПРОС (query) – это средство выбора необходимой информации из базы данных. Вопрос, сформированный по отношению к базе данных, и есть запрос.
3
О П Р Е Д Е Л Е Н И Е
ЗАПРОС – объект БД, который позволяет проводить основные операции по обработке данных – сортировку, фильтрацию, объединение данных из разных источников – и сохранять результаты с некоторым именем, чтобы в дальнейшем применять эти операции по мере необходимости.
4
О П Р Е Д Е Л Е Н И Е
ЗАПРОС – это обращение к БД для поиска или изменения в базе данных информации, соответствующей заданным критериям, некоторый набор данных, полученный в результате обращения к БД
5
О П Р Е Д Е Л Е Н И Е
•Результат запроса – новая таблица, которая существует до закрытия запроса.•Структура запроса определяется полями, выбранными из одной или нескольких взаимосвязанных таблиц БД. Записи формируются путем объединения записей таблиц, участвующих в запросе.
6
Типы запросов (2 типа): I
• QBE - запрос по образцу – средство для отыскания необходимой информации в базе данных. Формируется путем заполнения бланка запроса в окне Конструктора запросов.
7
Типы запросов (2 типа): II
•SQL – запросы – это запросы, которые составляются (программистами) из последовательности SQL – инструкций. Эти инструкции задают, что надо сделать с входным набором данных для генерации выходного набора.
8
Все запросы Access строит на основе SQL – запросов, чтобы посмотреть их, необходимо перейти в Режим – SQL Режим SQL.
9
ВИДЫ ЗАПРОСОВ•запрос-выбор (или простой запрос);•запрос-действие;•параметрический запрос;•перекрестный запрос;•запрос SQL.
10
11
СОЗДАНИЕ 1
12
Простой запрос - создает простой запрос из определенных полей.Перекрестный запрос - создает запрос, данные в котором имеют компактный формат, подобный формату сводных таблиц в Excel.Повторяющиеся записи — создает запрос, выбирающий повторяющие записи из таблицы или простого запроса.Записи без подчиненных - создает запрос, выбирающий из таблицы записи, не связанные с записями из другой таблицы.
13
14
15
16
17
Студенты не записавшиеся на факультатив
18
С помощью КОНСТРУКТОРА можно создать следующие виды запросов: • Простой• По условию• Параметрические• Итоговые• С вычисляемыми полями• SQL - запрос
19
СОЗДАНИЕ 2
20
Окно Конструктора состоит из двух частей – верхней и нижней.•В верхней части окна размещается схема данных запроса, которая содержит список таблиц – источников и отражает связь между ними.•В нижней части окна находится Бланк построения запроса QBE (Query by Example), в котором каждая строка выполняет определенную функцию:
21
Схема данных запроса
Бланк
22
Бланк· Поле – указывает имена полей, которые участвуют в запросе · Имя таблицы – имя таблицы, с которой выбрано это поле · Сортировка – указывает тип сортировки · Вывод на экран – устанавливает флажок просмотра поля на экране · Условия отбора - задаются критерии поиска · Или – задаются дополнительные критерии отбора
23
Простой запрос
24Запрос на выборку условия
25
Используются квадратные скобки
Параметрический запрос
26Итоговый запрос
27
Итоговые запросы значительно отличаются от обычных. В них поля делятся на 2 типа: -поля, по которым осуществляется группировка данных;-поля, для которых проводятся вычисления.Для составления итогового запроса, находясь в режиме конструктора, следует нажать кнопку Итоги
28
Строка Групповая операция в бланке QBE
Агрегатные функции:SUМ - вычисляет сумму всех значений заданного поля (для числовых или денежных полей), отобранных запросом;AVG - вычисляет среднее значение в тех записях определенного поля, которые отобраны запросом ( для числовых или денежных полей);MIN - выбирает минимальное значение в записях определенного поля, отобранных запросом;
29
Агрегатные функции:
MAX — выбирает максимальное значение в записях определенного поля, отобранных запросом;COUNT — вычисляет количество записей, отобранных запросом в определенном поле, в которых значения данного поля отличны от нуля;FIRST - определяет первое значение в указанном поле записей;LAST -. определяет последнее значение в указанном поле записей.
30
Запрос с вычисляемыми полями
31
Вычисляемые поляМожно задать вычисления над любыми полями таблицы и сделать вычисляемое значение новым полем в запросе.Для этого в строке Поле бланка QBE вводится формула для вычисления, причем имена полей заключаются в квадратные скобки.Например: =[ Оклад]*0.15
32
Вычисляемые поля - Операторы:• + Сложение, - Минус, * Умножение, / Деление, ^ Возведение в степень;• Соединение частей текста при помощи знака &, например: =[ Фамилия] & “ “&[Имя]
Стоимость: - название нового
поля
33
Результаты выполнения запроса или данные таблиц можно представить в виде диаграмм и графиков
34
Выбор
Создание таблицы
Добавление
Обновление Перекрестный
Удаление
Объединение
К серверу
Управление
35
четыре типа запросов-действий:Создание таблицы, обновление, удаление, добавлениеСоздание таблицы. Этот запрос позволяет сохранить набор данных, вышедших в ответ на запрос, в виде таблицы.Обновление. Используется для того, чтобы обновить значения некоторых полей для всех записей, вышедших в ответ на запрос.Удаление. Используется для удаления всех записей, вышедших в ответ на запрос.Добавление. Используется для добавления данных в имеющуюся таблицу.ACCESS отмечает запросы-действия специальными значками.
36
Создание таблицы
37
После создания данные в новой таблице не связаны с данными источника БД. Ваша задача следить по необходимости за обновлением данных в таблице – вновь запускать запрос
Запросы на создание таблицыДля сохранения результатов выборки в реально существующей таблице используются запросы на создание таблицы. Это ускоряет доступ к данным, полученным по запросу. Сохранение в виде отдельной таблицы полезно и в том случае, если какие-либо данные нужно хранить в течение длительного времени.Например, сводную информацию по годам необходимо хранить в течение 5 лет.
38Запрос добавление
39
Запросы на добавлениеПри создании запроса на добавление проверяйте результат выборки, так как запрос на добавление данных отменить нельзя.Типы данных полей таблиц источника и приемника должны быть совместимыми. Существует функция Val(Текстовое поле) – преобразует текстовое поле в числовое.
40Запрос удаление
41
42
Запросы на удалениеСначала делается запрос на выборку, для проверки правильности выбора того, что необходимо удалить.Запущенный запрос на удаление отменить нельзя. По необходимости делайте резервные копии БД (таблиц).
43Запрос обновление
44
Значки
45
Для создания запроса с несколькими критериями пользуются различными операторами.
Виды критериев
•Логическая операция ИЛИ - OR4 or 5
•Логическая операция И - AND >2 and <5
46
Виды критериев•Оператор Between (диапазон) between 10 and 20
•Оператор In позволяет задавать используемый для сравнения список значений. Например:
in (“первый”,”второй”,”третий”)
47
Виды критериев•Оператор Like полезен для поиска образцов в текстовых полях, с шаблонами и без них:* — обозначает любое количество ( включая нулевой) символов;? — любой одиночный символ;# — указывает что в данной позиции должна быть цифра.Например: для выбора фамилии, начинающейся с буквы П и с окончанием “ов” можно записать like П*ов
48
Виды критериев•Функций для даты и времениDay(дата) — возвращает значение дня месяца в диапазоне от 1 до 31Month(дата) — возвращает значение месяца года в диапазоне от 1 до 12Year(дата) — возвращает значение года в диапазоне от 100 до 9999
49
Виды критериев•Сортировка данных в запросе
•Операторы для даты и времениМожно ввести дату и время, при этом значения должны быть заключены между символами #. Например: #10 мая 1998# >#31.12.96#
50
Аномалии запросов
•Аномалия удаления - удаляются записи, которые на прямую не связаны с удаляемым значением.•Аномалия вставки – возникает когда при вставки новой записи появляются пустые неопределяемые значения или появляются дублирующиеся записи.
51
Основы SQL: запросы к базе данных
Что такое база данных SQL?Структурированный язык запросов (Structured Query Language) – стандарт коммуникации с базой данных, который поддержан ANSI. Самая последняя версия – SQL-99, хотя новый стандарт SQL-200n уже находится в разработке. Большинство баз данных твердо придерживается стандарта ANSI-92.
•Разработан для реляционных систем управления база данных (РСУБД)
52
SQL основан на реляционной алгебре и реляционных исчислений (исчисление кортежей) и не имеет операторов цикла.Операторы языка делятся на группы:1- операторы определения данных (Data Definition Language, DDL) • CREATE создает объект БД (саму базу,
таблицу, представление, пользователя, индекс и т.д.)
• ALTER изменяет объект• DROP удаляет объект
53
2 – операторы манипулирования данных (операции реляционной алгебры) DMLЕсть четыре основных типа запросов данных в SQL, которые относятся к так называемому языку манипулирования данными (Data Manipulation Language или DML):
•SELECT – выбрать строки из таблиц; •INSERT – добавить строки в таблицу; •UPDATE – изменить строки в таблице; •DELETE – удалить строки в таблице;
54
3 - операторы определения доступа к данным (Data Control Language, DCL)
• GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом;• REVOKE отзывает ранее выданные разрешения;• DENY задает запрет, имеющий приоритет над разрешением;
55
4 - операторы управления транзакциями (Transaction Control Language, TCL)
• COMMIT применяет транзакцию;• ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции;• SAVEPOINT делит транзакцию на более мелкие участки;
56
SQL представлен множеством инструкций, каждая из которых предписывает СУБД выполнить определенное действие: создать таблицу, извлечь данные,…
У каждого объекта в БД есть уникальное имя и обращение к объекту идет по имени.<Имя_таблицы>. <Имя_поля>
57
Типы данных SQLСимвольные типы данных - содержат буквы, цифры и специальные символы.
•CHAR или CHAR(n) -символьные строки фиксированной длины. CHAR без параметра соответствует CHAR(1). Для хранения таких данных всегда отводится n байт вне зависимости от реальной длины.
•VARCHAR(n) - символьная строка переменной длины. Для хранения отводится число байт, соответствующее реальной длине строки.
58
Типы данных SQL
Целые типы данных - поддерживают только целые числа (арифметические операции и агрегирующие функции. •INTEGER или INT- целое, для хранения которого отводится, как правило, 4 байта. Интервал значений от - 2147483647 до + 2147483648•SMALLINT - короткое целое (2 байта), интервал значений от - 32767 до +32768
59
Типы данных SQL
Вещественные типы данных - описывают числа с дробной частью. FLOAT и SMALLFLOAT - числа с плавающей точкой (для хранения отводится обычно 8 и 4 байта соответсвенно).
•DECIMAL(p) - тип данных аналогичный FLOAT с числом значащих цифр p.
•DECIMAL(p,n) - аналогично предыдущему, p - общее количество десятичных цифр, n - количество цифр после десятичной запятой.
60
Типы данных SQL
Денежные типы данных - описывают, естественно, денежные величины. Если в ваша система такого типа данных не поддерживает, то используйте DECIMAL(p,n).
MONEY(p,n) - все аналогично типу DECIMAL(p,n). Вводится только потому, что некоторые СУБД предусматривают для него специальные методы форматирования.
61
Типы данных SQL
Дата и время - используются для хранения даты, времени и их комбинаций. •DATE - тип данных для хранения даты.•TIME - тип данных для хранения времени.•INTERVAL - тип данных для хранения временного интервала.•DATETIME - тип данных для хранения моментов времени (год + месяц + день + часы + минуты + секунды + доли секунд).
62
Типы данных SQL
Двоичные типы данных - позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняемые файлы и т.д.). Определения этих типов наиболее сильно различаются от системы к системе, часто используются ключевые слова:
• BINARY• BYTE• BLOB
63
Типы данных SQL
Последовательные типы данных - используются для представления возрастающих числовых последовательностей. • SERIAL - тип данных на основе INTEGER, позволяющий сформировать уникальное значение (например, для первичного ключа). При добавлении записи СУБД автоматически присваивает полю данного типа значение, получаемое из возрастающей последовательности целых чисел.
64
Типы данных SQL для всех типов данных имеется общее значение NULL - "не определено". Это значение имеет каждый элемент столбца до тех пор, пока в него не будут введены данные. При создании таблицы можно явно указать СУБД могут ли элементы того или иного столбца иметь значения NULL (это не допустимо, например, для столбца, являющего первичным ключом).
65
При описании команд предполагается, что: •текст, набранный строчными буквами
(например, CREATE TABLE) является обязательным
•текст, набранный прописными буквами и заключенный в угловые скобки (например, <имя_базы_данных>) обозначает переменную, вводимую пользователем
•в квадратные скобки (например, [NOT NULL]) заключается необязательная часть команды
•взаимоисключающие элементы команды разделяются вертикальной чертой (например, [UNIQUE | PRIMARY KEY]).
66
DDL: Операторы создания схемы базы данных.
67
DDL: Операторы создания таблицы
68
CREATE TABLE Друзья([Код] integer,[Фамилия] text,[Имя] text,[Дата рождения] date,[Телефон] text,[Заметки] Memo,CONSTRAINT [Индекс1] PRIMARY KEY ([Код]));
69
DDL: Операторы удаление таблицы
DROP TABLE Друзья;
70
DDL: Операторы модификация таблицы
71
ALTER TABLE Друзья ADD Адрес CHAR(50), Фото BINARY ;
ALTER TABLE Друзья DROP Фото ;
72
DML: Команды модификации данных
INSERT INTO table_name (column1, column2, column3) VALUES (‘data1’, ‘data2’, ‘data3’);
73
DML: Команды модификации данных
DELETE FROM table_name WHERE column1 = ‘data1’;
74
DML: Команды модификации данных
UPDATE table_name SET column1 = ‘data1’, column2 = ‘data2’ WHERE column3 = ‘data3’;
75
Запрос SELECT для выборки нужных данных
Для извлечения записей из таблиц в SQL определен оператор SELECT. С помощью этой команды осуществляется не только операция реляционной алгебры "выборка" (горизонтальное подмножество), но и предварительное соединение (join) двух и более таблиц. Это наиболее сложное и мощное средство SQL, полный синтаксис оператора SELECT имеет вид:
76
Запрос SELECT для выборки нужных данныхSELECT [ALL | DISTINCT] <список_выбора> FROM <имя_таблицы>, ... [ WHERE <условие> ] [ GROUP BY <имя_столбца>,... ] [ HAVING <условие> ] [ORDER BY <имя_столбца> [ASC | DESC],... ]
77
Для того, чтобы получить все строки данных для специфических столбцов, используется запрос такого вида: SELECT column1, column2 FROM table_name; Также, можно получить все столбцы из таблицы, используя подстановочный знак «*»:
SELECT * FROM table_name;
78
Следующий запрос возвратит все столбцы со всех строк, где «column1» содержит значение «3»:
SELECT * FROM table_name WHERE column1=3;
79
SELECT * FROM table_name WHERE ((Age >= 18) AND (LastName BETWEEN ‘Иванов’ AND ‘Сидоров’)) OR Company LIKE ‘Motorola’;
Что в переводе на русский язык означает: выбрать все столбцы из таблицы table_name, где значение столбца age больше или равно 18, а также значение столбца LastName находится в алфавитном промежутке от Иванов до Сидоров включительно, или же значением столбца Company является Motorola.
80
AS псевдоним - Имя, которое станет заголовком столбца вместо исходного названия столбца в таблице
81
82
83
Предложение ORDER BY является необязательным. Однако оно необходимо для отображения данных в порядке сортировки.По умолчанию используется порядок сортировки по возрастанию (от "A" до "Я" и от 0 до 9).
84
85
86
87
ANSI SQL Jet SQL Синоним Примечание
BIT, BIT VARYING BINARYVARBINARY, BINARY
VARYING BIT VARYING
He является стандартным типом данных Access
He поддерживается BIT BOOLEAN, LOGICAL,
LOGICAL1, YESNOВ Access эквивалентно типу
данных ЛогическийHe
поддерживается TINYINT INTEGER 1, BYTE Целое число длиной 1 байтHe
поддерживается COUNTER AUTOINCREMENT He
поддерживается MONEY CURRENCY В Access эквивалентно типу данных Денежный
DATE, TIME, TIMESTAMP DATETIME DATE, TIME В Access эквивалентно типу
данных Дата/ВремяHe
поддерживаетсяUNIQUEIDEN
TIFIER QUID DECIMAL DECIMAL NUMERIC, DEC
88
Типы данных ANSI SQL
Типы данных Jet SQL Синоним Примечание
REAL REALSINGLE, FLOAT4, IEEESINGLE
Тип данных Числовой (с плавающей точкой, 4 байта)
DOUBLE PRECISION, FLOAT
FLOATDOUBLE, FLOATS, IEEEDOUBLE, NUMBER
Тип данных Числовой (с плавающей точкой, 8 байтов)
SMALLINT SMALLINT SHORT, INTEGER2 Тип данных Числовой (2 байта)
INTEGER INTEGER LONG, INT, INTEGER4
Тип данных Числовой (длинное целое)
INTERVALHe поддерживается
89
Типы данных ANSI SQL
Типы данных Jet SQL Синоним Примечание
He поддерживается
IMAGE LONGBINARY, GENERAL, OLEOBJECT
Тип данных поля объекта OLE
He поддерживается
TEXT LONGTEXT, LONGCHAR, MEMO, NOTE, NTEXT
Тип данных Поле Memo
CHARACTER, CHARACTER VARYING, NATIONAL CHARACTER, NATIONAL CHARACTER VARYING
CHAR
TEXT(n), ALPHANUMERIC, CHARACTER, STRING, VARCHAR, CHARACTER VARYING, NCHAR, NATIONAL CHARACTER, NATIONAL CHAR, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING
Тип данных Текстовый
90
Эквивалентные типы данных Jet SQL и ANSI SQLВ табл. 8.6 перечислены типы данных ANSI SQL, эквивалентные им типы данных языка
Jet SQL и допустимые синонимы.Таблица 8.6. Эквивалентные типы данных Jet SQL и ANSI SOLРеализация SQL процессора Jet 4.x имеет существенные отличия в типах данных от
предыдущей версии Jet SQL, а именно:•тип TIMESTAMP теперь не является синонимом типа DATETIME;•тип NUMERIC теперь используется как синоним типа DECIMAL, а не FLOAT или
DOUBLE, как это было раньше;•поля типа LONGTEXT и CHAR всегда хранятся в формате представления знаков
Unicode, который эквивалентен такому типу данных ANSI SQL, как NATIONAL CHAR;•если имя типа данных TEXT используется без указания необязательной длины, то
создается поле типа LONGTEXT. В результате появляется возможность применять инструкции CREATE TABLE для создания типов данных, совместимых с Microsoft SQL Server;
•если имя типа данных TEXT используется с указанием необязательной длины, например TEXT(25), то тип данных соответствующего поля будет эквивалентен типу CHAR. В результате сохраняется обратная совместимость с большинством приложений, использующих процессор Microsoft Jet, а также согласованность типа данных TEXT (без указания длины) с Microsoft SQL Server;
•тип данных BIT стандарта ANSI SQL не соответствует типу данных BIT языка Jet SQL. Он совпадает с типом данных BINARY. Для типа данных BIT языка Jet SQL нет эквивалентного типа в ANSI SQL.