Посоветуйте, куда развиваться MS SQL Developer/DBA
Всем привет! Куда посоветуете развиваться MS SQL Developer/DBA? Опыт 7 лет. Но в украинских компаниях — страхование, ритейл. Задачи — написание бизнес логики корпоративного софта для учета и финансов на t-SQL. Но немного и с OLAP работал.
Английский средний. Знаю на базовом уровне JS(node, angular) и C# (ADO.NET).
Что качать для перехода в аутсорсинговую компанию? Вот какие реально перспективы сейчас у MS SQL Developer/DBA? Может лучше C# или JS качать?
Подобається Сподобалось 0
До обраного В обраному 0
Схожі топіки
- Mein Weg (Мій Шлях)
- Зміна ролі спеціаліста із знанням бухгалтерського обліку
- Перехід з С++ (not web related) в Web Backend (Java/C#/Python)
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
26 коментарів
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
английский учить и дуть в аутсорсеры
сертифицироваться возможно — MS народец это любит
Ты имеешь в виду наши аутсорс-конторы или что-то другое может быть?
да их самые
я 99% уверен что приемлимого языка что бы куда то дергаться после 7 лет на внутренем рынке нет
Я для себя вижу такие варианты:
1) dba \ bi — учить c#, продвинутые фичи mssql, английский. Вакух мне показалось маловато все-таки у нас. Но есть шансы стартонуть с миддла
2) с# developer — усиленно учить c#, английский. Вакух для c#\mssql developer значительно больше.
3) забить на mssql вообще и усиленно учить Js. И английский
Пытаюсь понять для себя в каком из них лучшее сочетание услия\деньги\перспективы с учетом моих текущих навыков.
Oleg Korol POWER Ops, again 09.02.2016 23:27
нужно определиться с чем-то одним, либо
развиваться
либо дальше сидеть
Но в украинских компаниях
Я развиваюсь, хочу понять на что акцент делать
Maxim Kozenko Стейкхолдер в FONDY 08.02.2016 00:46
PostgreSQL меньше денег, но проще на него перескочить и набирает популярности в рускоязычном сегменте. Прямой путь в стартапы и продуктовые компании. Oracle больше денег, придется сильно переучиться, но можно найти хороший уровень оплаты в аутсорс/аутстаф гигантах. Oracle + Java + OLAP + ETL вообще ядерная смесь.
Denis Reznik Data Architect в Intapp 07.02.2016 18:30
Приходите к нам на следующую встречу сообщества — www.facebook.com/groups/kssug, а после встречи идите с нами на пиво 🙂 там коллеги поделятся опытом что и как. Может даже вакансия у кого в компании будет.
Спасибо, Денис. Записался на встречу
Всем привет! Куда посоветуете развиваться MS SQL Developer/DBA? Опыт 7 лет. Но в украинских компаниях — страхование, ритейл.
Учить английский язык и искать работу на западе.
Смотрел вакухи в сша\Англии. Действительно, много вакансий под мой уровень квалификации с вполне вкусными зарплатами. Задачи-то везде одинаковые на предприятиях на самом деле, что у нас, что у них. Но кроме английского конечно есть много нюансов с переездом. Интересно насколько реально найти удаленку например в штатах со знаниями преимущественно mssql и хорошим английским
разслабся, ты собрался играть против миллиона индусов с сертификатами, отличным английским и самопиаром в 10 степени
Это ты точно сказал, увы
Kostiantyn Reu Sr. Principal Data Engineer в GoodRx 07.02.2016 02:35
в BI (ETL, OLAP, Reporting).
Смотреть в сторону NoSQL, Cloud.
Учить .NET (C#) и Инглишь
Andrei Trofimov Director, Software Engineering в EPAM Systems, PMP, MBA 07.02.2016 12:58
Английский и да BI направление, опционально .Net/Java но не обязательно
Уровень ЗП сопоставим с JS/Java
Kostiantyn Reu Sr. Principal Data Engineer в GoodRx 07.02.2016 19:25
.net учить обязательно.
Интеграция MS SQL с нет дает коллосальный эффект s TSQL, SSIS, SSRS и даже в с SSAS, ну а сколько тулов может грамотный ДБА создать для автоматизации. ИМХО.
Да Powersell следует учесть.
ЗЫ. Развиватся можно и как DBA. Уметь строить HA, high load system, DWH, etc. Поле на самом деле огромное. Правда не стоит хвататся за все сразу. Хороший DBA и счас в цене.
Константин, правильно понимаю, что в текущей ситуации для повышения своей стоимости на рынке мне надо прокачивать .net? Ну и английский.
Kostiantyn Reu Sr. Principal Data Engineer в GoodRx 08.02.2016 23:57
Желательно.
Например как DBA нужно понимать как работают клиенты с базой, что там за коллы происходят, какие недостатки у того или иного ORM. Например нужно заюзать regeular expression in TSQL или нужно запилить интеграцию с сорсом где в SSIS нет адаптеров. Или автоматизировать деплоймент.
Как второй скилл знание .Net очень даже handy. Конечно речь не идет о том чтобы стать дот нетчиком. Если придерживаться линии DB/BI то я регулярно пишу на .NET.
C другой стороны есть BI. Счас рынок труда таков, что на чистых DBA нет спроса (я за рынок США). Под DBA role подразумевается более широкий спектр выполняемых задач.
Например www.cybercoders.com/. gaming-company-job-235570
«
— SQL Server 2008/2012
— Backups/Recovery/Performance Tuning
— SSIS
— SSRS
— SSAS
«
Как бы тут три в одном. Но с другой стороны даже MS официально отменила сертификацию для чистых DBA начиная с SQL 2012. Существует два направления: Data Platform & Business Intelligence.
Все ИМХО и не претендует на универсальный ответ.
С чего начать изучение SQL?
Вот этот сайт www.sql-ex.ru рекомендую. Там так упражнения подобраны, что можно все возможности SQL освоить, и понять для чего они нужны.
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
176 коментарів
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Хорошая книга. Но неизвестно насколько вам именно нужен T-SQL.
www.amazon.com/. zik-Ben-Gan/dp/150930200X
Мова програмування баз даних
SQL — це не мова програмування
SQL-это слабо структурированный (описательный) язык программирования.
Переучите их заного 🙂
Если отбросить формальности и учитывать, что на многих проектах люди пишут всю бизнес логику в SQL, то очень даже язык программирования и даже функциональный слегонца.
Ruslan Kovalov Software Engineer в Crate.io 01.05.2018 12:26
BI developer,
Это еще что за лычка?
Business Intelligence (BI) Tools | Microsoft Azure
и как оно? получился BI developer с 2 годами опыта?
Елена, можно учиться по видео курсам ITVDN
1) SQL Essential (itvdn.com/ru/video/sql-essential )
2) Выполнение домашнего задания по курсу SQL Essential (itvdn.com/ru/video/sql-homework)
3) How to SQL Essential (itvdn.com/. ideo/how-to-sql-essential)
4) SQL Практикум (itvdn.com/ru/video/sql-workshop)
Проконсультироваться по непонятным вопросам можно прямо у авторов курсов в нашем учебном центре. Или просто пройти двухнедельный курс SQL Essential. Ближайший старт 9 и 21 марта. И, кстати, в марте для девушек акция — скидка на обучение и подписка на ITVDN в подарок.
она уже мидл+ (или забила) больше 2 лет прошло
найти ментора будет самы легкий вариант 🙂
Я думаю пойти на курсы скорее, что я и сделаю, как только разберусь с универом + самообучение дома, без этого никак.
Тимофей Шумаков Data Engineer / Business Intelligence Developer в Tiresian 08.04.2015 23:49
Осмелюсь высказать крамольную мысль о том, что будущему биай девелоперу не с эскьюэля начинать нужно.
Andrzej Baczynski Outsourcing CEO, PM 06.03.2016 00:00
Хотелось бы узнать с чего же тогда стоит начать?
действительно интересно с чего? как по мне, так действительно с SQL
Начинать с SELECT, INSERT, UPDATE, DELETE и переходить к другим конструкциям как освоитесь. Создайте базу данных чего угодно (домашней библиотеки, городских кафе, интернет-форума) с несколькими таблицами и тренируйтесь. Для того, чтобы разобраться с синтаксисом возьмите документацию СУБД, например www.postgresql.org/. ractive/sql-commands.html.
На этом этапе становится очевидным, что учить SQL без изучения реляционных СУБД не получиться. Порекомендую курс «Introduction to Databases» от Стэнфорда, там рассказывается не просто про SQL, но и про данные в общем, и про различные способы хранения структурированных и не структурированных данных. При этом, несмотря на такие слова как «реляционная алгебра» никакого специального математического образования для него не требуется, все рассказывается поэтапно, доступным (правда английским) языком.
Если у вас уже есть опыт программирования, то обратите внимание, что SQL — язык необычный, он не процедурный (как Java, PHP или C++), а декларативный, то есть конструкции языка описывают каким должен быть конечный результат (выбрать колонки фио и номер телефона из таблицы пользователи), а не последовательность действий для его достижения (последовательно просканировать таблицу пользователи, выбирая каждую встреченную запись, и из результата оставить только колонки фио и номер). Это — важная деталь для понимания, как работают реляционные СУБД, я встречал Java разработчиков с многолетним опытом, которые не понимали этой особенности и в результате пытались действия по фильтрации результатов запроса перенести в приложение, создавая в результате плохие запросы и медленные приложения.
Как изучить SQL за ночь или шпаргалка для системного аналитика
Помните, как вы были студентами, и готовились к экзаменам по ночам?
Предлагаю вашему вниманию простую шпаргалку по SQL с теорией и практикой, которой вы сможете воспользоваться в любое время.
Статья пригодится:
- ИТ специалисту, которому необходимо быстро освоить минимальный уровень SQL для выполнения рабочих задач,
- Системному аналитику, которому требуется освежить знания перед собеседованием или научиться, если раньше не было задач с SQL.
В статье есть:
- Минимум теории для задач на работе или собеседовании (прим.операторов в SQL больше, но в своей работе использовала чаще всего эти);
- Практические задания, которые можно выполнить у себя на ПК бесплатно, предварительно установив сервер баз данных.
SQL теория
SQL (structured query language) — язык структурированных запросов, который позволяет работать с данными (найти, изменить, удалить или создать) в реляционной базе данных (БД).
Реляционные БД — это базы, где связанная информация, представленная в виде двумерных таблиц (например, Postgres, Mysql, Oracle и др.).
СУБД — система управления БД, программа с помощью которой можно создавать, наполнять и просматривать БД .
ER диаграммы (Entity-Relationship model) — показывает структуру и связи таблиц в БД. Помогает в написании SQL запросов.
Для работы мозга студенту нужна энергия. Проще всего ее получить из сладкого. Значит будем учиться на примере базы данных сладостей. Изучать теорию мы с вами будем на реальном примере.
Наша БД состоит из таблиц:
(прим. показана часть БД с необходимыми таблицами для выполнения практических заданий)
sweets_types — виды сладостей
Столбец
Тип данных
Обязательность
Описание
not null (должно быть значение)
Идентификатор вида сладости.
manufacturers — производители
Столбец
Тип данных
Обязательность
Описание
storehouses — склады
Столбец
Тип данных
Обязательность
Описание
manufacturers_storehouses — связь производителя со складом
Столбец
Тип данных
Обязательность
Описание
sweets — сладости
Столбец
Тип данных
Обязательность
Описание
true — да, false — нет
true — да, false — нет
- Столбцы (поля),
- Строки (записи),
- Ячейки (значение поля),
- Ограничения поля (constraint): PK (primary key) — первичный ключ, FK (foreign key) — внешний ключ,
- Тип данных поля.
В SQL выделяют основные 4 группы операторов:
- DDL (Data Definition Language) – работа со структурой БД,
- DML (Data Manipulation Language) – работы с данными таблиц,
- DCL (Data Control Language) – работа с правами,
- TCL (Transaction Control Language) – работа с транзакциями.
DML чаще всего спрашивают на собеседовании. DCL/DML нужны в работе системного аналитика. DCL, TCL в моей практике не приходилось пользоваться ни на собеседовании, ни в работе системного аналитика, поэтому в данной статье не будем их рассматривать, так как за ночь нужно выучить или вспомнить то, что действительно могут спросить на собеседовании (экзамене) или пригодиться в работе.
А теперь шпаргалки SQL операторов
Работа со структурой БД (DDL)
CREATE. Создание таблицы.
CREATE TABLE public.sweets_types ( id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 ), name character varying NOT NULL, PRIMARY KEY (id)
Имя создаваемой таблицы указано в формате:
Имя схемы.Имя таблицы .
Например, схема = public, имя таблицы = sweets_types, тогда имя создаваемой таблицы = public.sweets_types
Конструкция GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 ) позволяет задать генерацию значения поля id от 1 с увеличением +1.
ALTER. Добавление, изменение или удаление столбцов в таблице.
Пример SQL запроса, который добавит столбец name_english с типом данных character varying в таблицу sweets_types
ALTER TABLE IF EXISTS public.sweets_types ADD COLUMN name_english character varying;
DROP. Удаление целиком таблицы из БД.
DROP TABLE public.sweets_types;
TRUNCATE. Удаление всех записей из таблицы.
TRUNCATE TABLE public.sweets_types;
Работа с данными таблиц (DML)
INSERT. Добавление строки в таблицу.
INSERT INTO public.sweets_types(name) VALUES ('вафли'), ('конфеты');
Столбец id в таблице sweets_types является PK и сгенерится автоматом при добавлении, поэтому в INSERT добавляем значение столбца name
UPDATE. Обновление данных строки в таблице.
UPDATE public.sweets_types SET name = 'вафли новые' WHERE >DELETE. Удаление строки из таблицы.
DELETE FROM public.sweets_types WHERE name = 'вафли';
SELECT. Просмотр данных из таблицы.
Все виды сладостей (идентификатор и имя)
SELECT * FROM public.sweets_types;
Только имена видов сладостей
SELECT name FROM public.sweets_types;
Другие операторы, которые можно использовать с DML (работа с данными)
Ниже приведены операторы условия, группировки, сортировки, объединения и агрегатные функции.
Структура запроса для поиска данных:
SELECT 'что' FROM 'из какой таблицы' JOIN 'с другой таблицей' WHERE 'условие' ORDER BY 'сортировка'
SELECT 'что' FROM 'из какой таблицы' JOIN 'с другой таблицей' GROUP BY 'группировка' HAVING 'условие'
DISTINCT. Возвращает уникальные значения, без повторений.
SELECT DISTINCT city FROM public.storehouses
COUNT. Количество строк (записей).
Посчитать количество сладостей, у которых вес равен 300
SELECT COUNT(id) FROM public.sweets WHERE weight = '300';
WHERE. Условие фильтрации записей при выборе данных.
Список сладостей, у которых стоимость равна 100
SELECT name FROM public.sweets WHERE cost = '100';
LIKE. Поиск значения по совпадению с выражением в столбце.
С оператором LIKE используются два подстановочных знака:
- % — любое количество символов;
- _ — один символ.
Найти список сладостей, которые начинаются на М.
SELECT * FROM public.sweets WHERE name LIKE 'М%';
AND, OR, BETWEEN. Оператор «И», «Или», «Между».
Список сладостей, у которых стоимость равна 100 и вес равен 100
SELECT name FROM public.sweets WHERE cost = '100' AND weight = '100';
Список сладостей, у которых стоимость от 100 до 150
SELECT name FROM public.sweets WHERE cost BETWEEN '100' AND '150';
Примечание: в выборку попадут сладости, у которых стоимость равно 100 и равна 150.
ORDER BY ASC, DESC. Сортировка в порядке возрастания (asc) или убывания (desc).
ASC можно не указывать.
SELECT * FROM public.sweets ORDER BY name DESC;
GROUP BY. Группировка столбцов.
SELECT sweets_types_id FROM public.sweets GROUP BY sweets_types_id;
HAVING. Используется для фильтрации по условию, когда есть группировка.
Найти склады, в которых количество сладостей больше 8
SELECT s.name FROM public.storehouses s LEFT JOIN public.manufacturers_storehouses ms ON s.id = ms.storehouses_id LEFT JOIN public.sweets sw ON sw.manufacturer_id = ms.manufacturers_id GROUP BY s.name HAVING COUNT (sw.id) > 8;
Сначала сгруппируем сладости по складам, а затем через условие HAVING найдем те, у которых количество сладостей больше 8
SUM, MAX, MIN, AVG. Сумма значений, максимальное, минимальное, среднее значение.
SELECT SUM(id) FROM public.sweets; SELECT MAX(id) FROM public.sweets; SELECT MIN(id) FROM public.sweets; SELECT AVG(id) FROM public.sweets;
JOIN или INNER JOIN, LEFT JOIN, RIGHT JOIN. Объединение двух таблиц.
- JOIN или INNER JOIN — возвращает записи, имеющие в обеих таблицах
- LEFT JOIN — возвращает все записи из левой таблицы и те, которые есть в левой и правой таблице
- RIGHT JOIN — возвращает все записи из правой таблицы и те, которые есть в правой таблице
Подробная работа с JOIN описана в статье.
SELECT * FROM public.sweets s JOIN public.sweets_types st ON s.sweets_types_id = st.id WHERE st.name = 'шоколад';
SQL практика
Шаг 1. Установить инструменты для работы
Для выполнения практических заданий берем базу данных — Postgres и СУБД — pgAdmin.
- Скачать Postgres и pgAdmin можно по ссылке,
- Поставить показано в видео по ссылке,
- Настроить подключение к серверу через pgAdmin описано в статье по ссылке, раздел 2. Запуск
ШАГ 2. Создаем таблицы в БД
В pgAdmin есть форма создания таблиц: Схемы -> public -> Таблицы -> Создать.
Заполните вкладки General, Столбцы.
Посмотреть картинки как это сделать в pgAdmin
Для столбцов id в таблицах устанавливаем ограничения
Скрипт SQL на создание таблиц в БД
CREATE TABLE public.sweets_types ( id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 ), name character varying NOT NULL, PRIMARY KEY (id) ); ALTER TABLE IF EXISTS public.sweets_types OWNER to postgres; COMMENT ON TABLE public.sweets_types IS 'Виды сладостей'; CREATE TABLE public.sweets ( id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 ), sweets_types_id integer, name character varying NOT NULL, cost character varying NOT NULL, weight character varying NOT NULL, manufacturer_id integer NOT NULL, with_sugar boolean, requires_freezing boolean, production_date date NOT NULL, expiration_date date NOT NULL, PRIMARY KEY (id) ); ALTER TABLE IF EXISTS public.sweets OWNER to postgres; COMMENT ON TABLE public.sweets IS 'Записи о сладостях'; CREATE TABLE public.manufacturers_storehouses ( id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 ), storehouses_id integer NOT NULL, manufacturers_id integer NOT NULL, PRIMARY KEY (id) ) TABLESPACE pg_default; ALTER TABLE IF EXISTS public.manufacturers_storehouses OWNER to postgres; COMMENT ON TABLE public.manufacturers_storehouses IS 'Связь компании производителя и склада'; CREATE TABLE public.manufacturers ( id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 ), name character varying NOT NULL, phone character varying, adress character varying, city character varying NOT NULL, country character varying NOT NULL, PRIMARY KEY (id) ); ALTER TABLE IF EXISTS public.manufacturers OWNER to postgres; COMMENT ON TABLE public.manufacturers IS 'Компании производители'; CREATE TABLE public.storehouses ( id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 ), name character varying NOT NULL, adress character varying, city character varying NOT NULL, country character varying NOT NULL, PRIMARY KEY (id) ); ALTER TABLE IF EXISTS public.storehouses OWNER to postgres; COMMENT ON TABLE public.storehouses IS 'Склады';
ШАГ 3. Добавляем записи в БД
Наполняем таблицы данными с помощью SQL скрипта. Используем оператор INSERT INTO . VALUES
В pgAdmin заходим в таблицу sweets_types и создаем скрипт Insert: Схемы -> public -> Таблицы -> sweets_types (правая кнопка мыши) -> Scripts -> Insert.
Аналогично наполняем данными другие таблицами.
Посмотреть картинки как это сделать в pgAdmin
Скрипт SQL на наполнение данными таблиц
INSERT INTO public.sweets_types( name) VALUES ('вафли'), ('конфеты'), ('мармелад'), ('печенье'), ('шоколад'); INSERT INTO public.storehouses( name, adress, city, country) VALUES ('MSK-1', '109235, г. Москва, Проектируемый проезд 4386, д.8', 'Moscow', 'Russia'), ('SPB-1', '197375, г. Санкт-Петербург, Суздальское шоссе, д. 26', 'Saint-petersburg', 'Russia'), ('EKB-1', '620137, г. Екатеринбург, Шефская улица, д. 1А', 'Ekaterinburg', 'Russia'), ('EKB-2', '620137, г. Екатеринбург, Шефская улица, д. 2А', 'Ekaterinburg', 'Russia'); INSERT INTO public.manufacturers( name, phone, adress, city, country) VALUES ('Мишаня', '', '109235, г. Москва, Проектируемый проезд, д.15', 'Moscow', 'Russia'), ('Собакен', '78125748899', '197375, г. Санкт-Петербург, Суздальское шоссе, д. 75', 'Saint-petersburg', 'Russia'), ('Мартыха', '74657896525', '620137, г. Екатеринбург, Шефская улица, д. 5А', 'Ekaterinburg', 'Russia'), ('Мишаня', '', '109235, г. Казань, Проектируемая улица, д.15', 'Kazan', 'Russia'); INSERT INTO public.manufacturers_storehouses( storehouses_id, manufacturers_id) VALUES (1, 1), (2, 2), (3, 3), (1, 2), (2, 1); INSERT INTO public.sweets( sweets_types_id, name, cost, weight, manufacturer_id, with_sugar, requires_freezing, production_date, expiration_date) VALUES (1, 'Мильтик', '100', '200',1, false, false, '2022-05-03', '2022-05-15'), (2, 'Микус', '150', '300', 1 , true, true, '2022-04-03', '2022-05-03'), (3, 'Миви', '110', '100', 1 , true, false, '2022-03-03', '2022-04-14'), (4, 'Ми', '120', '200', 1, false, true, '2022-03-04', '2022-04-04'), (5, 'Миса', '145', '570', 1, true, false, '2021-03-03', '2021-12-03'), (1, 'Сольтик', '115', '200', 2 , false, false, '2022-05-03', '2022-05-15'), (2, 'Сокус', '155', '300', 2 , true, true, '2022-03-03', '2022-05-03'), (3, 'Сови', '117', '500', 2 , true, false, '2022-03-03', '2022-04-14'), (4, 'Со', '129', '250', 2, false, true, '2022-03-04', '2022-04-04'), (5, 'Сор', '148', '500', 2, true, false, '2021-02-03', '2021-12-03'), (1, 'Мальтик', '210', '200', 3 , false, false, '2022-05-03', '2022-05-15'), (2, 'Макус', '350', '300', 3 , true, true, '2022-01-03', '2022-05-03');
ШАГ 4. Отрабатываем поиск данных
Предлагаю вам сначала самим написать SQL запросы, а потом смотреть решение. Так вы научитесь искать данные на практических задачах и закрепите теоретические знания
№1. Какие компании производители есть в базе?
SELECT * FROM manufacturers;
Выгрузите все столбцы из таблицы manufacturers
№2. Найдите все виды сладостей.
Примечание: виды сладостей в таблице не повторяются
SELECT name FROM public.sweets_types;
№3. В каких городах есть склады?
SELECT DISTINCT city FROM storehouses;
№4. Найти сладости с истекшим срок годности.
Подсказка: используйте для условия переменную current_date.
SELECT name FROM public.sweets WHERE expiration_date
№5. Найти сладости, у которых стоимость от 200 до 300
SELECT * FROM public.sweets WHERE cost>='200' AND cost
Так как в условии задачи не сказано нужно ли включать в выборку стоимость равную 200 и равную 300, то запрос SELECT * FROM public.sweets WHERE cost BETWEEN '200' AND '300'; даст включая стоимость 200 и 300, а запрос SELECT * FROM public.sweets WHERE cost>='200' AND cost
№6. Найти сладости, у которых название начинается на букву М
SELECT * FROM public.sweets WHERE name LIKE 'М%';
№7. Составить список сладостей, отсортированных от А до Я
SELECT * FROM public.sweets ORDER BY name
№8. Найти количество сладостей по каждому виду. В ответе вывести имя вида и количество
SELECT COUNT (s.id), st.name FROM public.sweets s JOIN public.sweets_types st ON s.sweets_types_id = st.id GROUP BY st.name;
№9. Найти виды сладостей, у которых количество больше 2.
SELECT st.name FROM public.sweets s JOIN public.sweets_types st ON s.sweets_types_id = st.id GROUP BY st.name HAVING COUNT (s.id) > 2;
№10. Найти производителей, которые есть в более одном городе
Решение №10
SELECT name FROM public.manufacturers GROUP BY name HAVING COUNT (city) > 1;
№11. В каких городах есть склады со сладостями Мильтик?
Решение №11
SELECT DISTINCT s.city FROM public.storehouses s JOIN public.manufacturers_storehouses ms ON s.id = ms.storehouses_id JOIN public.sweets sw ON sw.manufacturer_id = ms.manufacturers_id WHERE sw.name = 'Мильтик';
№12. Какое максимальное значение идентификатора у сладости?
Решение №12
SELECT MAX(id) FROM public.sweets;
№13. Какое количество сладостей на каждом складе?
Решение №13
SELECT s.name, COUNT (sw.id) FROM public.storehouses s LEFT JOIN public.manufacturers_storehouses ms ON s.id = ms.storehouses_id LEFT JOIN public.sweets sw ON sw.manufacturer_id = ms.manufacturers_id GROUP BY s.name;
Используем LEFT JOIN , чтобы склады с нулевым количеством сладостей попали в выборку
✅ Обучился несложным запросам SQL!
Конечно за ночь весь SQL не изучить, но разобраться с необходимым минимум для несложных задач или собеседования вполне реально. Главное - желание учиться!
А какие каверзные задачки по SQL задавали вам на собеседовании или встречались в вашей работе?
Как изучать SQL в 2023 году
В 2023 году SQL (Structured Query Language) остается одним из самых популярных языков программирования, используемых в области баз данных и аналитики данных. Изучение SQL может быть полезным как для тех, кто только начинает свой путь в IT, так и для опытных профессионалов, которые хотят расширить свои знания и навыки. В этой статье мы рассмотрим несколько советов и ресурсов, которые помогут вам изучать SQL в 2023 году, и оставаться в курсе последних тенденций и изменений в этой области.
Согласно данным сайта Indeed.com, в 2023 году требования к кандидатам в вакансиях, связанных с базами данных и анализом данных, включают знание SQL в качестве обязательного навыка. Некоторые из таких популярных вакансий включают в себя SQL Developer, Data Analyst, Database Administrator, Business Intelligence Analyst и другие. Согласно данным сайта Glassdoor, зарплата специалистов, владеющих навыками работы с SQL, может составлять от $50 000 до $100 000 в год в зависимости от региона и уровня опыта. В связи с этим, изучение SQL может быть полезным для тех, кто хочет улучшить свои шансы на рынке труда и получать высокую заработную плату в IT-сфере.
Roadmap для изучения SQL за 2 месяца
Почему я составил дорожную карту именно на 2 месяца? Естественно, это не осветит желающего изучить SQL всем навыкам, но поможет полностью понимать основные концепции SQL, как с ним работать и для чего он нужен. Пройдя этот путь за 2 месяца вы сможете в дальнейшем продолжать свое обучение SQL и приводить свой сходу сделанный «корабль знаний» превратить в настоящий японский «линкор знаний Ямато» для улучшения вашего скилла.
Вот roadmap для изучения SQL за 2 месяца:
- Неделя 1: Основы SQL
- Изучение базовых концепций SQL, таких как таблицы, столбцы, строки и типы данных
- Создание простых SELECT запросов для извлечения данных из таблицы
- Изучение фильтрации данных с помощью операторов WHERE и LIKE
- Неделя 2: Расширенные SELECT запросы
- Изучение агрегирующих функций, таких как COUNT, SUM, AVG и MAX/MIN
- Изучение GROUP BY и HAVING для группировки и фильтрации данных
- Изучение операторов JOIN для объединения данных из нескольких таблиц
- Неделя 3: Создание и изменение таблиц
- Изучение команды CREATE TABLE для создания новых таблиц
- Изучение команды ALTER TABLE для изменения структуры таблицы
- Изучение команды DROP TABLE для удаления таблицы
- Неделя 4: Изменение и удаление данных
- Изучение команды INSERT для добавления новых строк в таблицу
- Изучение команды UPDATE для изменения существующих строк
- Изучение команды DELETE для удаления строк из таблицы
- Неделя 5: Основы баз данных
- Изучение концепций баз данных, таких как первичные и внешние ключи
- Изучение команды CREATE DATABASE для создания новой базы данных
- Изучение команды USE для выбора базы данных для работы
- Неделя 6: Работа с индексами и ограничениями
- Изучение индексов для ускорения поиска данных в таблице
- Изучение ограничений для защиты данных и обеспечения целостности таблицы
- Неделя 7: Работа с представлениями и хранимыми процедурами
- Изучение представлений для создания виртуальных таблиц на основе запросов
- Изучение хранимых процедур для создания пользовательских функций и процессов
- Неделя 8: Закрепление изученного материала
- Повторение и углубление знаний с помощью практических заданий и проектов
- Подготовка к сертификационным экзаменам, если это необходимо
Следуя этому roadmap, вы сможете изучить пройтись по SQL за 2 месяца и получить достаточно знаний для работы с базами данных и анализа данных. Однако, не забывайте, что практика - ключ к успеху, поэтому не забывайте регулярно выполнять практические задания и проекты для закрепления изученного материала.
Теоретический минимум баз данных
Без теории учить SQL - крайне странное занятие, нужно знать, на чем стоит весь фундамент. Опишу основные концепции баз данных:
Для работы с базами данных необходимо понимать следующие концепции и термины:
- Реляционная модель данных - это модель представления и организации данных в базе данных. В реляционной модели данные хранятся в виде таблиц, состоящих из строк и столбцов. Каждая таблица имеет имя и структуру, определяемую набором столбцов и их типами данных.
- Таблица - это основной объект в реляционной модели данных, который хранит данные в виде строк и столбцов. Каждая таблица имеет уникальное имя и структуру, определяемую набором столбцов и их типами данных. В таблице каждая строка представляет собой запись, а каждый столбец представляет собой конкретное свойство или атрибут объекта.
- Столбец - это одно поле в таблице, которое хранит данные одного типа. Каждый столбец имеет уникальное имя и тип данных, который определяет, какой тип данных может храниться в столбце.
- Строка - это одна запись в таблице, которая содержит данные для каждого столбца. Каждая строка в таблице имеет уникальный идентификатор, который называется ключом. Ключ может быть составным, т.е. может включать несколько столбцов.
- Ключ - это уникальный идентификатор для каждой записи в таблице. Ключ может быть составным, т.е. может включать несколько столбцов, которые вместе обеспечивают уникальность записи в таблице. Ключ используется для связывания данных в разных таблицах и для обеспечения быстрого доступа к данным.
- Внешний ключ - это связь между двумя таблицами, которая используется для связывания данных в этих таблицах. Внешний ключ - это столбец в одной таблице, который ссылается на ключ в другой таблице. Это позволяет связывать данные в разных таблицах и создавать отношения между ними.
- Индекс - это структура данных, которая позволяет быстро находить данные в таблице. Индекс создается для одного или нескольких столбцов в таблице и хранит ссылки на соответствующие записи в таблице. Использование индексов может значительно ускорить выполнение запросов к таблице.
- Запрос - это команда на извлечение данных из таблицы или таблиц в базе данных. Запросы могут включать операции выборки, сортировки, фильтрации и группировки данных. Результатом выполнения запроса является набор данных, который может быть использован для дальнейшей обработки или отображения пользователю.
- SQL - это язык структурированных запросов, который используется для работы с реляционными базами данных. SQL позволяет выполнять операции на создание, изменение и удаление таблиц и данных в них, а также на извлечение данных из таблиц с помощью запросов. SQL является стандартом для работы с реляционными базами данных и используется в большинстве СУБД.
Где и как учить SQL бесплатно?
- SQLZoo (https://sqlzoo.net/) - бесплатный ресурс, который предоставляет интерактивные уроки и задачи для изучения SQL. Уроки начинаются с простых запросов и наращивают сложность по мере продвижения.
- W3Schools SQL (https://www.w3schools.com/sql/) - популярный сайт для изучения SQL и других языков программирования. Содержит множество уроков и примеров с возможностью практического применения.
- Codecademy SQL (https://www.codecademy.com/learn/learn-sql) - интерактивный курс для изучения SQL с возможностью практического применения на практике.
- SQLBolt (https://sqlbolt.com/) - бесплатный ресурс, который предоставляет уроки и задачи для начинающих и продвинутых пользователей SQL.
- Khan Academy SQL (https://www.khanacademy.org/computing/computer-programming/sql) - бесплатный курс SQL, предоставляющий уроки и задачи для изучения языка.
- Udacity SQL (https://www.udacity.com/course/sql-for-data-analysis--ud198) - курс SQL от Udacity, который научит Вас основам языка SQL и его применению в анализе данных.
- LearnSQL (https://learnsql.com/) - платный ресурс для изучения SQL. Содержит большое количество уроков и практических заданий.
- SQLCourse (http://www.sqlcourse.com/) - бесплатный ресурс для изучения SQL. Содержит уроки, задания и тесты для проверки знаний.
- SQL Tutorial (https://www.sql-tutorial.ru/) - бесплатный ресурс для изучения SQL на русском языке. Содержит уроки и задания для практического применения.
- Mode Analytics SQL Tutorial (https://mode.com/sql-tutorial/) - бесплатный курс SQL от Mode Analytics, который научит Вас базовым и продвинутым навыкам работы с языком SQL.
- SQL Exercises (https://www.sql-ex.ru/) - бесплатный ресурс с задачами и упражнениями для изучения SQL. Содержит задания для практического применения на практике.
- SQL Fiddle (http://sqlfiddle.com/) - бесплатный онлайн-редактор SQL, который позволяет создавать, тестировать и отлаживать SQL-запросы.
- Learn SQL the Hard Way (https://learncodethehardway.org/sql/) - книга для изучения SQL, содержащая уроки и задания для практической работы.
- SQL Zoo (https://www.sqlzoo.net/wiki/AdventureWorks) - бесплатный ресурс для изучения SQL, содержащий уроки и задания на основе базы данных AdventureWorks.
- DataCamp SQL (https://www.datacamp.com/courses/intro-to-sql-for-data-science) - курс SQL от DataCamp, который научит Вас основам языка SQL и его применению в анализе данных. Содержит уроки и практические задания на практике.
Хорошие книги для изучения SQL
Вот несколько хороших книг на русском языке для изучения SQL:
- "SQL для чайников" от Алана Бьюли - это популярная книга для начинающих, которая предлагает читателям основы SQL и практические примеры.
- "SQL - язык запросов к базам данных" от А. А. Степанова - это книга, содержащая основы SQL и примеры запросов на языке SQL.
- "SQL. Полное руководство" от Александра Кузнецова - это книга, которая предлагает обширное руководство по SQL, включая основы языка, запросы, проектирование баз данных и оптимизацию производительности.
- " SQL. Сборник рецептов. 2-е изд." Автор: Роберт де Грааф, Энтони Молинаро - Рассмотрены готовые рецепты для решения практических задач при работе с СУБД Oracle, DB2, SQL Server, MySQL и PostgreSQL.
Куда двигаться дальше?
"Если ты не двигаешься вперед, то ты двигаешься назад. Никогда не останавливайся на достигнутом." - Tom Clancy
Если вы считаете, что исчерпали для себя знания в SQL, предлагаю вам заняться работой над этими скиллами:
Некоторые из самых сложных скиллов в SQL включают:
- Оптимизация запросов - это требует знания структуры таблиц и индексов, а также понимания того, как оптимизировать запросы для улучшения производительности.
- Работа с большими объемами данных - это может включать в себя управление партиционированием, кластеризацией и другими методами для обработки и анализа больших объемов данных.
- Использование аналитических функций - это может включать в себя использование функций, таких как RANK, ROW_NUMBER, LAG и LEAD, для выполнения сложных аналитических запросов.
- Работа с временными рядами данных - это может включать в себя использование функций временных рядов, таких как DATE_TRUNC, DATE_PART и WINDOW функций, для анализа и управления временными рядами данных.
- Работа с географическими данными - это может включать в себя использование специальных функций, таких как ST_Distance, ST_Within и ST_Intersection, для анализа и управления географическими данными.
- Работа с хранилищами данных - это может включать в себя использование функций ETL (Extract, Transform, Load) для извлечения, преобразования и загрузки данных в хранилища данных.
- Работа с процедурами и триггерами - это может включать в себя создание и управление процедурами и триггерами для автоматизации задач и обеспечения целостности данных.
- Работа с реляционной алгеброй - это может включать в себя использование различных операторов, таких как JOIN, UNION, INTERSECT и EXCEPT, для выполнения сложных запросов.
- Работа с индексами - это может включать в себя создание и управление индексами для улучшения производительности запросов.
- Работа с безопасностью данных - это может включать в себя управление доступом к данным и защиту данных от несанкционированного доступа.
Заключение
В заключение, изучение SQL в 2023 году - это ключевой навык для любого, кто работает с данными. Сегодня SQL является одним из наиболее распространенных языков для работы с реляционными базами данных, и спрос на специалистов, обладающих навыками работы с SQL, по-прежнему высок.