Реляционная модель данных и основы языка SQL. Семинар 1

Содержание

Слайд 3

Декартово произведение

 

 

Декартово произведение

Слайд 4

Предикат

 

 

Предикат

Слайд 5

Домен

Домен имеет уникальное имя (в пределах базы данных).
Домен определен на некотором простом

Домен Домен имеет уникальное имя (в пределах базы данных). Домен определен на
типе данных или на другом домене.
Домен может иметь некоторое логическое условие, позволяющее описать подмножество данных, допустимых для данного домена.
Домен несет определенную смысловую нагрузку.

 

Слайд 6

Отношения, атрибуты, кортежи

 

Отношения, атрибуты, кортежи

Слайд 7

Основные компоненты реляционного отношения

Основные компоненты реляционного отношения

Слайд 8

Основные компоненты реляционного отношения

Основные компоненты реляционного отношения

Слайд 9

Свойства отношений

Отсутствие кортежей-дубликатов
Отсутствие упорядоченности кортежей
Отсутствие упорядоченности атрибутов
Атомарность значений атрибутов

Свойства отношений Отсутствие кортежей-дубликатов Отсутствие упорядоченности кортежей Отсутствие упорядоченности атрибутов Атомарность значений атрибутов

Слайд 10

Structured Query Language

Data Definition Language (DDL) – язык определения данных
Data Manipulition Language

Structured Query Language Data Definition Language (DDL) – язык определения данных Data
(DML) – язык манипулирования данными
DCL - Data Control Language (DCL) –язык определения доступа к данным
TCL - Transaction Control Language (TCL) – язык управления транзакциями

Слайд 11

Select

SELECT [ALL | DISTINCT] <имя_столбца| перечень_столбцов>
FROM <имя_таблицы>, ...
[ WHERE <условие> ]
[ GROUP

Select SELECT [ALL | DISTINCT] FROM , ... [ WHERE ] [
BY <имя_столбца>,... ]
[ HAVING <условие> ]
[ORDER BY <имя_столбца>,… [ASC | DESC],... ]

Слайд 12

Select

SELECT [ALL | DISTINCT] <имя_столбца| перечень_столбцов>
FROM <имя_таблицы>, ...
[ WHERE <условие> ]
[ GROUP

Select SELECT [ALL | DISTINCT] FROM , ... [ WHERE ] [
BY <имя_столбца>,... ]
[ HAVING <условие> ]
[ORDER BY <имя_столбца>,… [ASC | DESC],... ]

Слайд 13

SELECT * FROM Employees

SELECT * FROM Employees

Слайд 14

SELECT POST
FROM Employees

SELECT DISTINCT POST
FROM Employees

SELECT POST FROM Employees SELECT DISTINCT POST FROM Employees

Слайд 15

Select

SELECT [ALL | DISTINCT] <имя_столбца| перечень_столбцов>
FROM <имя_таблицы>, ...
[ WHERE <условие> ]
[ GROUP

Select SELECT [ALL | DISTINCT] FROM , ... [ WHERE ] [
BY <имя_столбца>,... ]
[ HAVING <условие> ]
[ORDER BY <имя_столбца>,… [ASC | DESC],... ]

Слайд 16

Логические операции и Операторы сравнения

= Равно
> Больше чем
< Меньше чем
>=

Логические операции и Операторы сравнения = Равно > Больше чем >= Больше
Больше или равно
<= Меньше или равно
<> Не равно

AND – операция И
OR – операция ИЛИ
NOT – операция НЕ

LIKE – Поиск по заданному шаблону
BETWEEN – Принадлежность диапазону
IN – Принадлежность списку

Слайд 17

SELECT EMP_ID, MANAGER_ID, LAST_NAME, FIRST_NAME
FROM Employees
WHERE MANAGER_ID = 10;

SELECT EMP_ID, MANAGER_ID, LAST_NAME, FIRST_NAME FROM Employees WHERE MANAGER_ID = 10;

Слайд 18

SELECT EMP_ID, MANAGER_ID, LAST_NAME, FIRST_NAME
FROM Employees
WHERE MANAGER_ID = 10 OR

SELECT EMP_ID, MANAGER_ID, LAST_NAME, FIRST_NAME FROM Employees WHERE MANAGER_ID = 10 OR EMP_ID = 10;
EMP_ID = 10;

Слайд 19

SELECT EMP_ID, MANAGER_ID, LAST_NAME, FIRST_NAME
FROM Employees
WHERE MANAGER_ID = 10 OR

SELECT EMP_ID, MANAGER_ID, LAST_NAME, FIRST_NAME FROM Employees WHERE MANAGER_ID = 10 OR EMP_ID = 10;
EMP_ID = 10;

Слайд 20

SELECT PRODUCT_ID, PRODUCT_NAME, PRICE FROM PRODUCTS
WHERE PRODUCT_ID IN (1,10,11,8);

SELECT PRODUCT_ID, PRODUCT_NAME, PRICE

SELECT PRODUCT_ID, PRODUCT_NAME, PRICE FROM PRODUCTS WHERE PRODUCT_ID IN (1,10,11,8); SELECT PRODUCT_ID,
FROM PRODUCTS
WHERE PRICE BETWEEN 480 AND 500;

SELECT PRODUCT_ID, PRODUCT_NAME, PRICE FROM PRODUCTS
WHERE PRICE BETWEEN 480 AND 500 AND PRODUCT_ID IN (1,10,11,8);

Слайд 21

Поиск по шаблону (LIKE)

% - любое количество символов (в том числе и

Поиск по шаблону (LIKE) % - любое количество символов (в том числе
0) подряд
_ - любой одиночный символ
ESCAPE - поиск специальных символов (% и _). ESCAPE определяюет символ после которого любой следующий за ним символ интерпретируется как обычный.
Пример: ‘%^%%’ ESCAPE ‘^’ – поиск строки в которой присутствует символ %

Слайд 22

SELECT EMPLOYEE_ID, LAST_NAME
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%бе%‘;

SELECT EMPLOYEE_ID, LAST_NAME
FROM EMPLOYEES
WHERE LAST_NAME LIKE

SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES WHERE LAST_NAME LIKE '%бе%‘; SELECT EMPLOYEE_ID, LAST_NAME
‘__бе%‘;

SELECT EMPLOYEE_ID, LAST_NAME
FROM EMPLOYEES
WHERE LAST_NAME LIKE ‘__%бе%‘;

SELECT EMPLOYEE_ID, LAST_NAME
FROM EMPLOYEES
WHERE LAST_NAME LIKE ‘бе%‘;

Слайд 23

NULL

SELECT EMPLOYEE_ID, LAST_NAME, POST
FROM EMPLOYEES
WHERE MANAGER_ID IS NULL;

Сравнение: IS [NOT] NULL

NULL SELECT EMPLOYEE_ID, LAST_NAME, POST FROM EMPLOYEES WHERE MANAGER_ID IS NULL; Сравнение: IS [NOT] NULL

Слайд 24

NULL

SELECT EMPLOYEE_ID, LAST_NAME, POST
FROM EMPLOYEES
WHERE MANAGER_ID IS NULL;

Сравнение: IS [NOT] NULL

В

NULL SELECT EMPLOYEE_ID, LAST_NAME, POST FROM EMPLOYEES WHERE MANAGER_ID IS NULL; Сравнение:
PL/SQL NULL и пустая строка эквивалентны

Слайд 25

NULL

SELECT EMPLOYEE_ID, LAST_NAME, POST
FROM EMPLOYEES
WHERE MANAGER_ID IS NULL;

Сравнение: IS [NOT] NULL

В

NULL SELECT EMPLOYEE_ID, LAST_NAME, POST FROM EMPLOYEES WHERE MANAGER_ID IS NULL; Сравнение:
PL/SQL NULL и пустая строка эквивалентны

В PL/SQL результат сравнения с NULL через другие операции:
UNKNOWN

Слайд 26

Связи

N

Связи N

Слайд 27

JOIN

CROSS
JOIN

B

A

C

B

A

C

B

A

C

3

3

3

1

1

1

2

2

2

=

JOIN CROSS JOIN B A C B A C B A C

Слайд 28

JOIN

B

A

C

CROSS
JOIN

2

3

1

=

JOIN B A C CROSS JOIN 2 3 1 =

Слайд 30

INNER JOIN

 

 

INNER JOIN

Слайд 31

A

2

B

3

C

2

INNER JOIN

B

A

C

B

A

C

3

3

1

1

1

2

 

 

A 2 B 3 C 2 INNER JOIN B A C B

Слайд 32

C

2

INNER JOIN

B

A

C

B

A

C

3

3

1

1

1

2

 

 

A

2

B

3

C 2 INNER JOIN B A C B A C 3 3

Слайд 33

LEFT JOIN

 

 

LEFT JOIN

Слайд 34

LEFT JOIN

 

 

LEFT JOIN

Слайд 35

2

LEFT JOIN

 

 

3

1

2 LEFT JOIN 3 1

Слайд 36

C

B

A

C

B

A

C

2

LEFT JOIN

 

 

A

B

3

1

C B A C B A C 2 LEFT JOIN A B 3 1

Слайд 37

C

B

A

C

B

A

C

2

LEFT JOIN

 

 

A

B

3

1

C B A C B A C 2 LEFT JOIN A B 3 1

Слайд 38

C

B

A

C

B

A

C

2

LEFT JOIN

 

 

A

B

3

1

C B A C B A C 2 LEFT JOIN A B 3 1

Слайд 39

RIGHT JOIN

 

 

RIGHT JOIN

Слайд 40

3

RIGHT JOIN

B

A

C

A

B

3

1

2

3

1

2

2

3

1

 

 

1

2

C

3 RIGHT JOIN B A C A B 3 1 2 3

Слайд 41

3

RIGHT JOIN

B

A

C

A

B

3

1

2

3

1

2

2

3

1

 

 

1

2

C

3 RIGHT JOIN B A C A B 3 1 2 3

Слайд 42

3

1

3

1

2

1

2

3

RIGHT JOIN

B

A

C

A

B

2

2

3

1

 

 

C

3 1 3 1 2 1 2 3 RIGHT JOIN B A

Слайд 43

JOIN

INNER
JOIN

=

A

B

C

1

2

3

2

3

A

B

RIGHT
JOIN

=

A

B

C

1

2

3

2

3

A

B

C

LEFT
JOIN

=

A

B

C

1

2

3

1

2

3

A

B

JOIN INNER JOIN = A B C 1 2 3 2 3

Слайд 44

JOIN

INNER
JOIN

=

A

B

C

1

2

3

2

3

A

B

RIGHT
JOIN

=

A

B

C

1

2

3

2

3

A

B

C

LEFT
JOIN

=

A

B

C

1

2

3

1

2

3

A

B

«FULL»
JOIN

=

A

B

C

1

2

3

1

2

3

A

B

C

JOIN INNER JOIN = A B C 1 2 3 2 3

Слайд 45

INNER JOIN

B

A

C

 

 

INNER JOIN B A C

Слайд 46

INNER JOIN

B

A

C

 

 

2

3

3

1

1

2

C

B

A

C

B

A

C

A

2

B

3

1

INNER JOIN B A C 2 3 3 1 1 2 C

Слайд 47

INNER JOIN

B

A

C

 

 

3

3

1

1

2

B

A

C

B

A

C

1

2

C

A

2

B

3

INNER JOIN B A C 3 3 1 1 2 B A

Слайд 48

INNER
JOIN

A

B

C

1

2

3

D

INNER JOIN A B C 1 2 3 D

Слайд 49

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

3

B

D

INNER JOIN = A B C 1 2 3 2 2 A C 3 B D

Слайд 50

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

LEFT
JOIN

A

B

C

1

2

3

3

B

D

D

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 51

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

LEFT JOIN

3

B

D

1

2

3

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 52

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

LEFT JOIN

3

B

D

1

2

3

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 53

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

LEFT JOIN

3

B

D

1

2

3

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 54

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

LEFT JOIN

3

B

D

1

2

3

1

2

3

A

B

2

C

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 55

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

LEFT
JOIN

=

A

B

C

1

2

3

1

2

3

A

B

3

B

2

C

D

D

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 56

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

RIGHT
JOIN

A

B

C

1

2

3

LEFT
JOIN

=

A

B

C

1

2

3

1

2

3

A

B

3

B

2

C

D

D

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 57

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

RIGHT
JOIN

=

A

B

C

1

2

3

2

3

A

B

C

LEFT
JOIN

=

A

B

C

1

2

3

1

2

3

A

B

3

B

2

C

2

D

D

D

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 58

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

RIGHT
JOIN

=

A

B

C

1

2

3

2

3

A

B

C

LEFT
JOIN

=

A

B

C

1

2

3

1

2

3

A

B

«FULL»
JOIN

=

A

B

C

1

2

3

1

2

3

A

B

3

B

2

C

2

D

D

D

C

2

D

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 59

INNER
JOIN

=

A

B

C

1

2

3

2

2

A

C

RIGHT
JOIN

=

A

B

C

1

2

3

2

3

A

B

C

LEFT
JOIN

=

A

B

C

1

2

3

1

2

3

A

B

«FULL»
JOIN

=

A

B

1

2

3

1

2

3

A

B

3

B

2

C

2

D

D

D

C

2

D

D

D

C

INNER JOIN = A B C 1 2 3 2 2 A

Слайд 60

Синтаксис JOIN

SELECT [ALL | DISTINCT] <имя_столбца| перечень_столбцов>
FROM <имя_таблицы>, ...
[ WHERE <условие> ]
[

Синтаксис JOIN SELECT [ALL | DISTINCT] FROM , ... [ WHERE ]
GROUP BY <имя_столбца>,... ]
[ HAVING <условие> ]
[ORDER BY <имя_столбца>,… [ASC | DESC],... ]

Слайд 61

Синтаксис JOIN

SELECT [ALL | DISTINCT] <имя_столбца| перечень_столбцов>
FROM <имя_таблицы>, ...
JOIN <имя_таблицы_2> ON <условие>
[

Синтаксис JOIN SELECT [ALL | DISTINCT] FROM , ... JOIN ON [
WHERE <условие> ]
[ GROUP BY <имя_столбца>,... ]
[ HAVING <условие> ]
[ORDER BY <имя_столбца>,… [ASC | DESC],... ]

Слайд 62

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE
FROM PRODUCTS
INNER JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE FROM PRODUCTS INNER JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID = PRODUCTS. CATEGORY_ID;
= PRODUCTS. CATEGORY_ID;

Слайд 63

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE
FROM PRODUCTS
INNER JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE FROM PRODUCTS INNER JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID = PRODUCTS. CATEGORY_ID;
= PRODUCTS. CATEGORY_ID;

Слайд 64

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE
FROM PRODUCTS
LEFT JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE FROM PRODUCTS LEFT JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID = PRODUCTS. CATEGORY_ID;
= PRODUCTS. CATEGORY_ID;

Слайд 65

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE
FROM PRODUCTS
RIGHT JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE FROM PRODUCTS RIGHT JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID = PRODUCTS. CATEGORY_ID;
= PRODUCTS. CATEGORY_ID;

Слайд 66

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE
FROM PRODUCTS
FULL JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE FROM PRODUCTS FULL JOIN CATEGORIES ON CATEGORIES. CATEGORY_ID = PRODUCTS. CATEGORY_ID;
= PRODUCTS. CATEGORY_ID;

Слайд 67

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE
FROM PRODUCTS
CROSS JOIN CATEGORIES;

SELECT CATEGORY_NAME, PRODUCT_NAME, PRICE FROM PRODUCTS CROSS JOIN CATEGORIES;
Имя файла: Реляционная-модель-данных-и-основы-языка-SQL.-Семинар-1.pptx
Количество просмотров: 48
Количество скачиваний: 0