Разработка запросов к базе данных

Содержание

Слайд 2

Стандартный язык запросов SQL 1989г. ANSI (American National Standards Institute) SQL

Стандартный язык запросов SQL

1989г. ANSI (American National Standards Institute)
SQL – официальный

международный стандарт непроцедурного языка для формирования запросов к базам данных.
Не обладает функциями полноценного языка разработки, а ориентирован на доступ к данным.
Предоставляет развитые возможности как конечным пользователям, так и специалистам в области обработки данных.
Многие современные СУБД могут подключаться к входным SQL-подсистемам с помощью технологии ODBC (Open Database Connectivity).
Способен служить средством разработки масштабируемых систем типа «клиент-сервер».
Слайд 3

Стандартный язык запросов SQL Представление для пользователей: в явной синтаксической форме;

Стандартный язык запросов SQL

Представление для пользователей:
в явной синтаксической форме;
В форме меню,

диалоговых сценариев или заполняемых пользователем таблиц.
Основные функции:
описание представления базы данных (ЯОД) - схема БД:
Описание структуры БД и налагаемых на неё ограничений целостности.
Ограничение доступа к данным и полномочий пользователям.
выполнение операций манипулирования данными (ЯМД):
Добавление, изменение и удаление записей в таблицы.
Слайд 4

Основные группы операторов языка SQL Операторы определения данных (DDL) CREATE –создание

Основные группы операторов языка SQL

Операторы определения данных (DDL)
CREATE –создание таблиц, индексов

и представлений
ALTER – изменение описания таблиц, индексов и представлений
DROP – удаление таблиц, индексов и представлений
Операторы манипулирования данными (DML)
INSERT – добавление записей в таблицу
UPDATE – изменение данных в таблице
DELETE – удаление записей из таблицы
SELECT – оператор выборки данных
Выбирает данные не меняя содержимого БД
Слайд 5

Дополнительные группы операторов Средства администрирования GRAND, REVOKE и т.д. – создание

Дополнительные группы операторов

Средства администрирования
GRAND, REVOKE и т.д. – создание системы защиты

данных с помощью паролей и разграничения доступа групп пользователей
Средства управления транзакциями
COMMIT, ROLLBACK, SAVEPOINT – завершение операций, сохранение промежуточного и возвращение к исходному состоянию.
Слайд 6

Выборка данных SELECT – отбор и сортировка данных из одной или

Выборка данных

SELECT – отбор и сортировка данных из одной или нескольких

связанных таблиц по заданному критерию, выполнение расчетов и преобразование выбранных данных с помощью специальных функций.
Не меняет структуру и содержимое БД!
Синтаксис:
SELECT [ ALL | DISTINCT | TOP ЧИСЛО ] <Результирующий набор данных>
FROM <Описание таблиц и связей>
[WHERE <Условие отбора данных>]
[GROPE BY <Описание группировки>]
[HAVING <Условие для сгруппированных данных>]
[ORDER BY < Описание сортировки>[ASC|DESC]]
Слайд 7

Выборка данных SELECT [ ALL | DISTINCT | TOP ЧИСЛО ]

Выборка данных

SELECT [ ALL | DISTINCT | TOP ЧИСЛО ] <Результирующий

набор данных>
ALL – отбор всех записей, удовлетворяющих условию отбора
DISTINCT – повторяющиеся строки не включаются в результат выполнения запроса
TOP ЧИСЛО – задаёт число выводимых строк (начиная с первой)
Слайд 8

Выборка данных SELECT [ ALL | DISTINCT | TOP ЧИСЛО ]

Выборка данных

SELECT [ ALL | DISTINCT | TOP ЧИСЛО ] <Результирующий

набор данных>
– список полей или выражений, использующих агрегатные, математические и другие функции.
Элементы списка разделятся запятой.
Правила формирования списка:
* для выбора всех столбцов
ИмяТаблицы.ИмяПоля
+, -, *, /, ( ), константы, стандартные функции
агрегатные функции:
COUNT – количество строк
SUM – итоговые суммы
AVG – среднее значение
MAX – максимальное значение
MIN – минимальное значение
As НовоеИмя
Слайд 9

Выборка данных Пример 1 Выбрать все данные из таблицы ЭКЗАМЕНЫ… SELECT * FROM ЭКЗАМЕНЫ

Выборка данных

Пример 1
Выбрать все данные из таблицы ЭКЗАМЕНЫ…
SELECT *
FROM ЭКЗАМЕНЫ

Слайд 10

Выборка данных Пример 2 Выбрать данные из БД для получения документа

Выборка данных

Пример 2
Выбрать данные из БД для получения документа “Расписание экзаменов”

в порядке следования столбцов Группа, Дисциплина, Дата.…
SELECT Группа, Дисциплина, Дата
FROM ЭКЗАМЕНЫ
Слайд 11

Выборка данных Пример 3 Выбрать данные из БД для получения списка

Выборка данных

Пример 3
Выбрать данные из БД для получения списка студентов в

следующем виде в Группа, Фамилия И.О., НомЗачКн, Стипендия.…
SELECT Группа, Фамилия + ‘ ‘ + Left(Имя,1) + ‘.’ + Left(Отчество,1) + ‘.’ As ‘Фамилия И.О.’ , НомЗачКн, Стипендия
FROM СТУДЕНТЫ
Слайд 12

Выборка данных SELECT [ ALL | DISTINCT | TOP ЧИСЛО ]

Выборка данных

SELECT [ ALL | DISTINCT | TOP ЧИСЛО ] <Результирующий

набор данных>
FROM <Описание таблиц и связей>
[WHERE <Условие отбора данных>]
[GROPE BY <Описание группировки>]
[HAVING <Условие для сгруппированных данных>]
[ORDER BY < Описание сортировки>[ASC|DESC]]
– список полей или выражений, задающих условие сортировки.
ASC – сортировка в порядке возрастания (можно не указывать),
DESC – по убыванию.
Слайд 13

Выборка данных Пример 1 Выбрать все данные из таблицы ЭКЗАМЕНЫ в

Выборка данных

Пример 1
Выбрать все данные из таблицы ЭКЗАМЕНЫ в порядке следования

их во времени, Сведения об экзаменах, которые спланированы в один день, расположить в порядке возрастания номеров групп.
SELECT *
FROM ЭКЗАМЕНЫ
ORDER BY Дата, Группа
Слайд 14

Выборка данных Пример 2 Выбрать данные из БД для получения документа

Выборка данных

Пример 2
Выбрать данные из БД для получения документа “Расписание экзаменов”

в порядке следования столбцов Группа, Дисциплина, Дата. Сортировку данных выполнить в порядке следования групп, а внутри одной группы – по дате.
SELECT Группа, Дисциплина, Дата
FROM ЭКЗАМЕНЫ
ORDER BY Группа, Дата
Слайд 15

Выборка данных Пример 3 Выбрать данные из БД для получения списка

Выборка данных

Пример 3
Выбрать данные из БД для получения списка студентов в

следующем виде в Группа, Фамилия И.О., НомЗачКн, Стипендия. Сортировку выполнить в порядке возрастания номера группы, а внутри группы – в алфавитном порядке следования данных столбца “Фамилия И.О”.
SELECT Группа, Фамилия + ‘ ’+ Left(Имя,1) + ‘.’ + Left(Отчество,1) + ‘.’ AS ‘Фамилия И.О.’ , НомЗачКн, Стипендия
FROM СТУДЕНТЫ
ORDER BY Группа, Фамилия +‘ ’+ Left(Имя,1) + ‘.’ + Left(Отчество,1) + ‘.’
Слайд 16

Выборка данных SELECT [ ALL | DISTINCT | TOP ЧИСЛО ]

Выборка данных

SELECT [ ALL | DISTINCT | TOP ЧИСЛО ] <Результирующий

набор данных>
FROM <Описание таблиц и связей>
[WHERE <Условие отбора данных>]
[GROPE BY <Описание группировки>]
[HAVING <Условие для сгруппированных данных>]
[ORDER BY < Описание сортировки>[ASC|DESC]]
список таблиц (в этом случае связи задаются в части WHERE) или описание связей (внутренних или внешних) между таблицами.
Слайд 17

Выборка данных FROM [WHERE ] - логическое выражение, описывающее критерий отбора

Выборка данных

FROM <Описание таблиц и связей>
[WHERE <Условие отбора данных>]
<Условие отбора данных>

- логическое выражение, описывающее критерий отбора записей из источников данных.
Правила формирования условных выражений:
- можно использовать знаки арифметических (+, -, *, /) и логических (=, <>, >, >=, <, <=, AND, OR, NOT) операций, круглые скобки, константы, поля и функции,
- к специальным операциям относятся: 1). проверка наличия значения в списке – IN (список значений). 2). проверка значения в заданном интервале – BETWEEN N1 and N2. 3). проверка на соответствие заданной маске – LIKE ‘Маска’, где символ % ( * - для MS Access) заменяет любую последовательность символов, а символ подчёркивания (? - для MS Access) заменяет один любой символ,
- проверку на наличие в поле пустого, неопределённого значения можно выполнить с помощью инструкции – IS NULL, обратная операция – IS NOT NULL позволит определить те записи, где заданное поле заполнено
Слайд 18

Выборка данных Пример 4 Получить в порядке возрастания номеров список групп,

Выборка данных

Пример 4
Получить в порядке возрастания номеров список групп, которые сдают

экзамены в текущем месяце.
SELECT Группа
FROM ЭКЗАМЕНЫ
WHERE MONTH (Дата) = MONTH (DATE()) AND YEAR (Дата) = YEAR(DATE())
ORDER BY Группа

DISTINCT

Слайд 19

Выборка данных SELECT [ ALL | DISTINCT | TOP ЧИСЛО ]

Выборка данных

SELECT [ ALL | DISTINCT | TOP ЧИСЛО ] <Результирующий

набор данных>
FROM <Описание таблиц и связей>
[WHERE <Условие отбора данных>]
[GROPE BY <Описание группировки>]
[HAVING <Условие для сгруппированных данных>]
[ORDER BY < Описание сортировки>[ASC|DESC]]
список полей или выражений, задающих критерий формирования записей в группы (в группу включаются записи с совпадающими значениями столбцов, перечисленных в списке).
логическое выражение, описывающее критерий отбора строк.
Слайд 20

Выборка данных Пример 5 Подсчитать для каждой учебной группы количество студентов,

Выборка данных

Пример 5
Подсчитать для каждой учебной группы количество студентов, получающих стипендию,

а так же рассчитать сумму их стипендий, расположив строки результата в порядке убывания денежных сумм.
SELECT Группа , COUNT(*) AS Количество, SUM(Стипендия) AS Сумма
FROM СТУДЕНТЫ
WHERE Стипендия IS NOT NULL
GROUP BY Группа
ORDER BY SUM(Стипендия) DESC
Слайд 21

Выборка данных Пример 6 Сведения о квартирах дома хранятся в таблице

Выборка данных

Пример 6
Сведения о квартирах дома хранятся в таблице
ДОМ (Квартира,

Подъезд, Этаж, Метров, Человек).
С помощью запроса рассчитать общую сумму оплаты услуг для каждой квартиры. Использовать следующие тарифы:
за отопление одного квадратного метра – 10 рублей,
за потребление воды одним человеком - 90 рублей,
за пользование лифтом взимается 70 рублей с каждой квартиры, расположенной на этаже выше 3-го.
Отсортировать строки по возрастанию номеров квартир.
Слайд 22

Выборка данных Пример 6 SELECT Подъезд, Этаж, Квартира, Метров, Человек, Метров*10

Выборка данных

Пример 6
SELECT Подъезд, Этаж, Квартира, Метров, Человек, Метров*10 + Человек*90

+ IIF(Этаж>3, 70, 0) AS Сумма
FROM ДОМ
ORDER BY Квартира
Слайд 23

FROM [WHERE ] В среде СУБД Microsoft Access и Microsoft SQL

FROM <Описание таблиц и связей>
[WHERE <Условие отбора данных>]
В среде СУБД Microsoft

Access и Microsoft SQL Server внутренние и внешние связи между двумя таблицами можно задать с помощью следующей инструкции:
Таблица1 { INNER | LEFT | RIGHT } JOIN Таблица2
ON Таблица1.ПолеСвязи = Таблица2.ПолеСвязи
INNER указывает на внутреннюю связь, при которой в результирующий набор выбираются только те записи, в которых значения полей связи совпадают.
Внешнее соединение таблиц (LEFT – левое, RIGHT – правое) позволяет включить в результат запроса все строки из одной таблицы (LEFT – из Таблицы1, RIGHT – из Таблицы2) и соответствующие им строки из второй таблицы.

Выборка данных из нескольких таблиц

Слайд 24

Выборка данных из нескольких таблиц Пример 7 Вывести список студентов (Фамилия,

Выборка данных из нескольких таблиц

Пример 7
Вывести список студентов (Фамилия, Имя, Группа),

которые получили отличные оценки (сортировка по номеру группы, а внутри группы – в алфавитном порядке фамилий).
SELECT DISTINCT Фамилия, Имя, Группа
FROM СТУДЕНТЫ INNER JOIN ОЦЕНКИ ON СТУДЕНТЫ.НомЗачКн = ОЦЕНКИ.НомЗачКн
WHERE Оценка=5
ORDER BY Группа, Фамилия, Имя
Слайд 25

Выборка данных из нескольких таблиц Пример 8 Рассчитать средний балл сдачи

Выборка данных из нескольких таблиц

Пример 8
Рассчитать средний балл сдачи экзаменов студентами

31 группы и представить данные в следующем виде (сортировку выполнить в алфавитном порядке фамилий).
SELECT Фамилия + ‘ ‘ + Имя As ‘Фамилия Имя’, ОЦЕНКИ.НомЗачКн, AVG(Оценка) As ‘Средний балл’
FROM СТУДЕНТЫ INNER JOIN ОЦЕНКИ ON СТУДЕНТЫ.НомЗачКн = ОЦЕНКИ.НомЗачКн
WHERE Оценка=5
ORDER BY Группа, Фамилия, Имя
Слайд 26

Выборка данных из нескольких таблиц Пример 9 Салон оказывает услуги своим

Выборка данных из нескольких таблиц

Пример 9
Салон оказывает услуги своим клиентам по

ценам действующего прейскуранта. Данные по учёту хранятся в двух таблицах: ЦЕНЫ (Услуга, Цена) и РАБОТА (Дата, Время, Мастер, Услуга).
С помощью запроса определите
а). кто из мастеров сегодня выполнил услуг на большую сумму,
б). какой вид услуг был самым популярным в прошлом году.
Слайд 27

Выборка данных из нескольких таблиц Пример 9 а). SELECT Мастер, SUM(Цена)

Выборка данных из нескольких таблиц

Пример 9
а).
SELECT Мастер, SUM(Цена) As Сумма
FROM

ЦЕНЫ INNER JOIN РАБОТА ON ЦЕНЫ.Услуга = РАБОТА.Услуга
WHERE Дата = DATE()
GROUP BY Мастер
ORDER BY SUM(Цена) DESC
б).
SELECT РАБОТА.Услуга, COUNT(*) As Число
FROM ЦЕНЫ INNER JOIN РАБОТА ON ЦЕНЫ.Услуга = РАБОТА.Услуга
WHERE YEAR(Дата) = YEAR(DATE())-1
GROUP BY РАБОТА.Услуга
ORDER BY COUNT(*) DESC
Слайд 28

Манипулирование данными INSERT Добавление одной или нескольких записей с заполнением значениями

Манипулирование данными

INSERT
Добавление одной или нескольких записей с заполнением значениями всех или

только некоторых полей таблицы.
а). добавление одной записи с заданными значениями в полях
INSERT INTO <Имя таблицы> [(Список полей)] VALUES (Список значений)
Пример.
Добавить новую запись в таблицу ЭКЗАМЕНЫ
INSERT INTO ЭКЗАМЕНЫ (КодЭкзам, Дата, Дисциплина, Группа)
VALUES (1245, #12.06.2006#, ‘Базы данных’, 35)
Слайд 29

Манипулирование данными INSERT б). добавление одной или нескольких записей, отобранных из

Манипулирование данными

INSERT
б). добавление одной или нескольких записей, отобранных из другой таблицы
INSERT

INTO <Имя таблицы> [(Список полей)] <инструкция SELECT>
Пример.
Добавить в таблицу АРХИВ из таблицы СТУДЕНТЫ некоторые сведения о выпускниках факультета (т.е. о студентах с номером группы > 50).
INSERT INTO АРХИВ (НомЗачКн, Фамилия, Имя, Отчество, Группа)
SELECT НомЗачКн, Фамилия, Имя, Отчество, Группа
FROM СТУДЕНТЫ WHERE Группа>50
Слайд 30

Манипулирование данными UPDATE Обновление значений полей во всех или нескольких записях,

Манипулирование данными

UPDATE
Обновление значений полей во всех или нескольких записях, удовлетворяющих заданному

условию.
UPDATE <Имя таблицы>
SET <Поле1> = <выражение1>, <Поле2> = <выражение2>, ...
[WHERE <Условие отбора данных>]
Слайд 31

Манипулирование данными UPDATE Пример 1. Увеличить все цены прейскуранта (таблица ЦЕНЫ)

Манипулирование данными

UPDATE
Пример 1.
Увеличить все цены прейскуранта (таблица ЦЕНЫ) на 5%
UPDATE

ЦЕНЫ SET Цена = Цена*1.05
Пример 2.
Заменить в поле Жанр таблицы ФИЛЬМЫ значение ‘Триллер’ на ‘Ужасы’.
UPDATE ФИЛЬМЫ SET Жанр = ‘Ужасы’ WHERE Жанр = ‘Триллер’
Слайд 32

Манипулирование данными DELETE Удаление всех или нескольких записей, удовлетворяющих заданному условию. DELETE [WHERE ]

Манипулирование данными

DELETE
Удаление всех или нескольких записей, удовлетворяющих заданному условию.
DELETE <Имя

таблицы>
[WHERE <Условие отбора данных>]