SQL basics. Урок 1

Содержание

Слайд 2

Что изучим на курсе? Введение в SQL: концепции, реляционная модель, инсталляция

Что изучим на курсе?

Введение в SQL: концепции, реляционная модель, инсталляция SQL

Server, создание БД, таблиц,
виды отношений, типы данных
Простые выборки: SELECT, DISTINCT, COUNT, WHERE, AND / OR, BETWEEN, IN, ORDER BY, MIN/MAX/AVG, LIKE, TOP, GROUP BY, HAVING, UNION/INTERSECT/EXCEPT, проверки на NULL
Соединения: INNER, LEFT, RIGHT, SELF
Подзапросы: WHERE EXISTS, ANY, ALL
DDL: создание базы данных, таблиц, управление ключами (PK, FK), ограничения, INSERT, UPDATE/DELETE
Проектирование БД: основы, рекомендации, нормальные формы (НФ)
Представления (Views): основы, создание, обновления через views, опция check
Логика с CASE WHEN, COALESCE и NULLIF
Познакомимся с индексами, операциями DCL и TCL
Слайд 3

Что такое база данных? База данных – организованная структура для хранения

Что такое база данных?

База данных – организованная структура для хранения и

обработки данных. Характеристики:
Созданы для хранения миллионов строк (в отличии от spreadsheets)
Лимитированы (ограничены) объемом памяти на жестком диске компьютера
Оптимизированы таким образом, чтобы использовать всю память компьютера для улучшения
performance
Виды БД:
-реляционные (SQL) – логическая модель данных, описывающая структуры данных в виде таблиц.
-не реляционные (NoSQL) - не используется табличная схема строк и столбцов (JSON).
Слайд 4

Реляционная модель Не реляционная модель

Реляционная модель

Не реляционная модель

Слайд 5

Что такое СУБД? СУБД – система управления базами данных. Это комплекс

Что такое СУБД?

СУБД – система управления базами данных. Это комплекс программ,

позволяющих
создать базу данных (БД) и манипулировать данными (вставлять, обновлять, удалять и
выбирать).
Виды:
-файл-серверные (Microsoft access) файлы данных располагаются централизовано на файл-
сервере, а СУБД на каждом клиентском компьютере.
-клиент-серверные (MySQL, PostgreSQL, Oracle, MS SQL) и СУБД и файлы данных располагаются на сервере
-встраиваемые: SQLite
-реляционные (MS SQL, PostgreSQL, Oracle и др.) / не реляционные (MongoDB и др.)
Для взаимодействия с СУБД используется программа/GUI (graphical user interface), как например SQL Server Management Studio, Workbench
Слайд 6

На этом курсе мы будем изучать: Реляционную базу данных СУБД: MS

На этом курсе мы будем изучать:

Реляционную базу данных
СУБД: MS SQL SERVER
GUI

SQL server management studio
Transact-SQL
Слайд 7

Реляционная модель Сущность – клиенты, заказы, сотрудники, поставщики Таблица – отношение

Реляционная модель

Сущность – клиенты, заказы, сотрудники, поставщики
Таблица – отношение
Столбец –атрибуты
Строка/запись –

кортеж
Результоующий набор (result set)
Результат запроса SQL:
SELECT TOP(13) contact_name, address, city
FROM customers
Слайд 8

Реляционная модель: Данные хранятся в таблицах Таблицы состоят из атрибутов (столбцов)

Реляционная модель:

Данные хранятся в таблицах
Таблицы состоят из атрибутов (столбцов)
Данные имеют форму

строки
Порядок строк не важен
Не должно быть повторяющихся строк
У каждой таблицы есть схема (иногда заголовком)
Схема определяет атрибуты таблицы (столбцы).

Таблица

Схема

Строки

Атрибуты

Слайд 9

Пример таблицы: Атрибуты: ID, Name, Salary and Department Степень(degree) таблицы: 4

Пример таблицы:

Атрибуты: ID, Name, Salary and Department

Степень(degree) таблицы: 4

Схема:{ ID, Name,

Salary, Department }
Строки:
{ (ID, A368),
(Name, Jane Brown), (Salary, 22,000), (Department, Accounts)}
Уникальность данных
(cardinality) таблицы: 5
Слайд 10

Атрибуты и домены Домен дается для каждого атрибута В домене перечислены

Атрибуты и домены

Домен дается для каждого атрибута
В домене перечислены возможные значения

атрибута
Примеры:
"Возраст" может быть получен из набора целых чисел от 0 до 150.
«Отдел» должен храниться в виде varchar, не более 250 символов.
Атрибут «Комментарии» ограничений не имеет
Слайд 11

Потенциальные ключи Набор атрибутов в таблице либо атрибут является потенциальным ключом

Потенциальные ключи

Набор атрибутов в таблице либо атрибут является потенциальным ключом тогда и

только
тогда, когда:
Каждая строка имеет уникальное значение для этого набора атрибутов: уникальность
Минимализм
Среди них выбирается первичный ключ
Каковы возможные ключи следующего отношения?
Слайд 12

Определить потенциальные ключи Потенциальные ключи: {OfficeID}, {Phone} and {Name, Postcode/Zip} Следующий

Определить потенциальные ключи

Потенциальные ключи: {OfficeID}, {Phone} and {Name, Postcode/Zip}

Следующий ключ тоже

уникален {Name, Country, Phone} , но не подходит по критерию МИНИМАЛИЗМ
Слайд 13

Первичный ключ (Primary key) Обычно выбирается один потенциальный ключ для идентификации

Первичный ключ (Primary key)

Обычно выбирается один потенциальный ключ для идентификации строк

в таблицу.
Это называется первичным ключом.
Часто в качестве первичного ключа используется специальный идентификатор.

Первичный ключ: {ID}

Слайд 14

Отсутствующая информация может быть представлена с помощью NULL. NULL указывает на

Отсутствующая информация может быть представлена с помощью NULL.
NULL указывает на
отсутствующее или

неизвестное значение.

Целостность данных
Первичные ключи не могут содержать
значения NULL

NULLs и первичные ключи

Слайд 15

Внешние ключи используются для связывания данных в таблицах. Атрибут в ссылающейся

Внешние ключи используются для связывания данных в таблицах.
Атрибут в ссылающейся таблице

является внешним ключом, если его значение:
Соответствует значению Первичного ключа во второй таблице
Это называется ссылочной целостностью данных
Может быть неуникальным и иметь NULL значения

Внешние ключи

Слайд 16

Сотрудник {DID} - это внешний ключ в таблице Сотрудники - значение

Сотрудник

{DID} - это внешний ключ в таблице Сотрудники
- значение DID каждого

сотрудника либо NULL, либо соответствует значению атрибута DID в таблице Департамент. Это связывает каждого сотрудника не более чем с одним
департаментом

Департамент

{DID} это первичный ключ
таблицы Департамент
– Каждая строка имеет уникальное значение {DID}

Пример внешнего ключа

Слайд 17

Типы связей между таблицами Связи делятся на: Многие ко многим -

Типы связей между таблицами

Связи делятся на:
Многие ко многим - реализуется в

том случае, когда нескольким объектам из таблицы А может соответствовать несколько объектов из таблицы Б, и в тоже время нескольким объектам из таблицы Б
соответствует несколько объектов из таблицы А.
Один ко многим -реализуется тогда, когда объекту А может
принадлежать или же соответствовать несколько объектов Б, но объекту Б может соответствовать только один объект А
Один к одному – самая редко встречаемая связь между таблицами. Если вы видите такую связь, то можно объединить две таблицы в одну.
Слайд 18

SQL –structured query language

SQL –structured query language

Слайд 19

SQL Structured query language – структурированных язык запросов Непроцедурный язык и

SQL

Structured query language – структурированных язык запросов
Непроцедурный язык и не язык

общего назначения
Если необходимо реализовать процедурную логику – нужен другой язык (Python, java, c++…)
ANSI SLQ-92
У каждого СУБД свой диалект (T-SQL в SQL server, PL в Oracle)
Результатом SQL запроса является результирующий набор (как правило – таблица)
Слайд 20

Подмножества SQL Запрос типа «выбор»: DML ( Data Manipulation Language) –

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

Запрос типа «выбор»:
DML ( Data Manipulation Language) – позволяет запрашивать

и манипулировать данными
(SELECT, INSERT, UPDATE, DELETE*, MERGE)
Запрос типа «действие»:
DDL (Data Definition Language) – позволяет создавать и изменять объекты в базе (CREATE, ALTER,
DROP, а также TRUNCATE, USE)
DCL ( Data Control Language) – позволяет контролировать доступ к базе данных (Grant, Revoke).
TCL (Transaction Control Language) – обозначает начало и конец транзакции (BEGIN
TRANSACTION, COMMIT, ROLLBACK)
Слайд 21

Операторы DDL DDL –язык описания данных. Предназначен для работы с объектами

Операторы DDL

DDL –язык описания данных. Предназначен для работы с объектами базы

данных, для изменения структуры БД.
Слайд 22

DDL CREATE DATABASE test; - создание новой базы test USE test

DDL

CREATE DATABASE test; - создание новой базы test
USE test – Пишется в

начале запроса, чтобы указать с какой именно базой работаем в текущем запросе.
CREATE TABLE table_name (
Имя_атрибута типа_данных [NOT NULL][UNIQUE][DEFAULT value],
Имя_атрибута типа_данных [NOT NULL][UNIQUE][DEFAULT value]
….
PRIMARY KEY (Имя_атрибута),
FOREIGN KEY (Имя_атрибута) REFERENCES имя_таблицы (Имя_атрибута) ON UPDATE action [restrict][cascade]
ON DELETE action[restrict][cascade]
)
Слайд 23

CREATE пример CREATE TABLE Employees ( ID int, Name nvarchar(255), Birthday

CREATE пример

CREATE TABLE Employees (
ID int,
Name nvarchar(255), Birthday date,
Email nvarchar(30), Position

nvarchar(30), Department nvarchar(30)
)
Слайд 24

DROP удаление объекта из БД DROP TABLE не сработает, если вы

DROP удаление объекта из БД

DROP TABLE не сработает, если вы пытаетесь

удалить таблицу, в которой есть хотя бы одно поле на которое ссылается другая таблица с помощью FOREIGN KEY. Сначала нужно будет удалить все referencing FOREIGN KEY в других таблицах, и только потом вы сможете удалить таблицу.
Слайд 25

DML. INSERT –добавление данных INSERT INTO Название_таблицы (Столбец1, Столбец2, Столбец3, ...)

DML. INSERT –добавление данных

INSERT INTO Название_таблицы (Столбец1, Столбец2, Столбец3, ...)
VALUES (Данные1,

Данные2, Данные3, ...);
INSERT INTO Employees(ID, Name, Birthday, Email, Position, Department)
VALUES (100, ‘Arman’, ’01-01-1990’, ‘arman@gmail.com’, ‘Director’, ‘HR’);

* Порядок значений обязательно должен совпадать с порядком
колонок

Слайд 26

SELECT – оператор DML для получения данных из БД -После SELECT

SELECT – оператор DML для получения данных из БД

-После SELECT пишутся

столбцы, которые мы хотим вытащить из таблиц
-SELECT * означает вытащить все столбцы из таблиц
-после FROM пишем название
таблицы, где хранятся данные
-после WHERE пишем условия, которые фильтруют результат запроса
-ORDER BY сортирует запрос по определенному столбцу по возрастанию/убыванию
-LIMIT – позволяет ставить ограничения в выгрузке строк
Слайд 27

Пример запроса SELECT USE [HR ] --пишем запрос внутри БД HR

Пример запроса SELECT

USE [HR ] --пишем запрос внутри БД HR
SELECT *

--вытаскиваем все данные из таблицы, все столбцы
FROM employees --таблица employees
Результата запроса:
Слайд 28

Пример запроса SELECT USE [HR ] --пишем запрос внутри БД HR

Пример запроса SELECT

USE [HR ] --пишем запрос внутри БД HR
SELECT first_name,

last_name, salary --вытаскиваем только перечисленные столбцы
FROM employees --таблица employees
Результата запроса:
Слайд 29

Пример запроса SELECT с WHERE SELECT first_name, last_name, salary FROM employees

Пример запроса SELECT с WHERE

SELECT first_name, last_name, salary FROM employees
WHERE department_id

= 90 --вытащим инфо о сотрудникам, которые работают
в отделе с ID=90
Результата запроса:
Слайд 30

WHERE и операторы сравнения

WHERE и
операторы сравнения

Слайд 31

Between… and –проверяет лежит ли значение в интервале --пишем запрос который

Between… and –проверяет лежит ли значение в интервале

--пишем запрос который вытащит

инфо о сотрудниках с зарплатой между 10000 и 23000
SELECT first_name, last_name, salary, department_id FROM employees
WHERE salary between 10000 and 23000
--это же условие можно переписать как: salary >= 10000 and salary<= 23000
Результата запроса: