Базы данных. Использование SQL для построения запросов

Содержание

Слайд 2

Разделы языка SQL

Разделы языка SQL

Слайд 3

ЗАПРОС – команда, которая адресуется к Базе Данных для вывода требуемой

ЗАПРОС – команда, которая адресуется к Базе Данных для вывода требуемой

информации из таблиц

SELECT перечень требуемой информации FROM имя таблицы ;

SELECT City FROM S;

Команда SELECT

Слайд 4

Синтаксис команды SELECT SELECT * | [DISTINCT | ALL] .,.. FROM

Синтаксис команды SELECT

SELECT * |
[DISTINCT | ALL] <поля, скалярные выр-я,

константы>.,..
FROM {<имя таблицы> [ < псевдоним > ] .,..
[ WHERE < условие для строк>]}
[ GROUP BY { <имя поля, по которому производится группировка> | <номер поля> }.,..]
[ HAVING <условие для группы>]
[ ORDER BY { <имя поля> | <номер поля> }.,.. [ASC | DESC]]
[ UNION [ALL] SELECT...]
Слайд 5

SELECT SNum, SName, City, Comm FROM S; SELECT SNum, SName, City,

SELECT SNum, SName, City, Comm FROM S;

SELECT SNum, SName, City, Age,

Comm FROM S;

SELECT * FROM S;

Запрос № 1: вывести выборочно поля таблицы.

Результат:

Запрос № 2: вывести всю информацию о служащих.

Оператор * заменяет список всех полей таблицы.

Вывод полей таблицы в запросе

Слайд 6

SELECT DISTINCT City FROM S; SELECT * FROM S WHERE City=‘Харьков’;

SELECT DISTINCT City FROM S;

SELECT * FROM S WHERE City=‘Харьков’;

Запрос №

3: вывести города, в которых проживают служащие.

Результат:

Запрос № 4: вывести всю информацию о служащих, проживающих в городе Харьков.

Аргумент DISTINCT - удаляет избыточные данные.

Предложение WHERE - накладывает ограничение на выборку.

Результат:

Аргумент DISTINCT

Слайд 7

Сравнение: сравниваются результаты вычисления одного выражения с результатами вычисления другого. Диапазон:

Сравнение: сравниваются результаты вычисления одного выражения с результатами вычисления другого.
Диапазон:

проверяется, попадает ли результат вычисления выражения в заданный диапазон значений.
Принадлежность множеству: проверяется, принадлежит ли результат вычислений выражения заданному множеству значений.
Соответствие шаблону: проверяется, отвечает ли некоторое строковое значение заданному шаблону.
Значение NULL: проверяется, содержит ли данный столбец определитель NULL (неизвестное значение).

SELECT: WHERE

Слайд 8

Операторы сравнения = > >= AND OR NOT SELECT: WHERE (Сравнение)

Операторы сравнения
=
<
>
<=
>=
<>
AND
OR
NOT

SELECT:

WHERE (Сравнение)
Слайд 9

Выражение вычисляется слева направо. Первыми вычисляются подвыражения в скобках. Операторы NOT

Выражение вычисляется слева направо.
Первыми вычисляются подвыражения в скобках.
Операторы NOT

выполняются до выполнения операторов AND и OR.
Операторы AND выполняются до выполнения операторов OR.

SELECT: WHERE (Сравнение)

Слайд 10

SELECT SName FROM S WHERE Comm>0.12; SELECT * FROM S WHERE

SELECT SName FROM S WHERE Comm>0.12;

SELECT * FROM S WHERE NOT

City=‘Москва’ AND Comm>=0.14;

Запрос №5: вывести имена служащих, комиссионные которых выше 12%.

Результат:

Запрос № 6: вывести информацию о служащих, которые не живут в городе «Москва», но имеют комиссионные не ниже 14%.

Использование в предложении WHERE:
реляционных операторов (=, >, <, >=,<=, <>);

булевых операторов (AND, OR, NOT).

Результат:

SELECT: WHERE (Сравнение)

Слайд 11

Запрос № 7: вывести информацию о служащих с комиссионными больше 10%,

Запрос № 7: вывести информацию о служащих с комиссионными больше 10%,

но меньше 14%.

Результат:

оператор BETWEEN (определяет диапазон для значений поля);

SELECT * FROM S WHERE
Comm BETWEEN 0.12 AND 0.14;

SELECT * FROM S WHERE (Comm BETWEEN 0.12 AND 0.14) AND NOT Comm IN (0.12, 0.14);

SELECT * FROM S WHERE Comm>=0.12 AND Comm<=0.14;

Для исключения концов диапазона:

SELECT: WHERE (Диапазон)

Слайд 12

SELECT SName FROM S WHERE City=‘Киев’ OR City=‘Москва’; Запрос №8: вывести

SELECT SName FROM S WHERE City=‘Киев’ OR City=‘Москва’;

Запрос №8: вывести имена

служащих, проживающих в Киеве или в Москве.

Результат:

Запрос № 9: вывести всю информацию о служащих с номерами 102, 107, 111 и 112.

- оператор IN (определяет набор значений для поля, которые могут попасть в результат вывода);

SELECT SName FROM S WHERE City IN (‘Киев’, ‘Москва’);

SELECT * FROM S WHERE SNum IN (102, 107, 111, 112);

SELECT: WHERE (Принадлежность множеству)

Слайд 13

% - вместо этого символа может быть подставлено любое количество произвольных

% - вместо этого символа может быть подставлено любое количество произвольных

символов.
_ - заменяет один символ строки.
[] - вместо символа строки будет подставлен один из возможных символов, указанный в этих ограничителях.
[^] - вместо соответствующего символа строки будут подставлены все символы, кроме указанных в ограничителях.

SELECT: WHERE (Соответствие шаблону)

Слайд 14

Запрос № 10: вывести информацию о служащих, проживающих в городах, начинающихся

Запрос № 10: вывести информацию о служащих, проживающих в городах, начинающихся

на букву М.

Результат:

оператор LIKE (накладывает маску на значения поля);
/ ‘_’ – заменяет один символ; ‘%’ – 0 или несколько символов/

SELECT * FROM S WHERE City LIKE ‘М%’;

Запрос № 11: вывести информацию о служащих, в именах которых встречается бувка «р».

SELECT * FROM S WHERE SName LIKE ‘Р_%’ OR
SName LIKE ‘_%р%’;

Оператор LIKE

Запрос № 12: Вывести все номера телефонов, в которых вторая цифра равна 3 или 5.
SELECT PHONE
FROM PHONENOTE.PHONE
WHERE PHONE LIKE '_[35]%'

Слайд 15

Оператор NULL (указывает на отсутствие значения ) Запрос № 12: вывести

Оператор NULL (указывает на отсутствие значения )
Запрос № 12: вывести информацию

о служащих, для которых не известен возраст.
SELECT * FROM S WHERE Age IS NULL;
Пример: Вывести все записи из таблицы PHONE, в которых не указан номер телефона
SELECT PHONE
FROM PHONENOTE.PHONE
WHERE PHONE IS NULL;
Пример: Вывести все записи из таблицы PHONE, в которых указан номер телефона
SELECT PHONE
FROM PHONENOTE.PHONE
WHERE PHONE IS NOT NULL;

Оператор NULL

Слайд 16

SELECT Sname, City, Comm*100 FROM S; SELECT ‘Служащий ‘, Sname, ‘

SELECT Sname, City, Comm*100 FROM S;

SELECT ‘Служащий ‘, Sname, ‘ проживает

в городе ‘, City FROM S;

Запрос № 13: вывести имена служащих, города их проживания и комиссионные.

Результат:

Запрос № 14: вывести информацию о служащих с пояснениями.

использование скалярных выражений

использование текста в выводе

Результат:

Формирование вывода запроса

Слайд 17

Псевдонимы применяются с целью дать тому или иному столбцу более подходящее

Псевдонимы применяются с целью дать тому или иному столбцу более подходящее

название, а также в конструкциях GROUP BY, ORDER BY или HAVING для ссылки на столбец.
Вывести Фамилию и имя в одном поле
SELECT LASTNAME ||' '|| FIRSTNAME AS NAME, ADDRESS
FROM PHONENOTE;
Вывести все известные нам года рождения из таблицы BIRTHDAY
SELECT YEAR(BIRTHDAY) AS YEAR FROM PHONENOTE;

Вычисляемые поля и псевдонимы

Слайд 18

SELECT * FROM S ORDER BY Comm ASC; Запрос № 15:

SELECT * FROM S ORDER BY Comm ASC;

Запрос № 15: вывести

информацию о служащих, упорядочив ее по возрастанию комиссионных.

Результат:

Запрос № 16: вывести информацию о служащих города Киев в порядке убывания возраста.

- ASC – по возрастанию (используется по умолчанию);
- DESC – по убыванию.

SELECT * FROM S ORDER BY Comm;

SELECT * FROM S WHERE City=‘Киев’ ORDER BY Age DESC;

SELECT * FROM S WHERE City=‘Киев’ ORDER BY 4 DESC;

Упорядочивание результатов вывода /ORDER BY/

Слайд 19

- COUNT – считает количество строк или не-NULL значений поля; SUM

- COUNT – считает количество строк или не-NULL значений поля;
SUM –

выдает арифметическую сумму всех выбранных значений поля;
AVG – производит усреднение всех выбранных значений поля;
MAX – выводит наибольшее из значений поля;
MIN – выводит наименьшее значение из поля.

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

Агрегатная функция (групповая операция) выдает одиночное значение для группы записей таблицы.

SELECT агрегатная функция(наименование поля)
FROM имя таблицы;

Слайд 20

SELECT COUNT (SNum) FROM S; Запрос № 17: посчитать количество служащих

SELECT COUNT (SNum) FROM S;

Запрос № 17: посчитать количество служащих в

таблице.

Результат:

Оператор * позволяет посчитать количество строк в таблице.

SELECT COUNT (DISTINCT City) FROM S;

Запрос № 18: посчитать количество городов, в которых проживают служащие.

Результат:

Запрос № 19: посчитать количество клиентов в таблице.

SELECT COUNT (*) FROM С;

Функция COUNT

Слайд 21

SELECT AVG (Comm) FROM S; Запрос № 20: посчитать средний размер

SELECT AVG (Comm) FROM S;

Запрос № 20: посчитать средний размер комиссионных

служащих.

SELECT MAX (Age) FROM S;

Запрос № 21: найти максимальный возраст служащих.

Результат:

Результат:

Запрос № 22: вывести имя первого по алфавиту служащего.

SELECT MIN (SName) FROM S;

Результат:

Функции AVG, MAX и MIN

Слайд 22

SELECT City, AVG (Comm) FROM S GROUP BY City; Запрос №

SELECT City, AVG (Comm) FROM S GROUP BY City;

Запрос № 23:

по каждому городу посчитать средний размер комиссионных служащих.

Предложение GROUP BY (позволяет выделить группу записей для проведения групповой операции):

Результат:

Предложение GROUP BY

Слайд 23

SELECT Age, COUNT (SNum) FROM S GROUP BY Age; Запрос №

SELECT Age, COUNT (SNum)
FROM S GROUP BY Age;

Запрос № 24:

по каждой возрастной группе посчитать количество служащих, относящейся к ней.

Результат:

Запрос № 25: вывести статистику о группах служащих с одинаковыми размерами комиссионных по городах.

SELECT City, Comm, COUNT(SNum) FROM S GROUP BY City, Comm;

Результат:

Запросы с GROUP BY

Слайд 24

Запрос № 28: вывести информацию по городам и количестве служащих в

Запрос № 28: вывести информацию по городам и количестве служащих в

них, если это количество больше одного.

Предложение HAVING
(накладывает ограничения на вывод групповых записей)

Результат:

Запрос № 29: вывести информацию о городах, средние комиссионные в которых не ниже 13%.

Результат:

SELECT City, COUNT(SNum) FROM S GROUP BY City HAVING COUNT(SNum)>1 ;

SELECT City, AVG(Comm) FROM S GROUP BY City HAVING AVG(Comm)>0.13 ;

Слайд 25

INSERT INTO название_таблицы VALUES (значение1[, значение2]); INSERT INTO PHONENOTE VALUES (1,

INSERT INTO название_таблицы VALUES (значение1[, значение2]);
INSERT INTO PHONENOTE VALUES (1, 'IVANOV',

'IVAN', 'PR. POBEDI, 40');
INSERT INTO PHONENOTE (NOTE_ID, LASTNAME, FIRSTNAME) VALUES (1, 'Смирнов', 'Андрей');

Добавление строк (INSERT)

Слайд 26

UPDATE название_таблицы SET название_поля1= значение[, название_поля2= значение] WHERE условие; UPDATE PHONENOTE

UPDATE название_таблицы SET название_поля1= значение[, название_поля2= значение] WHERE условие;
UPDATE PHONENOTE SET

ADDRESS='г. Челябинск';
UPDATE PHONENOTE SET ADDRESS='г. Челябинск‘ WHERE ADDRESS IS NULL;
UPDATE PHONENOTE SET ADDRESS=NULL.

Модификация строк (UPDATE)