Similar presentations:
4. ОСНОВЫ SQL
1. ОСНОВЫ SQL
1ОТНОШЕНИЕ (ТАБЛИЦА)
2. Основные понятия реляционных баз данных
Реляционнаямодель
была разработана в конце
1960-х годов Е.Ф.Коддом.
Она
определяет
способ
представления
данных
(структуру данных), методы
защиты данных (целостность
данных),
и
операции,
которые можно выполнять с
данными (манипулирование
данными).
Эта
модель
лежит
в
основе
всех
реляционных баз данных до
настоящего времени.
2
3. Основные принципы реляционных баз данных:
все данные на концептуальном уровнепредставляются в виде объектов, заданных в
виде строк и столбцов, называемых
отношением, более распространенное
название – таблица;
в пересечение строки и столбца таблицы можно
занести только одно значение;
все операции выполняются над целыми
отношениями и результатом этих операций
является отношение.
3
4. Пример отношения:
Пример отношения:4
5. Пример отношения:
Пример отношения:На примере таблицы Сотрудник рассмотрим
терминологию реляционных баз данных:
отношение – это структура данных целиком,
набор записей (в обычном понимании – таблица) ,
в примере –это Сотрудник;
кортеж – это каждая строка , содержащая
данные (более распространенный термин – запись ),
например, <001, Борин С.А, 234-01-23,
программист>, все кортежи в отношении должны
быть различны;
мощность – число кортежей в таблице (проще
говоря, число записей), в данном случае 3, мощность
отношения может быть любой (от 0 до бесконечности),
5
порядок следования кортежей - неважен;
6. Пример отношения:
Пример отношения:атрибут – это столбец в таблице (более
распространенный термин – поле ), в примере –
Табельный номер, Фамилия И.О., Телефон,
Должность)
размерность – это число атрибутов в
таблице, в данном случае – 4; размерность
отношения должна быть больше 0, порядок
следования атрибутов существенен;
домен атрибута – это допустимые значения
(неповторяющиеся), которые можно занести
в поле , например для атрибута Должность домен
– {инженер, программист}.
6
7. Задание
Для таблицы Сотрудник отметьте верные ячейки(В каждом столбце и строке - один правильный ответ).
Домен
Атрибут
Мощность
Кортеж
Размер Отноность шение
4
002, Иванов И.И.,
234- 12-01, инженер
{###-##-##},
где # - цифра от 0 до 9
Фамилия И.О.
3
Сотрудник
7
8. Реляционная модель
Перед созданием таблицы в базе данныхнеобходимо описать ее структуру. Для этого
выполняется
следующая
последовательность
шагов:.
Дать таблице имя,
Правила для выбора имен таблиц:
может включать английские буквы, цифры и
знак подчеркивания, должно начинаться с буквы;
имя должно быть уникальным в пределах базы
данных.
8
9. Реляционная модель
Определитьструктуру
таблицы,
из
каких
атрибутов(столбцов, полей) она будет состоять
Правила по выбору имени поля информационного
объекта:
может включать английские буквы, цифры и знак
подчеркивания, должно начинаться с буквы;
имя поля должно быть уникальным в пределах
таблицы.
Рекомендации по выбору имени поля
информационного объекта:
имя должно быть понятным и соответствовать тем
данным, которые хранятся в поле;
имя может состоять из нескольких слов, тогда слова
разделяются подчеркиванием, после подчеркивания
9
слово пишется с маленькой буквы.
o
10. Реляционная модель
Включить ключевое поле, которое являетсяОБЯЗАТЕЛЬНЫМ ЭЛЕМЕНТОМ каждой
реляционной таблицы.
Рекомендации по именованию ключевых
полей:
имя должно состоять из двух частей: начинаться
с названия таблицы, которой поле
принадлежит, затем через подчеркивание
необходимо указать id.
10
11. Пример:
Пусть таблица будет называться bookОна будет состоять атрибутов(столбцов, полей):
title – поле для хранения названия книги;
author – поле с фамилией автора книги ;
priсe – цена книги;
amount – количество книг.
Включим ключевое поле book_id
11
12. Выбор типов данных для полей
Выбор типов данных для полейПосле описания структуры таблицы необходимо
выбрать типы данных для каждого поля.
Основные типы данных SQL:
Тип данных Описание
Пример
INT
Целое число, могут принимать значения -567
от -2 147 483 648 до 2 147 483 647
INTEGER
1205
DECIMAL
NUMERIC
Вещественное число,
в скобках указывается максимальная
длина числа (включает символы слева и
справа от десятичной запятой)
и количество знаков после запятой.
Можно использовать оба этих типа, они
эквивалентны, принимают значения в
диапазоне -1038+1 до 1038-1.
DECIMAL(4,1)
NUMERIC(6,3)
34.6
-3.294
12
13.
Тип данных ОписаниеПример
Дата в формате ГГГГ-ММ-ДД
26 июля 2020 года
DATE
2020-07-26
3 января 2021 года
2021-01-03
Строка длиной не более 255
символов,
в скобках указывается
VARCHAR
максимальная
длина строки, которая может
пример
храниться в поле
описание
VARCHAR(10)
Примечание:
Для описания ключевого поля используйте описание
INTEGER AUTO_INCREMENT PRIMARY KEY
Это значит, что в поле будут заноситься различные
целые числа, при этом они будут автоматически
13
генерироваться (каждая следующая строка будет
иметь значение ключа на 1 больше предыдущего).
14. Пример:
Определим тип данных для каждого полятаблицы book:
book_id
title
author
priсe
amount
VARCHAR(30)
DECIMAL(8,2)
INT
VARCHAR(50)
INTEGER AUTO_INCREMENT PRIMARY KEY
14
15. Задание
ЗначенияСлово
Предложение
Абзац
sql
mySql
data
5.12
-0.99
10.12
Сопоставьте значения и типы
данных, с помощью которых их
можно описать.
Тип данных
INT
DECIMAL(5,2)
VARCHAR(11)
DECIMAL(7,1)
VARCHAR(5)
-34078
55
0
56.1
456.1
3000
15
16. ОСНОВЫ SQL
16ЗАПРОСЫ НА СОЗДАНИЕ
17. Создание базы данных
Для создания базы данных используется SQLзапрос, содержащий команду CREATE DATABASE<DATABASENAME>;.
Замените <DATABASENAME> названием вашей
базы данных. Оно не может содержать пробелы.
Запрос:
CREATE DATABASE us_states;
17
18. Выбор базы данных
Когда база данных создана, нужно ее выбрать,чтобы
начать
редактирование.
Введите
команду
USE
us_states;.
Вы
увидите
сообщение Database changed, которое уведомляет,
что
сейчас
активной
базой
данных
является us_states.
18
19. Создание таблицы
Для создания таблицы используется SQLзапрос. В нем указывается какая таблицасоздается, из каких атрибутов(полей) она состоит и
какой тип данных имеет каждое поле, при
необходимости
указывается
описание
полей
(ключевое поле и т.д.).
19
20. Структура запроса на создание таблицы:
ключевые слова : CREATE TABLEимя создаваемой таблицы;
открывающая круглая скобка «(»;
название поля и его описание, которое включает
тип поля и другие необязательные
характеристики;
запятая;
название поля и его описание;
...
закрывающая скобка «)».
20
21. Пример:
Создадим таблицу genre следующей структуры:Поле
genre_id
name_genre
Тип, описание
INTEGER AUTO_INCREMENT PRIMARY KEY
VARCHAR(30)
Запрос:
CREATE TABLE genre(
genre_id INTEGER AUTO_INCREMENT PRIMARY KEY,
name_genre VARCHAR(30)
);
!
Созданная таблица - пустая.
21
22. Рекомендации по записи SQL запроса:
Ключевые слова: SQL не являетсярегистрозависимым языком (CREATE и create одно и тоже ключевое слово).
Ключевые слова SQL и типы данных
рекомендуется записывать прописными
(большими) буквами.
Имена таблиц и полей - строчными (маленькими)
буквами.
SQL-запрос можно писать на нескольких строках.
В конце SQL-запроса ставится точка с запятой
(хотя если Вы пишете один запрос, это
22
необязательно).
23. Вставка записи в таблицу
Для занесения новой записи в таблицуиспользуется SQL запрос, в котором указывается в
какую таблицу, в какие поля заносить новые
значения.
Пример.
В таблицу, состоящую из двух столбцов добавим
новую строку, при этом в поле1 заносится
значение1, в поле2 - значение2.
INSERT INTO таблица(поле1, поле2)
VALUES (значение1, значение2);
!
В результате выполнения запроса новая запись
заносится в конец обновляемой таблицы.
23
24. Вставка записи в таблицу
При составлении списка полей и списка значенийнеобходимо учитывать следующее:
количество полей и количество значений в списках
должны совпадать;
должно существовать прямое соответствие между
позицией одного и того же элемента в обоих списках,
поэтому первый элемент списка значений должен
относиться к первому столбцу в списке столбцов, второй –
ко второму столбцу и т.д.;
типы данных элементов в списке значений должны
быть совместимы с типами данных соответствующих
столбцов таблицы ( целое число можно занести в поле
типа DECIMAL, обратная операция - недопустима);
новые значения нельзя добавлять в поля, описанные
24
как PRIMARY KEY AUTO_INCREMENT;
25. Пример 1:
Вставим новую запись в таблицу genre:genre_id
name_genre
INTEGER AUTO_INCREMENT PRIMARY KEY
VARCHAR(30)
1
Роман
Запрос:
INSERT INTO genre (name_genre)
VALUES ('Роман');
25
26. Пример 2:
Вставим новую запись в таблицу book:book_id
title
author
price
amount
INTEGER
AUTO_INCREMENT
PRIMARY KEY
VARCHAR(50)
VARCHAR(30)
DECIMAL(8,2)
INT
1
Мастер и
Маргарита
Булгаков М.А.670.99
3
Запрос:
INSERT INTO book (title, author, price, amount )
VALUES ('Мастер и Маргарита', 'Булгаков М.А.', 670.99, 3);
26
27. Пример 3:
Вставим новые записи в таблицу book:book_id
title
author
price
INTEGER
AUTO_INCREMENT
PRIMARY KEY
VARCHAR(50)
VARCHAR(30)
DECIMAL(8,2) INT
Мастер и
Булгаков М.А.
Маргарита
Белая гвардия Булгаков М.А.
Достоевский
Идиот
Ф.М.
1
2
3
amount
670.99
3
540.50
5
460.00
10
Запрос:
INSERT INTO book (title, author, price, amount )
VALUES ('Белая гвардия', 'Булгаков М.А.', 540.50, 5),
('Идиот', 'Достоевский Ф.М.', 460.00, 10),
('Братья Карамазовы', 'Достоевский Ф.М.', 799.01, 2);
27
28. Добавление поля в таблицу
Изменение структуры таблицы, добавлением в неё новогополя:
Запрос:
ALTER TABLE Имя_таблицы ADD COLUMN
Имя_нового_поля Тип_поля ;
28
29. ОСНОВЫ SQL
29ОПЕРАТОРЫ SQL ДЛЯ
ПРОСМОТРА И УДАЛЕНИЯ
30. Операторы для просмотра
Есть возможность посмотреть, какие БД существуют, какиетаблицы в них присутствуют, и какие столбцы эти таблицы
содержат. Для этого в SQL существует несколько операторов:
show databases — показать все имеющиеся БД,
show tables — показать список таблиц текущей БД
(предварительно
ее
надо
выбрать
с
помощью
оператора use),
describe имя_таблицы
столбцов указанной таблицы.
—
показать
описание
30
31. Операторы для удаления
Оператор — drop позволяет удалять таблицы и БД.Чтобы удалить таблицу, нужно написать:
drop table имя_таблицы;
(предварительно нужно выбрать БД для работы)
Пример:
drop table topics;
/* будет удалена таблица topics;
*/
Чтобы удалить БД нужно написать:
drop database имя_базы данных;
Пример:
drop database forum;
/* будет удалена БД форум;
*/
31
32. Операторы для удаления
Изменение структуры таблицы, удалением из неёполя:
ALTER TABLE Имя_таблицы DROP COLUMN
Имя_поля ;
Удаление всей информации из таблицы:
TRUNCATE TABLE Имя_таблицы ;
Удаление записи/записей из таблицы:
DELETE FROM Имя_таблицы Where условие ;
Пример:
DELETE FROM Sport WHERE id = 2 ;
32
33. Выборка всех данных из таблицы
Для того чтобы отобрать все данные из таблицыиспользуется SQL запрос следующей структуры:
ключевое слово SELECT;
символ « *» ;
ключевое слово FROM;
имя таблицы.
SQL запрос, который выберет все записи из
таблицы genre :
Запрос:
SELECT * FROM genre;
33
34. ОСНОВЫ SQL
34ЗАПРОСЫ НА ВЫБОРКУ
35. Выборка отдельных столбцов
Для того чтобы отобрать данные из определенныхстолбцов таблицы используется SQL запрос
следующей структуры:
• ключевое слово SELECT ;
• список столбцов таблицы через запятую;
• ключевое слово FROM ;
• имя таблицы.
Выбрать названия книг и их количества из
таблицы book .
Запрос:
SELECT title, amount FROM book;
35
36. Выборка столбцов и присвоение им новых имен
Длятого
чтобы
отобрать
данные
из
определенных столбцов таблицы и одновременно
задать столбцам новые имена используется SQL
запрос следующей структуры:
ключевое слово SELECT ;
имя столбца;
ключевое слово AS ;
новое название столбца (можно русскими
буквами);
запятая;
имя столбца;
....
36
ключевое слово FROM ;
имя таблицы.
37. Выборка столбцов и присвоение им новых имен
Например:Выбрать все названия книг и их количества из
таблицы book, для столбца title задать новое
имя Название.
Запрос:
SELECT title AS Название, amount
FROM book;
37
38. Выборка данных с созданием вычисляемого столбца
С помощью SQL запросов можно осуществлятьвычисления по каждой строке таблицы с
помощью вычисляемого столбца. Для него в
списке полей после оператора SELECT
указывается выражение и задается имя.
Выражение может включать имена столбцов,
константы, знаки операций, встроенные
функции.
Результатом является таблица, в которую
включены все данные из указанных
после SELECT столбцов, а также новый столбец,
в каждой строке которого вычисляется заданное
выражение.
38
39. Выборка данных с созданием вычисляемого столбца
Например:Вывести всю информацию о книгах, а также для
каждой
позиции
посчитать
ее
стоимость
(произведение цены на количество). Вычисляемому
столбцу дать имя total .
Запрос:
SELECT title, author, price, amount,
price * amount AS total
FROM book;
39
40. Выборка данных, вычисляемые столбцы, математические функции
Выборка данных, вычисляемыестолбцы, математические функции
В SQL реализовано множество математических
функций для работы с числовыми данными:
Функция
Описание
Пример
возвращает наименьшее
целое число, большее
или равное x
CEILING(4.2)=5
CEILING(x)
(округляет до целого
CEILING(-5.8)=-5
числа в большую
сторону)
округляет
значение x до k знаков ROUND(4.361)=4
ROUND(x, k) после запятой,
ROUND(5.86592,1)=
если k не указано –
5.9
40
x округляется до целого
41. Выборка данных, вычисляемые столбцы, математические функции
Выборка данных, вычисляемыестолбцы, математические функции
Функция
Описание
Пример
FLOOR(x)
возвращает наибольшее
целое число, меньшее или
FLOOR(4.2)=4
равное x
FLOOR(-5.8)=-6
(округляет до целого числа
в меньшую сторону)
POWER(x, y)
возведение x в степень y
POWER(3,4)=81.0
SQRT(x)
квадратный корень из x
SQRT(4)=2.0
SQRT(2)=1.41...
DEGREES(x)
конвертирует значение x из DEGREES(3) =
радиан в градусы
171.8...
41
42. Выборка данных, вычисляемые столбцы, математические функции
Выборка данных, вычисляемыестолбцы, математические функции
Функция
Описание
RADIANS(x)
конвертирует значение x из
RADIANS(180)=3.14...
градусов в радианы
ABS(x)
модуль числа x
PI()
pi = 3.1415926...
Пример
ABS(-1) = 1
ABS(1) = 1
42
43. Выборка данных, вычисляемые столбцы, математические функции
Выборка данных, вычисляемыестолбцы, математические функции
Для каждой книги из таблицы book вычислим
налог на добавленную стоимость (имя столбца tax),
который включен в цену и составляет k = 18%, а
также цену книги (price_tax) без него. Формулы
для вычисления:
Запрос:
SELECT title, price,
(price*18/100)/(1+18/100) AS tax,
price/(1+18/100) AS price_tax
FROM book;
43
44. Выборка данных, вычисляемые столбцы, математические функции
Выборка данных, вычисляемыестолбцы, математические функции
Запрос:
SELECT title, price,
(price*18/100)/(1+18/100) AS tax,
price/(1+18/100) AS price_tax
FROM book;
? Что плохо?
44
45. Выборка данных, вычисляемые столбцы, математические функции
Выборка данных, вычисляемыестолбцы, математические функции
Запрос:
SELECT title, price,
ROUND((price*18/100)/(1+18/100),2) AS tax,
ROUND(price/(1+18/100),2) AS price_tax
FROM book;
45
46. Выборка данных, вычисляемые столбцы, логические функции
Выборка данных, вычисляемыестолбцы, логические функции
В SQL реализована возможность заносить в поле
значение в зависимости от условия. Для этого
используется функция IF:
IF(логическое_выражение, выражение_1,
выражение_2)
Все три параметра IF() являются обязательными.
Допускается использование вложенных функций,
вместо выражения_1 или выражения_2 может
стоять новая функция IF.
46
47. Выборка данных, вычисляемые столбцы, логические функции
Выборка данных, вычисляемыестолбцы, логические функции
Пример
Для каждой книги из таблицы book установим
скидку следующим образом: если количество книг
меньше 4, то скидка будет составлять 50% от цены,
в противном случае 30%. Цена по скидке должна
отображаться с двумя знаками после запятой
Запрос:
SELECT title, amount, price,
ROUND (IF(amount<4, price*0.5, price*0.7),2) AS sale
FROM book;
47
48. Выборка данных, вычисляемые столбцы, логические функции
Выборка данных, вычисляемыестолбцы, логические функции
Запрос:
SELECT title, amount, price,
ROUND (IF(amount<4, price*0.5, price*0.7),2) AS sale
FROM book;
48
49. Выборка данных, вычисляемые столбцы, логические функции
Выборка данных, вычисляемыестолбцы, логические функции
Пример
Усложнить вычисление скидки в зависимости от
количества книг. Если количество книг меньше 4 –
то скидка 50%, меньше 11 – 30%, в остальных
случаях – 10%. Добавить поле Ваша_скидка, в
котором указать какая именно скидка на каждую
книгу.
Запрос:
SELECT title, amount, price,
ROUND(IF(amount < 4, price * 0.5, IF(amount < 11,
price * 0.7, price * 0.9)), 2) AS sale,
IF(amount < 4, 'скидка 50%', IF(amount < 11, 'скидка
30%', 'скидка 10%')) AS Ваша_скидка
FROM book;
49
50. Выборка данных, вычисляемые столбцы, логические функции
Выборка данных, вычисляемыестолбцы, логические функции
Запрос:
SELECT title, amount, price,
ROUND(IF(amount < 4, price * 0.5, IF(amount < 11,
price * 0.7, price * 0.9)), 2) AS sale,
IF(amount < 4, 'скидка 50%', IF(amount < 11, 'скидка
30%', 'скидка 10%')) AS Ваша_скидка
FROM book;
50
51. Выборка данных по условию
Выборка данных по условиюС помощью запросов можно включать в итоговую
выборку не все строки исходной таблицы, а только те,
которые отвечают некоторому условию.
Для этого после указания таблицы, откуда выбираются
данные, задается ключевое слово WHERE и логическое
выражение, от результата которого зависит будет ли
включена строка в выборку или нет. Если условие –
истина, то строка(запись) включается в выборку, если
ложь – нет.
Логическое выражение может включать операторы
сравнения (равно «=», не равно «<>», больше «>»,
меньше «<», больше или равно«>=», меньше или равно
«<=»).
51
52. Выборка данных по условию
Выборка данных по условиюПример
Вывести название и цену тех книг, цены которых
меньше 600 рублей.
Запрос:
SELECT title, price
FROM book
WHERE price < 600;
52
53. ОСНОВЫ SQL
53ВЫБОРКА ДАННЫХ
ЛОГИЧЕСКИЕ ОПЕРАЦИИ
СОРТИРОВКА
54. Выборка данных, логические операции
Логическоевыражение
после
ключевого
слова WHERE кроме операторов сравнения
и
выражений
может
включать
логические
операции (И «and», ИЛИ «or», НЕ «not») и круглые
скобки,
изменяющие
приоритеты
выполнения
операций.
Приоритеты операций:
круглые скобки
умножение (*), деление (/)
сложение (+), вычитание (-)
операторы сравнения (=, >, <, >=, <=, <>)
NOT
AND
54
OR
55. Выборка данных, логические операции
ПримерВывести название, автора и цену тех книг, которые написал
Булгаков, ценой больше 600 рублей
Запрос:
SELECT title, author, price
FROM book
WHERE price > 600 AND author = 'Булгаков М.А.';
Пример
Вывести название, цену тех книг, которые написал Булгаков
или Есенин, ценой больше 600 рублей
Запрос:
SELECT title, author, price
FROM book
WHERE (author = 'Булгаков М.А.' OR author = 'Есенин С.А.')
55
AND price > 600;
56. Выборка данных, операторы BETWEEN, IN
Логическое выражение после ключевогослова WHERE может включать
операторы BETWEEN и IN. Приоритет у этих операторов
такой же как у операторов сравнения, то есть они
выполняются раньше, чем NOT, AND, OR.
Оператор BETWEEN позволяет отобрать данные,
относящиеся к некоторому интервалу, включая его
границы.
Пример
Выбрать названия и количества тех книг, количество
которых от 5 до 14 включительно.
Запрос:
SELECT title, amount
FROM book
WHERE amount BETWEEN 5 AND 14;
56
57. Выборка данных, операторы BETWEEN, IN
ОператорIN
позволяет выбрать
соответствующие значениям из списка.
данные,
Пример
Выбрать названия и цены книг, написанных
Булгаковым или Достоевским.
Запрос:
SELECT title, price
FROM book
WHERE author IN ('Булгаков М.А.', 'Достоевский Ф.М.');
57
58. Выборка данных с сортировкой
При выборке можно указывать столбец илинесколько
столбцов,
по
которым
необходимо
отсортировать отобранные строки.
Для этого используются ключевые слова ORDER
BY, после которых задаются имена столбцов. При этом
строки сортируются по первому столбцу, если указан
второй столбец, сортировка осуществляется только для
тех строк, у которых значения первого столбца
одинаковы.
По умолчанию ORDER BY выполняет сортировку по
возрастанию.
Чтобы
управлять
направлением
сортировки вручную, после имени столбца указывается
ключевое
слово
ASC
(по
возрастанию)
58
или DESC (по убыванию).
59. Выборка данных с сортировкой
Логический порядок операций для запроса SQL на выборку данныхс сортировкой следующий:
FROM
WHERE
SELECT
ORDER BY
Поскольку сортировка выполняется позже SELECT, для
указания столбцов, по которым выполняется сортировка,
можно использовать имена, присвоенные им
после SELECT, а также порядковый номер столбца в
перечислении.
59
60. Выборка данных с сортировкой
ПримерВывести автора, название и количество книг, в
отсортированном в алфавитном порядке по автору и по
убыванию количества, для тех книг, цены которых
меньше 750 рублей.
Запрос:
SELECT author, title, amount AS Количество
FROM book
WHERE price < 750
ORDER BY author, amount DESC;
или
SELECT author, title, amount AS Количество
FROM book
WHERE price < 750
ORDER BY 1, 3 DESC;
60
61. ОСНОВЫ SQL
61ФУНКЦИИ ОБРАБОТКИ
СТРОК
62. Выборка данных, оператор LIKE
Оператор LIKE используется для сравнения строк.В отличие от операторов отношения равно (=) и не равно
(<>), LIKE позволяет сравнивать строки не на полное
совпадение
(не
совпадение),
а
в
соответствии
с
шаблоном.
Шаблон
может
включать
обычные
символы и символы-шаблоны.
При сравнении с шаблоном, его обычные символы
должны в точности совпадать с символами, указанными в
строке. Символы-шаблоны могут совпадать с произвольными
элементами символьной строки.
62
63. Выборка данных, оператор LIKE
Символ -шаблон
Описание
%
SELECT * FROM book WHERE
Любая строка,
author LIKE '%М.%'
содержащая
выполняет поиск и выдает все
ноль или более
книги, инициалы авторов
символов
которых содержат «М.»
_
Любой
(подчерки- одиночный
символ
вание)
Пример
SELECT * FROM book WHERE
title LIKE 'Поэм_'
выполняет поиск и выдает все
книги, названия которых либо
«Поэма», либо «Поэмы» и пр.
63
64. Функции обработки строк
СONCAT( s1, s2, ...)LENGTH(S)
RLIKE '^ текст_для_поиска'
объединение строк
длина строки
строка, которая
начинается с
«текста для поиска»
RLIKE 'текст_для_поиска$'
строка, которая
заканчивается
«текстом для поиска»
64
65. Выборка данных с сортировкой
ПримерВывести всех спортсменов, фамилия которых содержит
«ро»: Комаров, Сорокин, Воронин и т.д.
SELECT * FROM
Sport
WHERE fio Like ‘%ро%’ ;
Пример
Вывести всех спортсменов, фамилия которых
заканчивается на «о»: Ильченко, Михайличенко и т.д.
SELECT * FROM
Sport
WHERE fio RLike ‘о$’ ;
65
66. ОСНОВЫ SQL
66ЗАПРОСЫ
ГРУППОВЫЕ ОПЕРАЦИИ
67. Выбор уникальных элементов столбца
1 способ:Чтобы отобрать уникальные элементы некоторого
столбца используется ключевое слово DISTINCT,
которое размещается сразу после SELECT
Пример
Выбрать различных авторов, книги которых хранятся в
таблице book.
Запрос:
SELECT DISTINCT author
FROM book;
67
68. Выбор уникальных элементов столбца
2 способ:Использование оператора GROUP BY, который
группирует данные при выборке, имеющие одинаковые
значения в некотором столбце.
Столбец, по которому осуществляется группировка,
указывается после GROUP BY .
Пример
Выбрать различных авторов, книги которых хранятся в
таблице book.
Запрос:
SELECT author
FROM book
GROUP BY author;
68
69. Выборка данных, групповые функции SUM и COUNT
Выборка данных, групповые функцииSUM и COUNT
При
группировке
над
элементами
столбца,
входящими в группу можно выполнить различные
действия, например, просуммировать их или найти
количество элементов в группе.
Пример
Рассмотрим, как осуществляется группировка данных по
некоторому столбцу и вычисления над группой на
следующем примере:
Запрос:
SELECT author, sum(amount), count(amount)
FROM book
GROUP BY author;
69
70. Выборка данных, групповые функции SUM и COUNT
Выборка данных, групповые функцииSUM и COUNT
1. В таблице book определяются строки, в которых в
столбце author одинаковые значения:
70
71. Выборка данных, групповые функции SUM и COUNT
Выборка данных, групповые функцииSUM и COUNT
2. Вместо каждой группы в результирующий запрос
включается одна запись. Запись как минимум
включает значение столбца, по которому осуществляется
группировка (в нашем случае это author):
71
72. Выборка данных, групповые функции SUM и COUNT
Выборка данных, групповые функцииSUM и COUNT
3. Дальше выполняются вычисления над элементами
КАЖДОЙ группы в отдельности, например, посчитать
общее количество экземпляров книг каждого автора.
Для этого используется групповая функция SUM(), а в
скобках указывается столбец, по которому нужно
выполнить суммирование ( в нашем случае amount):
72
73. Выборка данных, групповые функции SUM и COUNT
Выборка данных, групповые функцииSUM и COUNT
4. Также можно посчитать, сколько записей относится к
группе. Для этого используется функция COUNT(), в
скобках можно указать ЛЮБОЙ столбец из группы, если
группа не содержит пустых значений:
73
74. Выборка данных, функция COUNT (группа содержит пустые значения)
ПримерПосчитать, сколько различных книг каждого автора
хранится на складе.
74
75. Выборка данных, функция COUNT (группа содержит пустые значения)
ПримерПосчитать, сколько различных книг каждого автора
хранится на складе.
Запрос:
SELECT author, COUNT(author), COUNT(amount),
COUNT(*)
FROM book
GROUP BY author;
! Если столбец указан в SELECT БЕЗ применения
групповой функции, то он обязательно должен быть
указан и в GROUP BY. Иначе получим ошибку.
75
76.
Если же в столбцах есть значения Null, тоCOUNT(*) — подсчитывает все записи, относящиеся к
группе, в том числе и со значением NULL;
COUNT(имя_столбца) — возвращает количество
записей конкретного столбца (только NOT NULL), 76
относящихся к группе.
77. Групповые функции MIN, MAX и AVG
MIN(), MAX() и AVG() вычисляют минимальное,максимальное и среднее значение элементов столбца,
относящихся к группе.
Пример
Вывести минимальную цену книги каждого автора
Запрос:
SELECT author, MIN(price) AS min_price
FROM book
GROUP BY author;
77
78. Выборка данных c вычислением, групповые функции
В качестве аргумента групповых функцийSQL
может использоваться не только столбец, но и любое
допустимое в SQL арифметическое выражение.
Пример
Вывести суммарную стоимость книг каждого автора.
Запрос:
SELECT author, SUM(price * amount) AS Стоимость
FROM book
GROUP BY author;
78
79. Выборка данных c вычислением, групповые функции
ПримерНайти среднюю цену книг каждого автора, округлить до
сотых . Назвать поле Средняя цена.
Запрос:
SELECT author,
ROUND(AVG(price),2) AS Средняя_цена
FROM book
GROUP BY author;
79
80. Вычисления по таблице целиком
Групповые функции позволяют вычислять итоговыезначения по всей таблице.
Пример
Посчитать количество экземпляров книг на складе.
Запрос:
SELECT SUM(amount) AS Количество
FROM book;
! Результатом таких запросов
является единственная
строка с вычисленными по
таблице значениями.
80
81. Выборка данных по условию, групповые функции
В запросах с групповыми функциямивместо WHERE используется ключевое слово HAVING ,
которое размещается после оператора GROUP BY.
Пример
Найти минимальную и максимальную цену книг всех
авторов, общая стоимость книг которых больше 5000.
Запрос:
SELECT author,
MIN(price) AS Минимальная_цена,
MAX(price) AS Максимальная_цена
FROM book
GROUP BY author
HAVING SUM(price * amount) > 5000;
81
82. Выборка данных по условию, групповые функции, WHERE и HAVING
WHERE и HAVING могут использоваться в одномзапросе.
Пример
Вывести максимальную и минимальную цену книг
каждого автора, кроме Есенина, количество
экземпляров книг которого больше 10.
SELECT author,
MIN(price) AS Минимальная_цена,
MAX(price) AS Максимальная_цена
FROM book
WHERE author <> 'Есенин С.А.'
GROUP BY author
HAVING SUM(amount) > 10;
82
83. ОСНОВЫ SQL
83ВЛОЖЕННЫЕ ЗАПРОСЫ
84. Вложенный запрос, возвращающий одно значение
Вложенный запрос, возвращающий одно значение,может
использоваться
в
условии
отбора
записей WHERE как обычное значение совместно с
операциями =, <>, >=, <=, >, <.
Пример
Вывести информацию о самых дешевых книгах,
хранящихся на складе.
SELECT title, author, price, amount
FROM book
WHERE price = (
SELECT MIN(price)
FROM book
);
84
85. Использование вложенного запроса в выражении
Вложенный запрос, возвращающий одно значение,может использоваться в выражениях как обычный
операнд, например, к нему можно что-то прибавить,
вычесть и пр.
Пример
Вывести информацию о книгах, количество экземпляров
которых отличается от среднего количества экземпляров
книг на складе более чем на 3.
SELECT title, author, amount
FROM book
WHERE ABS(amount - (SELECT AVG(amount)
FROM book)) >3;
85
86. Вложенный запрос, оператор IN
Вложенный запрос может возвращать несколькозначений одного столбца.
Оператор IN определяет, совпадает ли указанное в
логическом выражении значение с одним из
значений, содержащихся во вложенном запросе, при
этом логическое выражение получает значение
истина.
Оператор NOT IN выполняет обратное действие –
выражение истинно, если значение не содержится во
вложенном запросе.
86
87. Вложенный запрос, оператор IN
ПримерВывести информацию о книгах тех авторов, общее
количество экземпляров книг которых не менее 12.
SELECT title, author, amount, price
FROM book
WHERE author IN ( SELECT author
FROM book
GROUP BY author
HAVING SUM(amount) >= 12 );
87
88. Вложенный запрос, операторы ANY и ALL
Вложенный запрос, возвращающий несколькозначений одного столбца, можно использовать для
отбора
записей
с
помощью
операторов ANY и ALL совместно с операциями
отношения (=, <>, <=, >=, <, >).
Операторы ANY и ALL используются в SQL для
сравнения некоторого значения с результирующим
набором вложенного запроса, состоящим из одного
столбца.
!
Операторы ALL и ANY можно использовать
только с вложенными запросами.
88
89. Вложенный запрос, операторы ANY и ALL
Прииспользовании
оператора
ANY
в
результирующую таблицу будут включены все записи,
для которых выражение со знаком отношения верно
хотя бы для одного элемента результирующего запроса.
Как работает оператор ANY:
amount > ANY (10, 12) эквивалентно amount > 10
amount < ANY (10, 12) эквивалентно amount < 12
amount = ANY (10, 12) эквивалентно
(amount = 10) OR (amount = 12),
а также amount IN (10,12)
89
amount <> ANY (10, 12) вернет все записи с любым
значением amount, включая 10 и 12
90. Вложенный запрос, операторы ANY и ALL
Прииспользовании
оператора
ALL
в
результирующую таблицу будут включены все записи,
для которых выражение со знаком отношения верно
для всех элементов результирующего запроса. Как
работает оператор ALL:
amount > ALL (10, 12) эквивалентно amount > 12
amount < ALL (10, 12) эквивалентно amount < 10
amount = ALL (10, 12) не вернет ни одной записи,
так как эквивалентно
(amount = 10) AND (amount = 12)
amount <> ALL (10, 12) вернет все записи кроме
90
тех, в которых amount равно 10 или 12
91. Вложенный запрос, операторы ANY и ALL
ПримерВывести информацию о тех книгах, количество которых
меньше самого маленького среднего количества книг
каждого автора.
SELECT title, author, amount, price
FROM book
WHERE amount < ALL ( SELECT AVG(amount)
FROM book
GROUP BY author
);
91
92. Вложенный запрос, операторы ANY и ALL
ПримерВывести информацию о тех книгах, количество которых
меньше самого большого среднего количества книг
каждого автора.
SELECT title, author, amount, price
FROM book
WHERE amount < ANY ( SELECT AVG(amount)
FROM book
GROUP BY author
);
92
93. Вложенный запрос после SELECT
Вложенный запрос может располагаться послеключевого слова SELECT.
В этом случае результат выполнения запроса
выводится в отдельном столбце результирующей
таблицы.
Результатом запроса может быть только одно
значение, оно будет повторяться во всех строках.
Также вложенный запрос может использоваться в
выражениях.
93
94. Вложенный запрос после SELECT
ПримерВывести информацию о книгах, количество экземпляров
которых отличается от среднего количества экземпляров
книг на складе более чем на 3, а также указать среднее
значение количества экземпляров книг.
SELECT title, author, amount,
(SELECT AVG(amount)
FROM book )
AS Среднее_количество
FROM book
WHERE abs(amount - (SELECT AVG(amount)
FROM book)) >3;
94
95. Вложенный запрос после SELECT
ПримерВывести информацию о книгах, количество экземпляров
которых отличается от среднего количества экземпляров
книг на складе более чем на 3, а также указать среднее
значение количества экземпляров книг.
? Что плохо?
? Какая функция позволяет округлить «вниз»?
95
96. Вложенный запрос после SELECT
SELECT title, author, amount,FLOOR((SELECT AVG(amount)
FROM book))
AS Среднее_количество
FROM book
WHERE abs(amount - (SELECT AVG(amount)
FROM book)) >3;
96
database