63.72K
Category: databasedatabase

db-lect

1.

Базы данных

2.

Виды баз данных
Реляционные
Microsoft SQL, MySQL (таблицы)
PostgreSQL
Не-SQL (NoSQL)
MongoDB (документы)
Redis (ключ-значение)
InfluxDB (временные ряды)
Иерархические
Neo4j (графы)
10/17/2024
2

3.

Язык SQL

4.

Язык SQL
SQL (Structed Query Language) - декларативный язык
программирования, применяемый для создания, модификации и
управления данными в реляционной базе данных.
Язык SQL представляет собой совокупность операторов, инструкций,
вычисляемых функций.
10/17/2024
4

5.

Язык SQL
Основной способ работы с базой данных, который реализует
следующий набор операций:
создание в базе данных новой таблицы
добавление в таблицу новых записей
изменение записей
удаление записей
выборка записей из одной или нескольких таблиц (в соответствии с
заданным условием)
изменение структур таблиц
10/17/2024
5

6.

Операторы языка SQL
Операторы SQL делятся на:
операторы определения данных (Data Definition Language, DDL)
операторы манипуляции данными (Data Manipulation Language, DML)
операторы определения доступа к данным (Data Control Language,
DCL)
операторы управления транзакциями (Transaction Control Language,
TCL)
10/17/2024
6

7.

Операторы языка SQL
10/17/2024
7

8.

Операторы DDL
CREATE создаёт объект базы данных (саму базу, таблицу,
представление, пользователя и так далее)
ALTER изменяет объект
DROP удаляет объект
10/17/2024
8

9.

Операторы DML
SELECT выбирает данные, удовлетворяющие заданным условиям
INSERT добавляет новые данные
UPDATE изменяет существующие данные
DELETE удаляет данные
10/17/2024
9

10.

Операторы DCL
GRANT предоставляет пользователю (группе) разрешения на
определённые операции с объектом
REVOKE отзывает ранее выданные разрешения
DENY задаёт запрет, имеющий приоритет над разрешением
10/17/2024
10

11.

Операторы TCL
COMMIT применяет транзакцию
ROLLBACK откатывает все изменения, сделанные в контексте
текущей транзакции
SAVEPOINT делит транзакцию на более мелкие участки
10/17/2024
11

12.

Типы данных

13.

Типы данных
При определении таблицы для всех ее столбцов необходимо указать
тип данных. Тип данных определяет диапазон значений, которые могут
храниться в столбце, сколько они будут занимать места в памяти.
числовые
символьные
бинарные
логические
дата и время
10/17/2024
13

14.

Числовые типы данных
Целочисленные
smallint: хранит числа от -32768 до +32767. Занимает 2 байта. Имеет
псевдоним int2
integer: хранит числа от -2147483648 до +2147483647. Занимает 4
байта. Имеет псевдонимы int и int4
bigint: хранит числа от -9223372036854775808 до
+9223372036854775807. Занимает 8 байт. Имеет псевдоним int8
10/17/2024
14

15.

Числовые типы данных
Вещественные
real: хранит числа с плавающей точкой из диапазона от 1E-37 до
1E+37. Занимает 4 байта. Имеет псевдоним float4
double precision: хранит числа с плавающей точкой из диапазона от 1E307 до 1E+308. Занимает 8 байт. Имеет псевдоним float8
10/17/2024
15

16.

Символьные типы
character(n): представляет строку из фиксированного количества
символов. С помощью параметра задается задается количество
символов в строке. Имеет псевдоним char(n)
character varying(n): представляет строку из переменной длины. С
помощью параметра задается задается максимальное количество
символов в строке. Имеет псевдоним varchar(n)
10/17/2024
16

17.

Бинарные данные
для хранения бинарных данных определен тип bytea. Он хранит
данные в виде бинарных строк, которые представляют
последовательность октетов или байт
10/17/2024
17

18.

Логический тип
тип boolean может хранить одно из двух значений: true или false
10/17/2024
18

19.

Типы для работы с датами и временем
timestamp: хранит дату и время. Занимает 8 байт
date: представляет дату. Занимает 4 байта
time: хранит время с точностью до 1 микросекунды без указания
часового пояса. Занимает 8 байт
interval: представляет временной интервал. Занимает 16 байт
10/17/2024
19

20.

Нормализация отношений

21.

Нормализация отношений
Нормализация — это процесс организации данных в базе данных,
включает в себя создание таблиц и установление связей между ними в
соответствии с правилами, разработанными как для защиты данных,
так и для повышения гибкости базы данных, устраняя избыточность и
несогласованную зависимость
10/17/2024
21

22.

Первая нормальная форма
Фирма
Модели
Фирма
Модель
BMW
M5, M1
BMW
M5
Nissan
GT-R
BMW
M1
Nissan
GT-R
Отношение находится в 1НФ, если все его атрибуты являются
простыми. Не должно быть повторений строк в таблице
10/17/2024
22

23.

Вторая нормальная форма
Модель
Фирма
Цена
Скидка
M5
BMW
5500000
5%
M1
BMW
2500000
5%
GT-R
Nissan
5000000
10%
Записи не должны зависеть от чего-либо, кроме первичного ключа
таблицы. Первичный ключ - это поле или набор полей со значениями,
которые являются уникальными для всей таблицы.
10/17/2024
23

24.

Вторая нормальная форма
Модель
Фирма
Цена
Фирма
Скидка
M5
BMW
5500000
BMW
5%
M1
BMW
2500000
Nissan
10%
GT-R
Nissan
5000000
Цена машины зависит от модели и фирмы. Скидка зависят от фирмы,
то есть зависимость от первичного ключа неполная. Исправляется это
путем декомпозиции на два отношения, в которых не ключевые
атрибуты зависят от ПК
10/17/2024
24

25.

Третья нормальная форма
Модель
Магазин
Телефон
BMW
Риал-авто
87-33-98
Audi
Риал-авто
87-33-98
Nissan
Некст-Авто
94-54-12
Требуется выносить все не ключевые поля, содержимое которых может
относиться к нескольким записям таблицы в отдельные таблицы
10/17/2024
25

26.

Третья нормальная форма
Магазин
Телефон
Модель
Магазин
Риал-авто
87-33-98
BMW
Риал-авто
Некст-Авто
94-54-12
Audi
Риал-авто
Nissan
Некст-Авто
В отношении существуют следующие функциональные зависимости:
Модель → Магазин, Магазин → Телефон, Модель → Телефон
10/17/2024
26

27.

Синтаксис основных запросов

28.

Управление базами данных
CREATE DATABASE имя_базы;
Создание новой базы данных
DROP DATABASE имя_базы;
Удаление существующей базы данных
ALTER DATABASE имя_базы RENAME TO новое_имя_базы;
Переименование существующей базы данных
10/17/2024
28

29.

Управление пользователями
CREATE ROLE имя_пользователя;
Создание нового пользователя
DROP ROLE имя_пользователя;
Удаление существующего пользователя
ALTER ROLE имя_пользователя WITH LOGIN;
Разрешает пользователю вход на сервер
ALTER ROLE имя_пользователя WITH PASSWORD ‘пароль’;
Задает пользователю пароль
10/17/2024
29

30.

Управление схемами
CREATE SCHEMA имя_схемы;
Создание новой схемы
DROP SCHEMA имя_cхемы;
Удаление существующей схемы
ALTER SCHEMA имя_схемы RENAME TO новое_имя_схемы;
Переименование существующей схемы
10/17/2024
30

31.

Управление таблицами
CREATE TABLE имя_таблицы (имя_столбца тип_данных, …);
Создание таблицы с заданными столбцами
DROP TABLE имя_таблицы;
Удаление существующей таблицы
ALTER TABLE имя_таблицы RENAME TO новое_имя_таблицы;
Переименование таблицы
ALTER TABLE имя_таблицы SET SCHEMA имя_схемы;
Перемещение таблицы в указанную схему
10/17/2024
31

32.

Управление столбцами
ALTER TABLE имя_таблицы ADD COLUMN имя_столбца
тип_данных;
Добавление нового столбца в таблицу
ALTER TABLE имя_таблицы DROP COLUMN имя_столбца;
Удаление стоблца из таблицы
ALTER TABLE имя_таблицы ALTER COLUMN имя_столбца SET
DEFAULT значение_по_умолчанию;
Задание значения по умолчанию для столбца
10/17/2024
32

33.

Управление столбцами
ALTER TABLE имя_таблицы ALTER COLUMN имя_столбца TYPE
новый_тип_данных;
Изменение типа данных столбца
10/17/2024
33

34.

Управление ключами
ALTER TABLE имя_таблицы ADD CONSTRAINT имя_ограничения
PRIMARY KEY (имя_столбца, …);
Создание первичного ключа
ALTER TABLE имя_таблицы ADD CONSTRAINT имя_ограничения
FOREIGN KEY (имя_стоблца) REFERENCES имя_внешней_таблицы
(имя_столбца);
Создание внешнего ключа
ALTER TABLE имя_таблицы DROP CONSTRAINT имя_ограничения;
Удаление существующего ограничения
10/17/2024
34

35.

Управление ограничениями
ALTER TABLE имя_таблицы ADD CONSTRAINT имя_ограничения
CHECK (условие);
Добавление проверки на значения в столбце
ALTER TABLE имя_таблицы ALTER COLUMN имя_столбца SET NOT
NULL;
Запрещение пустых значений в столбце
10/17/2024
35

36.

Управление последовательностями
CREATE SEQUCNCE имя_последовательности;
Создание новой последовательности
DROP SEQUENCE имя_последовательности;
Удаление последовательности
nextval(‘имя_последовательности’)
Увеличение номера в последовательности и получение значения
10/17/2024
36

37.

Управление данными
INSERT INTO имя_таблицы (имя_столбца, …) VALUES (значение,
…);
Добавляет новые строки в таблицу
UPDATE имя_таблицы SET имя_столбца = новое_значение, …
WHERE условие_отбора;
Изменяет значения столбцов существующих строк
DELETE FROM имя_таблицы WHERE условие_отбора;
Удаляет строки из таблицы
10/17/2024
37

38.

Выборка данных
SELECT имя_стоблца, … FROM имя_таблицы WHERE
условие_отбора GROUP BY имя_столбца_группировки HAVING
условие_группировки ORDER BY имя_стоблца сортировки, … LIMIT
макс_кол-во;
Выбирает данные из таблиц, согласно указанным критериям
10/17/2024
38
English     Русский Rules