Вводный курс в SQL

SQL – это важнейший инструмент для управления данными в современной технологической отрасли. Знакомство с базовыми концепциями SQL необходимо для работы с базами данных, а приобретение знаний в области передовых концепций может вывести ваши навыки на новый уровень. При правильном обучении и практике любой желающий может овладеть SQL и эффективно управлять данными.

Вступление

SQL (structured Query Language) – это специфичный для предметной области язык программирования для запросов и манипулирования данными в реляционной базе данных. Наиболее часто используемым языком для реализации реляционных запросов является SQL. Он может использоваться для выполнения определённых действий, таких как вставка, обновление, удаление, запрос и извлечение определённой информации. SQL широко используется в областях data analytics и data science.

https://t.me/sqlhub – изучение sql в телеграме.

Типы данных SQL

В нашем распоряжении имеется огромный объём данных, и было бы сложно их обрабатывать, если бы мы хранили их все в одном типе данных. В SQL существует множество типов данных для манипулирования и обработки различной информацией.

Вводный курс в SQL

База данных

База данных – это структурированный набор данных, который организован и хранится таким образом, чтобы обеспечить эффективный поиск и манипулирование ими. Они широко используются в различных областях применения, включая бизнес-операции, научные исследования, здравоохранение, образование и государственное управление.

Создание базы данных

Создание базы данных осуществляется следующим образом:

CREATE DATABASE bytewise_DE;

Изменение базы данных

Команда ALTER DATABASE используется для изменения структуры существующей базы данных. Эта команда используется для изменения или модификации существующей базы данных.

ALTER DATABASE bytewise_DE
MODIFY NAME IS = DataEngineers_Bytewise;

Удаление базы данных

Команда DROP DATABASE используется для удаления существующей базы данных. Когда вы удаляете базу данных, все таблицы, данные и другие объекты в ней удаляются безвозвратно.

DROP DATABASE DataEngineers_Bytewise;

Типы SQL-команд

Вводный курс в SQL

Язык определения данных (DDL)

Команды языка определения данных используются для определения схемы базы данных. Команды DML используются для создания, изменения и удаления структур базы данных, но не данных.

Команды DDL:

CREATE: Эта команда используется для создания базы данных или её объектов, таких как таблица, индекс, функция, представления, процедура хранения и триггеры. Синтаксис запроса CREATE:

CREATE TABLE employees (
    ID int NOT NULL UNIQUE,
    Name varchar(255),
    Age int,
    department varchar(255),
    city varchar(255)
);

ALTER: Эта команда используется для изменения структуры базы данных. Она также используется для добавления и удаления различных ограничений в существующую таблицу. Синтаксис запроса ALTER:

ALTER TABLE employees
ALTER COLUMN phone VARCHAR(15);

DROP: Эта команда используется для удаления столбца из существующей таблицы. Синтаксис запроса DROP:

ALTER TABLE employees
DROP COLUMN address;

TRUNCATE: Эта команда используется для удаления всех записей из таблицы, включая удаление всех пробелов, выделенных для записей. TRUNCATE удаляет данные внутри данных, но не таблицу . Это быстрее, чем команда DELETE, поскольку она удаляет все строки за одну операцию, а не удаляет каждую строку по одной.

Синтаксис запроса TRUNCATE:

TRUNCATE TABLE employees

RENAME: Эта команда используется для переименования существующей таблицы или столбца. Синтаксис запроса RENAME:

ALTER TABLE employees
RENAME COLUMN Name to emp_Name

Язык манипулирования данными (DML)

Команды языка манипулирования данными используются для внесения изменений в базу данных, таких как операция CRUD (создание, чтение, обновление и удаление).

Команды DML:

SELECT: SELECT используется для выбора данных из базы данных. Синтаксис запроса SELECT:

1) 
SELECT * FROM employees
2)
SELECT Name,Age, department
FROM employees

INSERT: Эта команда используется для вставки одной или нескольких строк данных в базу данных. Перед вставкой следует убедиться, что таблица уже создана. Синтаксис запроса INSERT:

INSERT INTO employees(ID, Name, Age, department, city)
VALUES (1,'sadaf',20 ,'SE','ISLAMABAD');

UPDATE: Эта команда используется для обновления существующих данных в одну или несколько строк или столбцов с помощью UPDATE и WHERE. Синтаксис запроса UPDATE:

UPDATE employees 
SET Name= 'Sadaf sultan'
WHERE Age= 20;

DELETE: Эта команда используется для удаления одной или нескольких существующих записей из таблиц базы данных. Синтаксис запроса DELETE:

DELETE FROM employees
WHERE Name ='sadaf sultan'

WHERE: Используется для извлечения данных из базы данных, чтобы указать условие при извлечении из одной таблицы или путём объединения с несколькими таблицами. Синтаксис запроса WHERE:

SELECT * FROM employees
WHERE age > 50

SELECT * FROM employees
WHERE Name = 'sadaf'

ORDER BY: Это ключевое слово используется для сортировки данных в порядке возрастания и убывания. Синтаксис запроса ORDER BY:

SELECT *
FROM employees
ORDER BY age;
---- by default in ascending order
SELECT *
FROM employees
ORDER BY age DESC;
---- the keyword of DESC is used for descending order

⦁ Ключевое слово DISTINCT: Эта команда используется для удаления повторяющихся значений. Синтаксис запроса DISTINCT :

SELECT DISTINCT ProductName
FROM Products

SELECT DISTINCT ProductName, UnitPrice, UnitsOnOrder,ReorderLevel
FROM Products
WHERE ReorderLevel BETWEEN 1 AND 10
ORDER BY ReorderLevel

Язык управления данными (DCL)

Язык управления данными – это язык запросов, который позволяет пользователям извлекать и редактировать данные, хранящиеся в базах данных.

Команды DCL

GRANT: Эта команда предоставляет пользователям привилегии доступа к базе данных. Синтаксис запроса INVOKE:

GRANT CREATE TABLE TO testing
/*grant the role to a user.*/

INVOKE: Эта команда лишает пользователя прав доступа, предоставленных с помощью команды GRANT. Синтаксис запроса INVOKE:

REVOKE CREATE TABLE FROM testing;

Язык запросов к данным (DQL)

Язык запросов данных – это группа команд, ответственных за запрос данных из базы данных. Это компонент SQL-инструкции, который позволяет получать данные из базы данных и наносить на них порядок. Когда выполняется выборка для таблицы или таблиц, результат компилируется в дополнительную временную таблицу, которая отображается или, возможно, принимается программой.

DQL включает в себя множество команд, таких как SELECT, FROM, WHERE, GROUP BY, HAVING и ORDER BY. Эти команды используются для указания того, какие данные следует извлекать, откуда их извлекать, как их фильтровать, как группировать и агрегировать, а также как сортировать.

Команды DQL

SELECT: используется для извлечения данных из базы данных. Синтаксис запроса SELECT:

SELECT * FROM employees

GROUP BY : Используется для группировки результирующего набора (используется с агрегатными функциями: COUNT, MAX, MIN, SUM, AVG). Count используется для возврата количества строк, соответствующего указанному критерию. AVG используется для возврата среднего значения числового столбца. SUM используется для возврата общей суммы числового столбца. MAX используется для возврата наибольшего значения выбранного столбца. MIN используется для возврата наименьшего значения выбранного столбца.

Синтаксис запроса GROUP BY выглядит следующим образом:

---- COUNT
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

SELECT COUNT(ProductID)
FROM Products;

----- AVERAGE
SELECT AVG(ProductID)
FROM Products;

---- SUM
SELECT SUM(ProductID)
FROM Products;

---- MAXIMUM 
SELECT MAX (ProductID)
FROM Products;

----- MINIMUM
SELECT MIN(ProductID)
FROM Products;

COLUMN ALIASES: часто используется для того, чтобы сделать имена столбцов более удобочитаемыми. Эта команда существует только на время выполнения запроса. ALIASES создаётся с помощью ключевого слова AS. Синтаксис ALIASES:

SELECT TerritoryID, TerritoryDescription AS TerritoryDetails 
FROM Territories

HAVING: Эта команда была добавлено в SQL, поскольку ключевое слово WHERE нельзя использовать с агрегатными функциями.

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

BETWEEN , AND & OR: используется для выбора значений в пределах заданного диапазона. Значениями могут быть цифры, текст или даты.Синтаксис запроса WHERE:

SELECT OrderID,CustomerID, ShipName 
FROM Orders
WHERE OrderID BETWEEN 10270 AND 10300

SELECT OrderID,CustomerID, ShipName 
FROM Orders
WHERE ShipName BETWEEN 'EFG' OR 'ABC'

⦁ IN & LIKE: Команда IN используется для разрешения нескольких значений в предложении WHERE. Синтаксис запроса IN:

SELECT * FROM employees
WHERE department IN ('Software', 'Computer Science', 'information Technology');

Оператор LIKE используется в предложении WHERE для поиска указанного шаблона в столбце. Синтаксис запроса LIKE:

--This query show all the employees whose names started with A
SELECT * FROM employees
WHERE Name LIKE 'a%';

--This query show all the employees whose names ending with A
SELECT * FROM employees
WHERE Name LIKE '%a';

--This query show all the employees whose names contain A in second position
SELECT * FROM employees
WHERE Name LIKE '%_a';

--This query show all the employees whose names started with S but ended at F
SELECT * FROM employees
WHERE Name LIKE 'S%f';

IS NULL: используется для поиска нулевых значений в определённом столбце. Синтаксис IS NULL:

SELECT * FROM Employees WHERE department IS NULL;

TOP N: Используется для указания количества записей, которые требуется вернуть. Синтаксис запроса TOP N:

SELECT TOP 20*
FROM Orders
ORDER BY EmployeeID

SELECT TOP 10 *
FROM EmployeeTerritories
WHERE EmployeeID = 5
ORDER BY TerritoryID DESC

UNION : используется для объединения результатов двух или более операторов SELECT в единый результирующий набор без дубликатов. Синтаксис запроса UNION:

SELECT *
FROM Customers
WHERE Country = 'germany' AND Region IS NULL
UNION
SELECT *
FROM Customers
WHERE Country = 'Mexico' AND Region IS NULL

INTERSECT: используется для возврата только строк, которые являются общими для двух операторов SELECT, без дубликатов. Синтаксис запроса INTERSECT:

SELECT *
FROM Customers
WHERE Country = 'germany' AND Region IS NULL
INTERSECT
SELECT *
FROM Customers
WHERE City LIKE 'A%'

EXCEPT: Возвращает только строки, которые присутствуют в первом операторе SELECT, но отсутствуют втором операторе SELECT, без дубликатов. Синтаксис запроса EXCEPT:

SELECT *
FROM Customers
WHERE Country = 'germany' AND Region IS NULL
EXCEPT
SELECT *
FROM Customers
WHERE Country = 'Mexico' AND Region IS NULL

JOINS

В SQL соединения используются для объединения строк из двух или более таблиц на основе связанного столбца между ними. В SQL доступно несколько типов соединений:

Вводный курс в SQL

Inner join

Inner join вернёт только запись, в которой ключ находит совпадение в обеих таблицах.

SELECT * FROM Orders AS o
INNER JOIN [Order Details]  AS OD 
ON o.OrderID = OD.OrderID

SELECT o.OrderID, o.CustomerID, o.OrderDate  FROM Orders AS o
INNER JOIN Customers  AS c ON o.CustomerID = c.CustomerID

Outer join

Ключевое слово Outer join возвращает все записи, если есть совпадение в записях таблицы слева (table1) или справа (table2).

SELECT * FROM Orders AS o
FULL OUTER JOIN [Order Details]  AS OD
ON o.OrderID = OD.OrderID

Self join

Self join – это обычное соединение, где таблица соединяется сама с собой.

SELECT e1.TitleOfCourtesy,e1.FirstName,e1.LastName,e2.City,e2.Address
FROM Employees e1
INNER JOIN Employees e2 ON e1.Title= e2.Title AND e1.EmployeeID = e2.EmployeeID

Cross join

Cross join возвращает все записи из обеих таблиц.

SELECT P.ProductName, c.companyName, c.ContactTitle 
FROM Products P
CROSS JOIN Customers c

Right join

Ключевое слово Right Join возвращает все записи из правой таблицы и соответствующие записи из левой таблицы. Результатом будет 0 записей с левой стороны, если совпадений нет.

SELECT * FROM Orders AS o
RIGHT JOIN [Order Details]  AS OD
ON o.OrderID = OD.OrderID


SELECT o.OrderID, o.CustomerID, o.OrderDate  FROM Orders AS o
RIGHT JOIN Customers  AS c ON o.CustomerID = c.CustomerID

Left join

Ключевое слово Left Join возвращает все записи из левой таблицы (Table1) и соответствующие записи из правой таблицы (Table2). Результатом будет 0 записей с правой стороны, если совпадений нет.

SELECT * FROM Orders AS o
LEFT JOIN [Order Details]  AS OD
ON o.OrderID = OD.OrderID


SELECT o.OrderID, o.CustomerID, o.OrderDate  FROM Orders AS o
LEFT JOIN Customers  AS c ON o.CustomerID = c.CustomerID

Left anti-join

Одним из видов объединения, доступных в диалоговом окне слияния в Power Query, является Left anti-join, которое приводит только к строкам из левой таблицы, которым не соответствуют строки из правой таблицы.

SELECT c.ContactName, c.CompanyName,O.ShipCountry
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE o.CustomerID IS NULL

Right anti-join

Одним из видов объединения, доступных в диалоговом окне слияния в Power Query, является Right anti-join, которое приводит только к строкам из правой таблицы, которым не соответствуют строки из левой таблицы.

SELECT c.ContactName, c.CompanyName,O.ShipCountry
FROM Orders o
RIGHT JOIN Customers c  ON c.CustomerID = o.CustomerID
WHERE o.CustomerID IS NULL

Подзапросы

В SQL подзапрос – это SQL-запрос, вложенный внутри более крупного запроса. Подзапрос может выполняться с предложениями SELECT, WHERE и FROM. Подзапрос обычно добавляется в предложение WHERE другого оператора SQL SELECT. Подзапрос также называется внутренним запросом или inner select, в то время как оператор, содержащий подзапрос, называется внешним запросом или outer select.

Вводный курс в SQL

Однострочный подзапрос

Запрос, который возвращает только одну строку данных, называется однострочным подзапросом.

SELECT* FROM Products 
WHERE UnitPrice > (SELECT min(UnitPrice) AS Minimum_Price FROM Products)


SELECT  TitleOfCourtesy,FirstName,LastName 
FROM Employees
WHERE Extension>=(SELECT MAX(Extension)  FROM Employees )

Многострочный подзапрос

Многострочный подзапрос возвращает несколько строк данных. Мы можем использовать оператор IN во внешнем запросе для обработки подзапроса, который возвращает несколько строк.

SELECT* FROM Orders
SELECT OrderID,OrderDate , ShipName, ShipCountry FROM Orders WHERE CustomerID IN 
(SELECT CustomerID FROM Customers WHERE Country IN 
(SELECT Country FROM Suppliers ))

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

Подзапрос может быть вложен в другие подзапросы. SQL сначала выполняет самый внутренний подзапрос, затем следующий уровень.

SELECT * FROM Orders WHERE CustomerID IN 
(SELECT CustomerID FROM Customers WHERE Country IN 
(SELECT Country FROM Suppliers WHERE SupplierID IN 
(SELECT SupplierID FROM Products  WHERE Discontinued = 0)))

Коррелированный подзапрос

Ссылайтесь на один или несколько столбцов во внешней инструкции SQL. Этот запрос используется для обработки по строкам.

SELECT ProductID,ProductName,UnitPrice
FROM Products p
WHERE
    UnitsInStock IN (
        SELECT MAX (UnitPrice)
        FROM Products p2
        WHERE p2.ProductID = p.ProductID
        GROUP BY p2.ProductName)
ORDER BY
    UnitsOnOrder,
    ProductName;

Представление

Представление – это виртуальная таблица, основанная на результате выполнения инструкции SELECT. Представление может использоваться для упрощения сложных запросов или для представления подмножества данных пользователям без раскрытия базовых таблиц.

Цель представлений

Цель представлений – предоставить конечным пользователям настраиваемое и упрощённое представление данных без необходимости знать базовую структуру данных. Представления, обеспечивающие уровень абстракции, защищают конфиденциальные данные или изменения схемы. Они также известны как виртуальные таблицы.

Типы представлений

Существует два типа представления :

⦁ Простое представление: Простое представление основано на одной таблице и выбирает все столбцы или подмножество столбцов из этой таблицы.

CREATE VIEW shippersView
AS
SELECT* FROM Shippers WHERE CompanyName='United Package'

⦁ Комплексное представление: Комплексное представление основано на нескольких таблицах и включает одно или несколько соединений или подзапросов в инструкции SELECT.

CREATE VIEW orders_View_Detail
AS
SELECT OrderID,OrderDate , ShipName, ShipCountry FROM Orders WHERE CustomerID IN 
(SELECT CustomerID FROM Customers WHERE Country IN 
(SELECT Country FROM Suppliers WHERE Country= 'japan' OR Country='uk' ))

Создание представления

CREATE VIEW OrderView 
AS
SELECT *
FROM Orders

Изменение представления

ALTER VIEW orderView 
AS 
SELECT orderID,OrderDate
FROM Orders

Удаление представления

DROP VIEW orderView

Индексы

Индекс SQL – это структура данных, используемая системой управления базами данных для быстрого поиска и извлечения данных из таблицы.

Индекс работает подобно оглавлению книги, предоставляя список ключевых слов или фраз и соответствующие им номера страниц. Аналогичным образом, индекс SQL содержит список значений из одного или нескольких столбцов таблицы и их соответствующих местоположений в строках таблицы.

Кластеризованный индекс

Кластеризованный индекс используется для определения порядка, сортировки таблицы или упорядочивания данных в алфавитном порядке, подобно словарю. Он работает быстрее, чем некластеризованный индекс.

CREATE CLUSTERED INDEX idx_orderID_ShipCity ON Orders(OrderID, ShipCity)

Некластеризованный индекс

Некластеризованный индекс собирает данные в одном месте и записывает в другом. Это медленнее медленнее, чем кластеризованный индекс. Для выполнения операций требуется больше памяти.

CREATE NONCLUSTERED INDEX idx_orderID_ShipCity ON Orders(OrderID, ShipCity)

CREATE NONCLUSTERED INDEX idx_regionID_RegionDescription ON 
Region(RegionID, RegionDescription)

Создание индекса

CREATE INDEX idx_EmployeeID ON Employees(EmployeeID)

Изменение индекса

ALTER INDEX idx_EmployeeID ON Employees(EmployeeID)  REBUILD

Удаление индекса

DROP INDEX idx_EmployeeID ON Employees(EmployeeID)

Использование индекса

execute sp_helpindex Employees

УСЛОВНЫЕ ОПЕРАТОРЫ (ЦИКЛЫ)

В SQL Server цикл – это метод, при котором набор инструкций SQL выполняется повторно до тех пор, пока не будет выполнено условие.

Цикл WHILE

SQL Server поддерживает цикл WHILE. Выполнением инструкций можно управлять из блока WHLE, используя ключевые слова BREAK и CONTINUE.

DECLARE @i INT = 10;
 
WHILE @i <= 30
 BEGIN
  PRINT (@i);
  SET @i = @i + 10;
 END;

CASE

Оператор CASE в SQL позволяет выполнять условную логику в операторе SELECT, который может использоваться для преобразования данных или создания вычисляемых полей на основе определенных условий. Вот пример SQL-запроса, который использует оператор CASE:

SELECT employee_id, employee_name, salary, department,
       CASE 
            WHEN salary >= 100000 THEN 'High'
            WHEN salary >= 50000 AND salary < 100000 THEN 'Medium'
            ELSE 'Low'
       END AS salary_range
FROM employees;

Надеюсь, данная статья оказалась для вас полезной! Скоро мы опубликуем вторую часть нашего бесплатного sql курса.

+1
0
+1
6
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *