Слайд 1Структурированный язык запросов
SQL
Слайд 2Apex.oracle.com
Workspace = yppetelina
Username = Y.P.PETELINA@GMAIL.COM
Password = 112233
SQL Workshop -> Object
Browser
(для просмотра существующих объектов базы)
SQL Workshop -> SQL Commands
(командное окно)
Слайд 3SELECT список_столбцов
FROM список_таблиц
[WHERE условия_поиска]
[GROUP BY имя_столбца]
[HAVING условия_возврата_групп]
[ORDER
BY имя_столбца [ASC | DESC]]
Слайд 4SELECT – устанавливается, какие столбцы должны присутствовать в выходных данных;
FROM
– определяются имена используемых таблиц;
WHERE – выполняется фильтрация строк объекта
в соответствии с заданными условиями;
GROUP BY – образуются группы строк, имеющие одно и то же значение в указанном столбце;
HAVING – фильтруются группы строк объекта в соответствии с указанным условием;
ORDER BY – определяется упорядоченность результатов выполнения операторов.
Слайд 5 SELECT * FROM Владельцы;
- вернет все столбцы всех строк данной
таблицы
DISTINCT – отбрасываются дублирующие записи и выполняется сортировка;
SELECT DISTINCT(Имя)
FROM
Владельцы;
Слайд 6Существует пять основных типов условий поиска (или предикатов):
сравнение,
диапазон,
принадлежность множеству,
соответствие шаблону,
значение NULL.
WHERE
Слайд 7 cравнение - сравниваются результаты вычисления одного выражения с результатами
вычисления другого
WHERE
SELECT *
FROM Владельцы
WHERE Номер_дома>100;
Операторы сравнения:
= равенство;
< меньше;
> больше;
<= меньше или равно;
>= больше или равно;
<> не равно.
Слайд 8WHERE
SELECT *
FROM Владельцы
WHERE Номер_дома>100
AND
Номер_дома
помощью логических операторов AND, OR или NOT, а также скобок,
используемых для определения порядка вычисления выражения.
Слайд 9 диапазон - проверяется, попадает ли результат вычисления выражения в
заданный диапазон значений
WHERE
SELECT *
FROM Владельцы
WHERE Номер_дома
NOT BETWEEN
100 AND 110;
Оператор
BETWEEN используется для поиска значения внутри некоторого интервала
Слайд 10 принадлежность множеству - проверяется, принадлежит ли результат вычислений выражения
заданному множеству значений.
WHERE
SELECT *
FROM Владельцы
WHERE Фамилия IN
("Чернышов", "Медведев", "Гаспарян", "Слободской");
Оператор
IN используется для сравнения некоторого значения со списком заданных значений
Слайд 11 соответствие шаблону - проверяется, отвечает ли некоторое строковое значение
заданному шаблону.
WHERE
С помощью оператора LIKE можно выполнять сравнение выражения с
заданным шаблоном, в котором допускается использование символов-заменителей:
% (*) любое количество символов.
_ (?) один символ строки.
[] один из возможных символов, указанный в этих ограничителях.
[^] все символы, кроме указанных в ограничителях.
Слайд 12WHERE
SELECT *
FROM Владельцы
WHERE Телефон Like “[6,4]?????0”;
SELECT *
FROM Владельцы
WHERE Телефон Like
“6*”;
SELECT *
FROM Владельцы
WHERE Телефон Like “6?????0”;
Слайд 13 Значение NULL: проверяется, содержит ли данный столбец определитель NULL
(неизвестное значение).
WHERE
Оператор IS NULL используется для сравнения текущего значения со
значением NULL:
SELECT *
FROM Владельцы
WHERE Телефон IS NULL;
Слайд 14ORDER BY сортирует данные выходного набора в заданной последовательности. Сортировка
по возрастанию задается ключевым словом ASC. Сортировка в обратной последовательности
задается ключевым словом DESC.
ORDER BY
SELECT Код, Фамилия, Имя
FROM Владельцы
ORDER BY Фамилия DESC, Имя ASC;
Слайд 15Агрегирующие функции
Count (…) - определяет количество записей в выходном наборе
SQL-запроса;
Min/Max (…) - определяют наименьшее и наибольшее из множества значений
в некотором поле запроса;
Avg (…) - эта функция позволяет рассчитать среднее значение множества значений, хранящихся в определенном поле отобранных запросом записей. Оно является арифметическим средним значением, т.е. суммой значений, деленной на их количество.
Sum (…) - вычисляет арифметическую сумму множества значений, содержащихся в определенном поле отобранных запросом записей.
Слайд 16SELECT COUNT(*) AS Кол_во
FROM Владельцы;
SELECT MAX(Номер_дома) AS Максимальный_номер_дома
FROM Владельцы;
SELECT AVG(Номер_дома)
AS Среднее_значение_номера_дома
FROM Владельцы;
Слайд 17GROUP BY без агрегирующих функций:
GROUP BY
Аналогичен предложению DISTINCT
SELECT Код_улицы
FROM Владельцы
GROUP
BY Код_улицы;
Аналогичен
SELECT DISTINCT Код_улицы
FROM Владельцы;
Слайд 18GROUP BY с агрегирующими функциями:
GROUP BY
SELECT Код_улицы, AVG(Номер_дома) AS сред_знач
FROM
Владельцы
GROUP BY Код_улицы;
SELECT Фамилия, SUM(Цена)
FROM Владельцы
GROUP BY Фамилия;
Слайд 19GROUP BY с агрегирующими функциями:
GROUP BY
При использовании GROUP BY
Часто
возникают ошибки, например нельзя писать так:
SELECT Фамилия, Цена
FROM Владельцы
GROUP BY
Фамилия;
Слайд 20GROUP BY с предложением WHERE:
GROUP BY
SELECT Фамилия, AVG(Цена)
FROM Владельцы
WHERE Цена
BY Фамилия;
SELECT Код, Фамилия, SUM(Цена)
FROM Владельцы
WHERE Дробная_часть_номера IS NOT NULL
GROUP
BY Фамилия;
- ошибка
Слайд 21HAVING аналогичен WHERE, но:
HAVING
HAVING используется только при группировке (использовании
GROUP BY);
WHERE выполняется до группировки, HAVING – после;
в
HAVING можно использовать агрегирующие функции, в WHERE – нельзя;
элементы предложения HAVING должны включаться в список выбора, на WHERE
это правило не распространяется.
Слайд 22SELECT Фамилия, SUM(Цена)
FROM Владельцы
GROUP BY Фамилия
HAVING SUM(Цена)>100;
SELECT Фамилия, SUM(Цена)
FROM Владельцы
WHERE
Цена10;
HAVING
Слайд 23CREATE DATABASE имя_БД;
USE имя_БД;
или
DATABASE имя_БД;
или
CONNECT имя_БД;
Создание БД
Выбор БД
DROP DATABASE имя_БД;
Удаление
БД
Слайд 24DROP TABLE имя_таблицы;
INSERT – добавление новых строк,
UPDATE – изменение строк,
DELETE
– удаление строк.
Удаление таблицы
Обработка данных в таблице
Слайд 25INSERT INTO имя_таблицы
[(столбец1 [, столбец2][1,…,n])]
VALUES
(константа1 [, константа2][1,…,n]);
Указание столбцов необходимо для:
добавления данных в той последовательности, в какой перечислены столбцы;
добавления
строк с пустыми полями.
INSERT
Слайд 26INSERT INTO Справочник_улиц
VALUES (13, 'Вновьдобавленная улица');
INSERT INTO Справочник_улиц
( Наименование
)
VALUES (‘Университетская');
INSERT
Слайд 27INSERT INTO имя_таблицы
[(столбец1 [, столбец2][1,…,n])]
SELECT список_столбцов
FROM список_таблиц
WHERE условия
INSERT
Использование оператора SELECT
в команде INSERT
Слайд 28INSERT INTO Справочник_улиц
( Наименование )
SELECT Фамилия FROM Владельцы
WHERE Код_улицы
= 11;
INSERT
Использование оператора SELECT
в команде INSERT
Слайд 29UPDATE имя_таблицы
SET имя_столбца = выражение
[WHERE условие];
UPDATE Владельцы
SET Город =
'Томск';
UPDATE
UPDATE Владельцы
SET Город = 'Новосибирск'
WHERE Фамилия = "Гаспарян";
Слайд 30DELETE FROM имя_таблицы
WHERE условие;
DELETE FROM Справочник_улиц
WHERE Код = 17;
DELETE