SQL. Structured Query Language

Содержание

Слайд 2

Слайд 3

операторы манипуляции данными (Data Manipulation Language, DML): SELECT считывает данные, удовлетворяющие

операторы манипуляции данными (Data Manipulation Language, DML):
SELECT считывает данные, удовлетворяющие заданным

условиям,
INSERT добавляет новые данные,
UPDATE изменяет существующие данные,
DELETE удаляет данные;
операторы определения данных (Data Definition Language, DDL):
CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),
ALTER изменяет объект,
DROP удаляет объект;
операторы управления транзакциями (Transaction Control Language, TCL):
COMMIT применяет транзакцию,
ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,
SAVEPOINT делит транзакцию на более мелкие участки.
операторы определения доступа к данным (Data Control Language, DCL):
GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,
REVOKE отзывает ранее выданные разрешения,
DENY задает запрет, имеющий приоритет над разрешением;

Подмножества команд SQL

Слайд 4

SELECT

SELECT

Слайд 5

БД для примеров

БД для примеров

Слайд 6

SELECT SELECT * FROM foo; SELECT foo.bar FROM foo; SELECT foo.bar

SELECT

SELECT * FROM foo;
SELECT foo.bar FROM foo;
SELECT foo.bar FROM foo WHERE

foo.id = 1;
Слайд 7

Условия в SQL AND, OR, NOT >, =, =, !=, IS NULL, IS NOT NULL

Условия в SQL

AND, OR, NOT
>, <, <=, >=, =, !=, <>
IS

NULL, IS NOT NULL
Слайд 8

Сложные условия в SQL LIKE BETWEEN IN, NOT IN ANY, ALL

Сложные условия в SQL

LIKE
BETWEEN
IN, NOT IN
ANY, ALL
EXISTS
HAVING
CASE … WHEN … THEN

… ELSE … END
Слайд 9

Экзотические условия в SQL COALESCE NULLIF …

Экзотические условия в SQL

COALESCE
NULLIF

Слайд 10

Примеры с несколькими условиями SELECT foo.bar FROM foo WHERE foo.id =

Примеры с несколькими условиями

SELECT foo.bar
FROM foo
WHERE foo.id = 1

OR
(foo.name LIKE ‘%th%’ AND
foo.bar BETWEEN 10 AND 100);
SELECT foo.bar
FROM foo
WHERE foo.id = 1 AND
(foo.bar IS NOT NULL OR id IN (4, 8, 15, 16, 413));
Слайд 11

Фильтрация результатов и псевдонимы SELECT DISTINCT * FROM foo; SELECT DISTINCT

Фильтрация результатов и псевдонимы

SELECT DISTINCT * FROM foo;
SELECT DISTINCT f.bar FROM

foo f;
SELECT CASE
WHEN foo.id > 3 THEN ‘yep'
WHEN n <= 3 THEN ‘nope'
ELSE ‘WAT' END AS result
FROM foo
WHERE foo.id > 9 AND foo.id < 613;
Слайд 12

Троичная логика

Троичная логика

Слайд 13

Слайд 14

Схемы сложных условий

Схемы сложных условий

Слайд 15

Слайд 16

Сортировка выборки SELECT * FROM foo f WHERE f.id > 100

Сортировка выборки

SELECT *
FROM foo f
WHERE f.id > 100
ORDER

BY f.bar;
SELECT DISTINCT f.bar
FROM foo f
ORDER BY f.bar DESC;
Слайд 17

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

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

Слайд 18

Агрегатные функции SELECT count(*) FROM foo f WHERE f.id > 100;

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

SELECT count(*)
FROM foo f
WHERE f.id > 100;
SELECT MAX(f.id)


FROM foo f;
SELECT AVG(f.id)
FROM foo f
WHERE f.name LIKE ‘%bar’;
Слайд 19

Группировка SELECT f.bar “foo”, AVG(f.id) AS “average” FROM foo f WHERE

Группировка

SELECT f.bar “foo”, AVG(f.id) AS “average”
FROM foo f
WHERE f.name LIKE

‘%bar’
GROUP BY f.bar;
Слайд 20

Объединение результатов запроса

Объединение результатов запроса

Слайд 21

Примеры объединения таблиц SELECT * FROM foo f INNER JOIN items

Примеры объединения таблиц

SELECT *
FROM foo f
INNER JOIN items i


ON f.id = i.foo_id;
SELECT i.id, f.id, f.bar
FROM items i
LEFT OUTER JOIN foo f
ON f.id = i.foo_id;
WHERE i.id BETWEEN 100 AND 3011
AND f.name IS NOT NULL;
Слайд 22

Вложенные запросы

Вложенные запросы

Слайд 23

Примеры подзапросов SELECT * FROM items i WHERE i.foo_id IN (

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

SELECT *
FROM items i
WHERE i.foo_id IN (
SELECT f.id
FROM

foo f
WHERE f.bar = ‘foo’);
SELECT *
FROM foo f
WHERE f.id >
(SELECT MAX(i.price)
FROM item i
WHERE i.foo_id IS NOT NULL);
Слайд 24

Примеры подзапросов SELECT * FROM items i INNER JOIN (SELECT f.id,

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

SELECT *
FROM items i
INNER JOIN
(SELECT f.id, f.bar, f.name


FROM foo f
WHERE f.name = ‘foo’) g
ON g.id = i.foo_id;
Слайд 25

Предикаты ANY, ALL, EXISTS SELECT * FROM item i WHERE i.price

Предикаты ANY, ALL, EXISTS

SELECT *
FROM item i
WHERE i.price = ANY


(SELECT f.id
FROM foo f
WHERE f.bar > 100);
SELECT *
FROM item i
WHERE i.price > ALL
(SELECT f.id
FROM foo f
WHERE f.name IS NULL);
Слайд 26

Примеры HAVING SELECT SUM(i.price) FROM item I GROUP BY i.foo_id HAVING

Примеры HAVING

SELECT SUM(i.price) FROM item I
GROUP BY i.foo_id
HAVING SUM(i.price) > 100;
SELECT

SUM(i.price) FROM item I
GROUP BY i.foo_id
HAVING SUM(i.price) >
(SELECT MAX(f.bar)
FROM foo f
WHERE name NOT LIKE ‘no%pe’);
Слайд 27

Операторы UNION, INTERSECT, EXCEPT SELECT f.id FROM foo f WHERE f.name

Операторы UNION, INTERSECT, EXCEPT

SELECT f.id FROM foo f
WHERE f.name IS NOT

NULL
UNION
SELECT i.foo_id
FROM item i;
SELECT i.foo_id
FROM item i
UNION ALL
SELECT f.id FROM foo f
WHERE f.name IS NOT NULL;
Слайд 28

INSERT

INSERT

Слайд 29

Примеры INSERT INSERT INTO foo (id, name, bar) VALUES (42, ‘Nick

Примеры INSERT

INSERT INTO foo (id, name, bar) VALUES (42, ‘Nick Cage’,

100500);
INSERT INTO item (id, price) VALUES(12, -8);
INSERT INTO item VALUES (13, 42, 111);
Слайд 30

UPDATE UPDATE foo SET bar = NULL WHERE id = 42;

UPDATE

UPDATE foo SET bar = NULL WHERE id = 42;
UPDATE item

SET price = price * 2
WHERE foo_id IN (SELECT foo.id FROM foo);
Слайд 31

DELETE DELETE FROM foo WHERE foo.id DELETE FROM foo WHERE id

DELETE

DELETE FROM foo WHERE foo.id < 100;
DELETE FROM foo
WHERE id

IN
(SELECT i.foo_id FROM item i WHERE i.id > 0);
DELETE FROM item;
Слайд 32

Транзакции BEGIN TRANSACTION; / BEGIN; SAVE TRANSACTION; COMMIT TRANSACTION; / COMMIT; ROLLBACK TO; ROLLBACK;

Транзакции

BEGIN TRANSACTION; / BEGIN;
SAVE TRANSACTION;
COMMIT TRANSACTION; / COMMIT;
ROLLBACK TO;
ROLLBACK;