90
Запросы к базе данных •Определен ие Назначение •Типы, виды 1 Система КЗТО - «КАКОВ ЗАПРОС, ТАКОВ ОТВЕТ»

24 25 запросы

Embed Size (px)

Citation preview

Page 1: 24 25 запросы

1

Запросы к базе данных•Определение• Назначение•Типы, виды•Создание

Система КЗТО - «КАКОВ

ЗАПРОС, ТАКОВ ОТВЕТ»

Page 2: 24 25 запросы

2

О П Р Е Д Е Л Е Н И Е

ЗАПРОС (query) – это средство выбора необходимой информации из базы данных. Вопрос, сформированный по отношению к базе данных, и есть запрос.

Page 3: 24 25 запросы

3

О П Р Е Д Е Л Е Н И Е

ЗАПРОС – объект БД, который позволяет проводить основные операции по обработке данных – сортировку, фильтрацию, объединение данных из разных источников – и сохранять результаты с некоторым именем, чтобы в дальнейшем применять эти операции по мере необходимости.

Page 4: 24 25 запросы

4

О П Р Е Д Е Л Е Н И Е

ЗАПРОС – это обращение к БД для поиска или изменения в базе данных информации, соответствующей заданным критериям, некоторый набор данных, полученный в результате обращения к БД

Page 5: 24 25 запросы

5

О П Р Е Д Е Л Е Н И Е

•Результат запроса – новая таблица, которая существует до закрытия запроса.•Структура запроса определяется полями, выбранными из одной или нескольких взаимосвязанных таблиц БД. Записи формируются путем объединения записей таблиц, участвующих в запросе.

Page 6: 24 25 запросы

6

Типы запросов (2 типа): I

• QBE - запрос по образцу – средство для отыскания необходимой информации в базе данных. Формируется путем заполнения бланка запроса в окне Конструктора запросов.

Page 7: 24 25 запросы

7

Типы запросов (2 типа): II

•SQL – запросы – это запросы, которые составляются (программистами) из последовательности SQL – инструкций. Эти инструкции задают, что надо сделать с входным набором данных для генерации выходного набора.

Page 8: 24 25 запросы

8

Все запросы Access строит на основе SQL – запросов, чтобы посмотреть их, необходимо перейти в Режим – SQL Режим SQL.

Page 9: 24 25 запросы

9

ВИДЫ ЗАПРОСОВ•запрос-выбор (или простой запрос);•запрос-действие;•параметрический запрос;•перекрестный запрос;•запрос SQL.

Page 10: 24 25 запросы

10

Page 11: 24 25 запросы

11

СОЗДАНИЕ 1

Page 12: 24 25 запросы

12

Простой запрос - создает простой запрос из определенных полей.Перекрестный запрос - создает запрос, данные в котором имеют компактный формат, подобный формату сводных таблиц в Excel.Повторяющиеся записи — создает запрос, выбирающий повторяющие записи из таблицы или простого запроса.Записи без подчиненных - создает запрос, выбирающий из таблицы записи, не связанные с записями из другой таблицы.

Page 13: 24 25 запросы

13

Page 14: 24 25 запросы

14

Page 15: 24 25 запросы

15

Page 16: 24 25 запросы

16

Page 17: 24 25 запросы

17

Студенты не записавшиеся на факультатив

Page 18: 24 25 запросы

18

С помощью КОНСТРУКТОРА можно создать следующие виды запросов: • Простой• По условию• Параметрические• Итоговые• С вычисляемыми полями• SQL - запрос

Page 19: 24 25 запросы

19

СОЗДАНИЕ 2

Page 20: 24 25 запросы

20

Окно Конструктора состоит из двух частей – верхней и нижней.•В верхней части окна размещается схема данных запроса, которая содержит список таблиц – источников и отражает связь между ними.•В нижней части окна находится Бланк построения запроса QBE (Query by Example), в котором каждая строка выполняет определенную функцию:

Page 21: 24 25 запросы

21

Схема данных запроса

Бланк

Page 22: 24 25 запросы

22

Бланк· Поле – указывает имена полей, которые участвуют в запросе · Имя таблицы – имя таблицы, с которой выбрано это поле · Сортировка – указывает тип сортировки · Вывод на экран – устанавливает флажок просмотра поля на экране · Условия отбора - задаются критерии поиска · Или – задаются дополнительные критерии отбора

Page 23: 24 25 запросы

23

Простой запрос

Page 24: 24 25 запросы

24Запрос на выборку условия

Page 25: 24 25 запросы

25

Используются квадратные скобки

Параметрический запрос

Page 26: 24 25 запросы

26Итоговый запрос

Page 27: 24 25 запросы

27

Итоговые запросы значительно отличаются от обычных. В них поля делятся на 2 типа: -поля, по которым осуществляется группировка данных;-поля, для которых проводятся вычисления.Для составления итогового запроса, находясь в режиме конструктора, следует нажать кнопку Итоги

Page 28: 24 25 запросы

28

Строка Групповая операция в бланке QBE

Агрегатные функции:SUМ - вычисляет сумму всех значений заданного поля (для числовых или денежных полей), отобранных запросом;AVG - вычисляет среднее значение в тех записях определенного поля, которые отобраны запросом ( для числовых или денежных полей);MIN - выбирает минимальное значение в записях определенного поля, отобранных запросом;

Page 29: 24 25 запросы

29

Агрегатные функции:

MAX — выбирает максимальное значение в записях определенного поля, отобранных запросом;COUNT — вычисляет количество записей, отобранных запросом в определенном поле, в которых значения данного поля отличны от нуля;FIRST - определяет первое значение в указанном поле записей;LAST -. определяет последнее значение в указанном поле записей.

Page 30: 24 25 запросы

30

Запрос с вычисляемыми полями

Page 31: 24 25 запросы

31

Вычисляемые поляМожно задать вычисления над любыми полями таблицы и сделать вычисляемое значение новым полем в запросе.Для этого в строке Поле бланка QBE вводится формула для вычисления, причем имена полей заключаются в квадратные скобки.Например: =[ Оклад]*0.15

Page 32: 24 25 запросы

32

Вычисляемые поля - Операторы:• + Сложение, - Минус, * Умножение, / Деление, ^ Возведение в степень;• Соединение частей текста при помощи знака &, например: =[ Фамилия] & “ “&[Имя]

Стоимость: - название нового

поля

Page 33: 24 25 запросы

33

Результаты выполнения запроса или данные таблиц можно представить в виде диаграмм и графиков

Page 34: 24 25 запросы

34

Выбор

Создание таблицы

Добавление

Обновление Перекрестный

Удаление

Объединение

К серверу

Управление

Page 35: 24 25 запросы

35

четыре типа запросов-действий:Создание таблицы, обновление, удаление, добавлениеСоздание таблицы. Этот запрос позволяет сохранить набор данных, вышедших в ответ на запрос, в виде таблицы.Обновление. Используется для того, чтобы обновить значения некоторых полей для всех записей, вышедших в ответ на запрос.Удаление. Используется для удаления всех записей, вышедших в ответ на запрос.Добавление. Используется для добавления данных в имеющуюся таблицу.ACCESS отмечает запросы-действия специальными значками.

Page 36: 24 25 запросы

36

Создание таблицы

Page 37: 24 25 запросы

37

После создания данные в новой таблице не связаны с данными источника БД. Ваша задача следить по необходимости за обновлением данных в таблице – вновь запускать запрос

Запросы на создание таблицыДля сохранения результатов выборки в реально существующей таблице используются запросы на создание таблицы. Это ускоряет доступ к данным, полученным по запросу. Сохранение в виде отдельной таблицы полезно и в том случае, если какие-либо данные нужно хранить в течение длительного времени.Например, сводную информацию по годам необходимо хранить в течение 5 лет.

Page 38: 24 25 запросы

38Запрос добавление

Page 39: 24 25 запросы

39

Запросы на добавлениеПри создании запроса на добавление проверяйте результат выборки, так как запрос на добавление данных отменить нельзя.Типы данных полей таблиц источника и приемника должны быть совместимыми. Существует функция Val(Текстовое поле) – преобразует текстовое поле в числовое.

Page 40: 24 25 запросы

40Запрос удаление

Page 41: 24 25 запросы

41

Page 42: 24 25 запросы

42

Запросы на удалениеСначала делается запрос на выборку, для проверки правильности выбора того, что необходимо удалить.Запущенный запрос на удаление отменить нельзя. По необходимости делайте резервные копии БД (таблиц).

Page 43: 24 25 запросы

43Запрос обновление

Page 44: 24 25 запросы

44

Значки

Page 45: 24 25 запросы

45

Для создания запроса с несколькими критериями пользуются различными операторами.

Виды критериев

•Логическая операция ИЛИ - OR4 or 5

•Логическая операция И - AND >2 and <5

Page 46: 24 25 запросы

46

Виды критериев•Оператор Between (диапазон) between 10 and 20

•Оператор In позволяет задавать используемый для сравнения список значений. Например:

in (“первый”,”второй”,”третий”)

Page 47: 24 25 запросы

47

Виды критериев•Оператор Like полезен для поиска образцов в текстовых полях, с шаблонами и без них:* — обозначает любое количество ( включая нулевой) символов;? — любой одиночный символ;# — указывает что в данной позиции должна быть цифра.Например: для выбора фамилии, начинающейся с буквы П и с окончанием “ов” можно записать like П*ов

Page 48: 24 25 запросы

48

Виды критериев•Функций для даты и времениDay(дата) — возвращает значение дня месяца в диапазоне от 1 до 31Month(дата) — возвращает значение месяца года в диапазоне от 1 до 12Year(дата) — возвращает значение года в диапазоне от 100 до 9999

Page 49: 24 25 запросы

49

Виды критериев•Сортировка данных в запросе

•Операторы для даты и времениМожно ввести дату и время, при этом значения должны быть заключены между символами #. Например: #10 мая 1998# >#31.12.96#

Page 50: 24 25 запросы

50

Аномалии запросов

•Аномалия удаления - удаляются записи, которые на прямую не связаны с удаляемым значением.•Аномалия вставки – возникает когда при вставки новой записи появляются пустые неопределяемые значения или появляются дублирующиеся записи.

Page 51: 24 25 запросы

51

Основы SQL: запросы к базе данных

Что такое база данных SQL?Структурированный язык запросов (Structured Query Language) – стандарт коммуникации с базой данных, который поддержан ANSI. Самая последняя версия – SQL-99, хотя новый стандарт SQL-200n уже находится в разработке. Большинство баз данных твердо придерживается стандарта ANSI-92.

•Разработан для реляционных систем управления база данных (РСУБД)

Page 52: 24 25 запросы

52

SQL основан на реляционной алгебре и реляционных исчислений (исчисление кортежей) и не имеет операторов цикла.Операторы языка делятся на группы:1- операторы определения данных (Data Definition Language, DDL) • CREATE создает объект БД (саму базу,

таблицу, представление, пользователя, индекс и т.д.)

• ALTER изменяет объект• DROP удаляет объект

Page 53: 24 25 запросы

53

2 – операторы манипулирования данных (операции реляционной алгебры) DMLЕсть четыре основных типа запросов данных в SQL, которые относятся к так называемому языку манипулирования данными (Data Manipulation Language или DML):

•SELECT – выбрать строки из таблиц; •INSERT – добавить строки в таблицу; •UPDATE – изменить строки в таблице; •DELETE – удалить строки в таблице;

Page 54: 24 25 запросы

54

3 - операторы определения доступа к данным (Data Control Language, DCL)

• GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом;• REVOKE отзывает ранее выданные разрешения;• DENY задает запрет, имеющий приоритет над разрешением;

Page 55: 24 25 запросы

55

4 - операторы управления транзакциями (Transaction Control Language, TCL)

• COMMIT применяет транзакцию;• ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции;• SAVEPOINT делит транзакцию на более мелкие участки;

Page 56: 24 25 запросы

56

SQL представлен множеством инструкций, каждая из которых предписывает СУБД выполнить определенное действие: создать таблицу, извлечь данные,…

У каждого объекта в БД есть уникальное имя и обращение к объекту идет по имени.<Имя_таблицы>. <Имя_поля>

Page 57: 24 25 запросы

57

Типы данных SQLСимвольные типы данных - содержат буквы, цифры и специальные символы.

•CHAR или CHAR(n) -символьные строки фиксированной длины. CHAR без параметра соответствует CHAR(1). Для хранения таких данных всегда отводится n байт вне зависимости от реальной длины.

•VARCHAR(n) - символьная строка переменной длины. Для хранения отводится число байт, соответствующее реальной длине строки.

Page 58: 24 25 запросы

58

Типы данных SQL

Целые типы данных - поддерживают только целые числа (арифметические операции и агрегирующие функции. •INTEGER или INT- целое, для хранения которого отводится, как правило, 4 байта. Интервал значений от - 2147483647 до + 2147483648•SMALLINT - короткое целое (2 байта), интервал значений от - 32767 до +32768

Page 59: 24 25 запросы

59

Типы данных SQL

Вещественные типы данных - описывают числа с дробной частью. FLOAT и SMALLFLOAT - числа с плавающей точкой (для хранения отводится обычно 8 и 4 байта соответсвенно).

•DECIMAL(p) - тип данных аналогичный FLOAT с числом значащих цифр p.

•DECIMAL(p,n) - аналогично предыдущему, p - общее количество десятичных цифр, n - количество цифр после десятичной запятой.

Page 60: 24 25 запросы

60

Типы данных SQL

Денежные типы данных - описывают, естественно, денежные величины. Если в ваша система такого типа данных не поддерживает, то используйте DECIMAL(p,n).

MONEY(p,n) - все аналогично типу DECIMAL(p,n). Вводится только потому, что некоторые СУБД предусматривают для него специальные методы форматирования.

Page 61: 24 25 запросы

61

Типы данных SQL

Дата и время - используются для хранения даты, времени и их комбинаций. •DATE - тип данных для хранения даты.•TIME - тип данных для хранения времени.•INTERVAL - тип данных для хранения временного интервала.•DATETIME - тип данных для хранения моментов времени (год + месяц + день + часы + минуты + секунды + доли секунд).

Page 62: 24 25 запросы

62

Типы данных SQL

Двоичные типы данных - позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняемые файлы и т.д.). Определения этих типов наиболее сильно различаются от системы к системе, часто используются ключевые слова:

• BINARY• BYTE• BLOB

Page 63: 24 25 запросы

63

Типы данных SQL

Последовательные типы данных - используются для представления возрастающих числовых последовательностей. • SERIAL - тип данных на основе INTEGER, позволяющий сформировать уникальное значение (например, для первичного ключа). При добавлении записи СУБД автоматически присваивает полю данного типа значение, получаемое из возрастающей последовательности целых чисел.

Page 64: 24 25 запросы

64

Типы данных SQL для всех типов данных имеется общее значение NULL - "не определено". Это значение имеет каждый элемент столбца до тех пор, пока в него не будут введены данные. При создании таблицы можно явно указать СУБД могут ли элементы того или иного столбца иметь значения NULL (это не допустимо, например, для столбца, являющего первичным ключом).

Page 65: 24 25 запросы

65

При описании команд предполагается, что: •текст, набранный строчными буквами

(например, CREATE TABLE) является обязательным

•текст, набранный прописными буквами и заключенный в угловые скобки (например, <имя_базы_данных>) обозначает переменную, вводимую пользователем

•в квадратные скобки (например, [NOT NULL]) заключается необязательная часть команды

•взаимоисключающие элементы команды разделяются вертикальной чертой (например, [UNIQUE | PRIMARY KEY]).

Page 66: 24 25 запросы

66

DDL: Операторы создания схемы базы данных.

Page 67: 24 25 запросы

67

DDL: Операторы создания таблицы

Page 68: 24 25 запросы

68

CREATE TABLE Друзья([Код] integer,[Фамилия] text,[Имя] text,[Дата рождения] date,[Телефон] text,[Заметки] Memo,CONSTRAINT [Индекс1] PRIMARY KEY ([Код]));

Page 69: 24 25 запросы

69

DDL: Операторы удаление таблицы

DROP TABLE Друзья;

Page 70: 24 25 запросы

70

DDL: Операторы модификация таблицы

Page 71: 24 25 запросы

71

ALTER TABLE Друзья ADD Адрес CHAR(50), Фото BINARY ;

ALTER TABLE Друзья DROP Фото ;

Page 72: 24 25 запросы

72

DML: Команды модификации данных

INSERT INTO table_name (column1, column2, column3) VALUES (‘data1’, ‘data2’, ‘data3’);

Page 73: 24 25 запросы

73

DML: Команды модификации данных

DELETE FROM table_name WHERE column1 = ‘data1’;

Page 74: 24 25 запросы

74

DML: Команды модификации данных

UPDATE table_name SET column1 = ‘data1’, column2 = ‘data2’ WHERE column3 = ‘data3’;

Page 75: 24 25 запросы

75

Запрос SELECT для выборки нужных данных

Для извлечения записей из таблиц в SQL определен оператор SELECT. С помощью этой команды осуществляется не только операция реляционной алгебры "выборка" (горизонтальное подмножество), но и предварительное соединение (join) двух и более таблиц. Это наиболее сложное и мощное средство SQL, полный синтаксис оператора SELECT имеет вид:  

Page 76: 24 25 запросы

76

Запрос SELECT для выборки нужных данныхSELECT [ALL | DISTINCT] <список_выбора>           FROM <имя_таблицы>, ...          [ WHERE <условие> ]            [ GROUP BY <имя_столбца>,... ]               [ HAVING <условие> ]            [ORDER BY <имя_столбца> [ASC | DESC],... ]

Page 77: 24 25 запросы

77

Для того, чтобы получить все строки данных для специфических столбцов, используется запрос такого вида: SELECT column1, column2 FROM table_name; Также, можно получить все столбцы из таблицы, используя подстановочный знак «*»:

SELECT * FROM table_name;

Page 78: 24 25 запросы

78

Следующий запрос возвратит все столбцы со всех строк, где «column1» содержит значение «3»:

SELECT * FROM table_name WHERE column1=3;

Page 79: 24 25 запросы

79

SELECT * FROM table_name WHERE ((Age >= 18) AND (LastName BETWEEN ‘Иванов’ AND ‘Сидоров’)) OR Company LIKE ‘Motorola’;

Что в переводе на русский язык означает: выбрать все столбцы из таблицы table_name, где значение столбца age больше или равно 18, а также значение столбца LastName находится в алфавитном промежутке от Иванов до Сидоров включительно, или же значением столбца Company является Motorola.

Page 80: 24 25 запросы

80

AS псевдоним - Имя, которое станет заголовком столбца вместо исходного названия столбца в таблице

Page 81: 24 25 запросы

81

Page 82: 24 25 запросы

82

Page 83: 24 25 запросы

83

Предложение ORDER BY является необязательным. Однако оно необходимо для отображения данных в порядке сортировки.По умолчанию используется порядок сортировки по возрастанию (от "A" до "Я" и от 0 до 9).

Page 84: 24 25 запросы

84

Page 85: 24 25 запросы

85

Page 86: 24 25 запросы

86

Page 87: 24 25 запросы

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

Page 88: 24 25 запросы

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 поддерживается

Page 89: 24 25 запросы

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

Тип данных Текстовый

Page 90: 24 25 запросы

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.