Освоение SQL

Освоение SQL

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

Вступление

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

Типы данных 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.

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

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

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;

Надеюсь, данная статья оказалась для вас полезной!

Статья была взята из этого источника:

1 комментарий

Все эти запросы можно выполнять онлайн на https://sqlize.online

Ответить