0: Привет, я, Саша, работаю ведущим бизнес аналитиком в компании вайлдберрис и развиваю собственную онлайн школу, в которой мы помогаем, как и новичкам, осваивать профессию бизнеса, системного аналитика, так и опытным аналитикам прокачивать свои скиллы знания и повышать
1: Свою зарплату в 2, а то и в 3 раза. Для тех, кто только начинает развиваться в направлении бизнес системного анализа. Для вас я подготовил большую статью, в которой поэтапно рассказал, какие основные важные моменты вам нужно будет
2: Честь при освоении профессии, подготовки к собеседованиям и в дальнейшем уже прохождении, да, этих собеседований. Статью вы можете забрать по ссылке в описании под этим роликом. В нашей школе есть лекции спикеров, в рамках которых наши
3: Ученики наши менторы приходят и рассказывают про различные инструменты аналитиков, продакт менеджеров, проджект менеджеров и других смежных профессий. Мы решили делиться некоторыми такими лекциями с вами, чтобы вы могли понять,
4: Для себя, да, насколько вам вообще интересна история с бизнес системным анализом? Насколько вам интересно развиваться в этой профессии, либо же точечно прокачать какие-то инструменты, какие-то темы, если вы там уже являетесь действующим аналитиком, в этом
5: Ролике Арпина бывшая ученица. Сейчас она уже является ментором в нашей школе, расскажет вам про основы базы данных, что такое субд и что такое вообще эскьюэль. Да и как правильно формировать эскюэль запросы по
6: Различному там бизнес контексту, какие вообще бывают эскюэль, операторы, для чего он нужен и так далее. Приятного просмотра.
7: И мы приступим, потому что материала на самом деле много. По базам данных. Я выбрала такую тему, потому что у нас база данных субд и скель, то есть все вместе, потому что они как бы неразрывно связаны. И это такая, ну, 1 из основополагающих тем, как для бизнеса.
8: Аналитика, так и для системного аналитика. Вот, поэтому хочется по итогу, наверное, этой лекции, чтобы у всех как-то структурировано вся вот эта информация сохранилась. Я знаю, что у многих ребят эскьюэль вообще там
9: В ниве, в университете там иногда есть. Ну это вам прям супер повезло, потому что у меня такого не было. И я думаю, что если понять, как писать простые запросы, понять лексику, то дальше уже можно себя развивать. То есть это такой больше практи.
10: Тически навык тренироваться уже средние запросы писать там сложные и так далее. Вот. Ну, я думаю, что можем перейти уже, собственно, к теме.
11: Так, у нас 1 слайд, мы остановимся прям на понятии, что такое база данных. У вас как раз, мне кажется, эти знания свежи. У вас недавно была лекция у многих, но просто хочу повторить, что вообще такое база данных. Да, это набор
12: Информации, которая хранится, упорядочена, но не всегда упорядочено в электронном виде. 1 из таких супер вопросов тоже на собеседовании. Какие бывают типы, типы баз данных. Вот. Ну, супер. Просто если мы
13: Ответим. Революционные, нереволюционные, но можно ответить чуть покруче. То есть, да, у нас есть революционная модель базы данных, есть нереволюционная, но в неё входит как бы несколько типов. Это графовые, там документы, ориентир.
14: Ключ значения колоночные, иерархические. Если вы так ответите, их на самом деле очень много, то это как бы будет круто, потому что революционные нереволюционные, это больше по типу, как эти данные хранятся у нас. Вот
15: Собственно, тут как бы картиночка такая простая. То есть если у нас революционная модель, то у нас все тут по красоте, все в табличном значении, да, и упорядоченно. Если у нас не революционная база данных, то она может храниться или по группам, или по
16: Папка или вообще как по кайфу. Вот ещё хочу остановиться прям на понятии. То есть это нам в дальнейшем пригодится. Эскьюэль. Это у нас язык структурированных запросов, который помогает нам обращаться к исключительно корреляционной ба.
17: Данных и вытягивать из неё какие-то значения. Удалять, изменять неважно, но Эскель это уже подход к управлению базой данных, которая не предполагает революционную модель в принципе.
18: 0. Вообще база данных это для таких целей. Если у нас очень большой объём, например, информации, если мы изначально решили, что нам необязательно данные хранить в структурированном виде, то есть мы можем
19: Хранить там в полуструктурированной виде и так далее так, ещё 1 понятие, без которого мы вообще ну не сможем приступить к sql это субд, субд это аббревиатура, я думаю, что вы тоже знаете система управления.
20: Базами данных в целом, вот, не знаю, как бы пыта, хотела вот просто объяснить, думала, как это объяснить. И вот придумала, что у нас есть база данных, там хранится информация сама по себе. Ну, она
21: Ничего не даёт. То есть она просто будет там лежать и, в принципе, чтобы её туда положить, нам нужно субд. То есть субд это такой инструмент, который помогает нам манипулировать вообще разными способами базы данных. То есть мы можем изменяя
22: Обновлять, удалять, в принципе, создавать что-то новое. Поэтому эти понятия неразрывны, да, если мы там на стадии, условно, проектирования базы данных, мы сразу уже думаем, какая у нас будет субд. Вот.
23: В основном, я думаю, что этим занимаются архитекторы, но если архитектора нет на проекте, то системный аналитик. Ну вот, например, у нас на проекте этим, этим занимаются 2 человека и системный аналитик, и архитектор.
24: В целом, есть ещё такая история, что, да, вы можете же прийти на проект. Ну, скорее всего, у вас не будет прям с нуля базы данных и уже есть какая-то существующая, там уже есть какая-то субд, например, вот у вас революционная модель и, допустим, постгрес и вам
25: Просто нужно в ней работать, но не знаю, бывают ситуации, когда нужно добавить какую-то сущность или наоборот, удалить, или наоборот, бывает переход с 1 базы данных на другую. Если у нас, допустим, не знаю, монолит, раздел разделится на микросервисы и так далее.
26: Но это уже другая история. Вот здесь я выделила некоторые субд, но тут как бы, на что мы обратим внимание внизу это реляционные субд наверху это не реляционные субд, реляционные
27: Ну, тоже думаю, что вы там часто слышали. Это вот такие самые популярные постгрест майскюэль оракл. То есть, чем они отличаются в целом. Ну, 1 из главных отличий, это цена все-таки при выборе, плюс там объём
28: Хранимой информации. В целом лексика может чуть чуть различаться, но не прям сильно. То есть, допустим, вы там умеете на её писать запросы, но пришли на проект, у вас там эскьюэль, ну, не надо говорить, я не знаю. То есть вы, если уже в целом понимаете,
29: Как строятся запросы просто чуть чуть там посмотреть какие-то различия в целом это норм. Вот. И наверху у нас получается, но Эскель субд, то есть не революционный, здесь прям
30: Тоже. Это самые популярные mongodb redis cassandra. Вот на следующем слайде мы разберём прям отдельно нереволюционные и какая, к какому типу относится вот здесь. Ой, подождите.
31: Она че то обрезала и, короче тут у меня была такая картиночка. Ну давайте я вам расскажу просто вообще смысл субд. Вот например, мы как пользователь хотим добавить, не знаю, какой-то новый товар в нашу базу данных.
32: Мы обращаемся к субд, то есть, условно мы там спрашиваем, можно добавить какую-то запись в наш субд, субд у нас спрашивает, да, кто мы, то есть, есть ли у нас на это права, мы авторизовываемся, она нас считывает, например, там, условно как
33: Разработчикам и говорит, да, типа, окей, давай записывай, мы там говорим, ну тут не видно, ну, как бы мы говорим, запиши, не знаю, допустим, там товар банан, он такой окей, и записывает его, и это все посредством вот как раз.
34: Языка эскьюэль, который мы разберём и сохраняет его. То есть все. У нас в базе данных появился банан. Круто, классно. Вот без субд он бы там не появился. Вот, может есть тут какие-то вопросы? Или вот мы закончим с блоком про bass
35: Данных. И потом, как вот вы хотите, да, ребят, смотрите вопросы, как, как обычно пишем либо в чат, либо поднимаем, руки задаём и там будет отображаться.
36: Угу. Ну тогда давайте продолжим.
37: Вот как обещала, но эскюэль, такой интересный факт, что, но эскьюэль, да, это переводится как не только эскьюэль, то есть прям думать, что это, ну вот, 100% не революционная, нет, она просто не только революционная, может,
38: Быть, то есть в целом тут нету такого правила, что у нас данные обязаны храниться в каком-то структурированном виде в таблице и так далее. То есть вот здесь вот на картинке это такие плюс минус.
39: Основные вот тоже на собеседованиях часто спрашивают, вот в каком формате, да, вы можете, там никогда вы не работали в нереволюционных или просто не сталкивались, но просто понимание, вот по какому принципу они состоят, этого будет доста.
40: Достаточно. Ну и какая субд к ним относится? По крайней мере, у меня вот как раз на собеседованиях могли спросить, ну а графовые типа базы данных, вот по какому принципу они структурированы или не структурированы и, допустим, какую-нибудь самую популярную субд назвать этого
41: Было достаточно. Давайте прям тогда по порядку рассмотрим графовую базу данных, которая относится к нереволюционной модели баз данных. Она представляет из себя такие узлы, то есть сущности это
42: У нас узлы будут, а отношения между сущностями у нас будут рёбрами. И вот она вот в таком хаотичном виде, может быть как очень большая, допустим, у нас есть какой-то узел и от него очень, очень много разных других
43: Узлов, которые соединены отношениями, да, то есть рёбрами, там 1 из самых популярных графовых субд, это нефо джи, там, amazon, нептун, ну,
44: В принципе, вот я их внизу здесь выделила, можно 3, 4 там запомнить и, в принципе, как-то апеллировать на собеседованиях. Здесь из таких примеров, наверное, вот чаще всего, чтобы просто вот понять.
45: Наглядно это может быть, например, какой-нибудь фейсбук или просто социальная сеть, то есть узел, да, у нас это пользователь, и от него уже могут идти там, я не знаю, его друзья, там его там, не знаю, музыка группы, то есть и это такая большая большая связь, то есть это
46: Тоже друг может быть связан с другими какими-то людьми. То есть на примере вот любой социальной сети, в принципе можно такой пример привести дальше у нас идёт ключ значения тут
47: Плюс минус все понятно, потому что в названии уже заложено. У нас есть какие-то, ну, данные, да, какие-то значения, которые имеют свой уникальный идентификатор, как ключ, и они вот таким образом все записаны. То есть, например, здесь какая
48: То какие-то данные у них свой определённый ключ, здесь какие-то данные, у них свой определённый ключ и так далее. Здесь из таких вот популярных это оракал 0 редис как раз, да.
49: Да, и все. Вот я обычно говорю, просто редис, вот дальше у нас документоориентированная, документоориентированная, тут из такого основного. Надо запомнить, что данные у нас хранятся в каком-нибудь текстовом.
50: Формате, например, в джесоне или в эксемельки. И это как такая иерархическая, как древо. Знаете, допустим, у нас есть папка дальше какая-то подпапка здесь из приколов, да, что неважно, что мы внутрь этих папок
51: Как бы засунем, тут не обязательно вот этот структурированный вид, и это позволяет нам как бы очень большой объём информации хранить и не париться на насчёт там как раз структурирования. Вот, ну, здесь, как бы там
52: Самая популярная это как раз монгодиби. Вот если вы её скажете вообще супер, так и следующая у нас колоночная база данных, она тоже выглядит у нас как таблица. У неё есть строки столбцы, но здесь мы данные можем вносить как бы
53: Не связаны между собой в любую колонку, там в любую строку, в целом, как бы, ну, в целом похоже на революционную. Просто нам без разницы, куда вносить данные. Вот это нам поможет быстрее обрабатывать.
54: Сэкономить место на диске и так далее. То есть мы как бы все равно должны понимать, что база данных это всегда про супер
55: Так скажем, большой объём информации. И тут уже по запросу, то есть, если у нас очень много информации, может, нам и не нужно париться, чтобы это все как-то структурировать в таблице и реляционную модель применять из коло.
56: Получается у нас кассандра или google big table, вот, и здесь, внизу, просто для примера у нас революционные с революционными для нас. Да, наверное, это больше понятно, потому что здесь
57: Есть таблица каждой таблицы, сущность атрибут тоже мы рассмотрим это алаб. Это короче, если простым языком это просто какой-то новый метод тоже революционной модели, это вообще
58: Алаб, это про методологию анализа данных. Вот. То есть есть ещё, кстати, можете почитать клик хаус это такая колоночная, то есть она тоже как бы революционная, просто данные хранятся не в таблице, а в колон.
59: Вот здесь есть какие-то вопросы, потому что к но, Эскель, мы больше вроде не собираемся возвращаться.
60: А вот насколько часто с носкл работаешь? Я вообще не работала с, но и я не видела пока людей, на самом деле, у которых они были. Но я, наверное, больше топлю за то, что если вы придёте, а там скажут, у нас 0 база данны.
61: Ну, не надо говорить, что вы не шарите, если вы скажете, ну, я понимаю, как, как они организованы. Я понимаю, какие у них есть субд, то есть, тут больше про то, что, да, наверное, чуть чуть будет сложно с субд работать, так, как вы знаете только
62: Но там есть тоже своя лексика, она там все заложено на английском языке. Вы можете сказать, ну мне нужно там какое-то время разобраться. То есть я понимаю.
63: Её логику, я понимаю, смысл и все, ну или, не знаю, попросить помощи у кого-нибудь. Вот, ну, в целом, как бы не пугаться её, я так думаю, но я не работала, у меня на проекте постгрес, обычная революционная база данных. Вот.
64: Чего и вам желаю. Вот на самом деле. Так, ну если вопросов нет, давайте к самой приятной части, к революционной базе данных. Она самая понятная вообще такая классная, значит революционная база данных.
65: Тоже, повторю, у нас данные хранятся в структурированном виде в виде набора таблиц. Таблицы у нас называются отношениями или сущностями. Есть у нас столбцы, строки и и все.
66: Вот здесь, наверное, даже вы мне больше расскажете. Вот, потому что у вас была недавно лекция. Просто хочу, наверное, повторить. У нас, например, ну, тут супер простая как бы, модель. У нас есть, например, 3 сущности покупатели, покуп.
67: И товары между собой, они связаны сущностями. Вот, кстати, вопрос.
68: Каким отношением связаны у нас покупатели и товары?
69: Какой связью можете в чат написать?
70: Ну нет, не 1 ко многим покупатели товарные.
71: Да, многие ко многим, то есть у покупателей может быть несколько товаров, у товаров, может быть, несколько покупателей. Здесь как раз, ну, у нас многие ко многим всегда реализуются через вспомогательную таблицу. Будем считать, что вот это вот покупки, да, грубо говоря.
72: Это наша вспомогательная таблица. Что ещё? Ну давайте тоже повзаимодействуем с вами, что здесь является атрибутами. Можете просто на примере таблицы покупателя, что является атрибутами у сущности поку.
73: Можете с микрофоном.
74: Можете писать.
75: Идентификатор, имя, фамилия, дата. Да, да, это у нас атрибуты. Угу. Что является первичным ключом, в сущности, покупателя, это идентификатор. Угу. Да. Так.
76: Вот в покупках у нас что будет являться первичным, а что вторичным ключом? Первичный это идентификатор, а вторичных ключа тут 2, это ключ покупателя и ключ товара. А зачем вот в целом нам вообще нужны вторичные клю.
77: Почему мы не можем просто с первичными тусоваться?
78: Ну, просто это, это такое на будущее вопрос. Вот, типа, может, кто знает, зачем, вот вообще нам нужны вторичные ключи?
79: Угу. Да, связывать 1 сущность, другую посредством вот как раз вторичного ключа. То есть где-то этот вторичный ключ является первичным, в другой сущности, и за счёт этого мы будем ссылаться, да? Правильно? Вообще, вот.
80: Умные все. Так и здесь я тоже для примера раскрыла просто, например, таблицу покупателя. Вот так вот, не знаю, вы видели вот так вот, вот здесь у нас получается
81: Всегда есть идентификатор, имя, фамилия, дата рождения. Это у нас атрибуты, покупатель это у нас сущность, да, сущность, таблица и тоже такое понятие. Не знаю, пригодится или нет, но просто понимать, что такое кортеж. Кортеж, это под
82: Все атрибуты вот как бы в строку, да, то есть если нам нужно выписать кортеж, это у нас будет 1 запятая Илья, запятая, Иванов и запятая дата рождения. Это будет кортеж вот здесь вроде давайте посмотрим все.
83: Вроде мы все, ну и отношение, да, повторим, у нас может быть 1 к 1, 1 ко многим, многие ко многим, многие ко многим у нас реализуются всегда через вспомогательную таблицу.
84: Здесь понятно ли все или нет, и мы приступим к нормализации.
85: Ага, супер. Так, нормализация меня в своё время на собеседованиях. Ну, просто мучили. На самом деле этим вопросом я уже, я не знаю, осталось только реально его понять, чтобы уже не так.
86: Бояться этого слова. Вообще у нас есть нормализация и денормализация. Нормализация. Это когда мы пытаемся все данные в нашей базе данных привести к normal.
87: Форме, чтобы повысить эффективность хранения и убрать избыточность. То есть, смотрите, допустим, мы приходим на проект, ну, такой пример условно, даже с нуля, допустим, но нам нужно спроектировать базу данных. Вот изна.
88: Изначально, когда мы просто думаем, какие там атрибуты, какие сущности будут, ну, выписываем, да, например, там с заказчиком поговорили и выписываем. У нас условно вот это вот просто данные, это как бы нулевая, нулевая, нормальная форма, чтобы нам её привести.
89: К 1 и последующей, ко 2. Тут, как бы правило, чтобы привести ко 2 форме база данных должна обязательно быть уже в 1, чтобы привести к 3, она обязательно должна быть во 2 вообще нормальных форм у нас 6. И ещё есть такие промежут.
90: Типа бойса, кодда и домена ключевая. Не вижу смысла прям на них останавливаться, потому что на самом деле на практике достаточно привести к 4 нормальной форме и спокойно работать. То есть, опять же я не встре.
91: Таких примеров, чтобы люди парились и приводили к 6, потому что это про время, про человеческий труд и про деньги, естественно, потому что, ну, всем как бы хочется уже работать. И 4 форма она даст как раз
92: Нормально, спокойно поработать с базой данных, уже как бы учитывая то, что мы привели эти данные в хорошую, такую нормальную форму.
93: Давайте прям по порядку на примерах рассмотрим.
94: Почему я не могу приближать? Меня это бесит. Не расстраивайся. Не, ну это нормально. Или только я не могу приближать. Ну ладно, зумы эти ваши. Так вот, я надеюсь, что вам видно.
95: 1 нормальная форма. Здесь прям все супер понятно. У нас есть, например, сущность покупателя, и мы пишем туда фио. Вот кстати, когда домашки делали, я видела, что
96: Как аттрибут, да, часто пишут фио. Это уже не 1 нормальная форма. То есть нам нужно прям написать фамилия, 1 атрибут, имя, там 2 атрибут и отчество, 3 атрибут. То есть у нас не должно быть составных вообще.
97: Каких данных? Составные это которые более 1. Вот поэтому мы разбиваем это просто на 3 атрибута. Имя, отчество и фамилия здесь как бы, я думаю, что все легко во 2 нормальной
98: Форме тоже она достаточно Лёгкая. Здесь нужно запомнить, что у каждой записи в базе данных должен быть первичный ключ. Например, у нас есть там таблица покупателей, мы сделали имя, фамилию, отчество, все сделали и все. Вот мы обязательно
99: Должны добавить ещё id покупателя. Ну, конкретно в этом случае, да, номер чека это и есть id, потому что он как бы уникальный, не повторяющийся, но как будто я бы ещё добавила id на всякий случай вдруг когда-нибудь не знаю, номер чека повторит.
100: 3 нормальная форма. Так здесь в записи не должно быть столбцов с неключевыми значениями, которые зависят от других неключевых значений, что это значит? Вот у нас есть личный номер сотрудни.
101: Который является id сотрудника, да, его должность, его отдел и руководитель отдела. Вот, например, по 1 3
102: Столбцам, так скажем, у меня нет вопросов, да, то есть вся эта информация относится исключительно к id сотрудника. То есть у нас должность относится к id сотрудника, и его отдел тоже относится. Но руководитель отдела у нас зависит от отдела, руководитель отдела у нас
103: Не зависит от личного номера сотрудника. То есть здесь как бы про зависимость вот этой вот 4 аттрибута, это зависимость от как бы от
104: Дело, а не от первичного ключа. Вот не знаю, насколько понятно, вот как-нибудь там тегните, потому что здесь суть в том, что мы должны разделить таблицу, мы её должны оставить. Id сотрудника до
105: Должность отдел, это у нас 1 сущность будет и другая у нас будет руководитель отдела, и там уже мы можем добавить как бы вторичный ключ. То есть они не могут быть вместе вообще как бы такой лайфхак нормализации это в основном все про разделение таблиц, то есть
106: Когда мы пытаемся все в 1 совместить, нормализация нам говорит, ну давай создадим несколько разных табличек, чтобы было как бы удобно. Вот.
107: И 4. Ну, здесь вообще, кстати, ничего не видно. Давайте просто расскажу. В 4 нормальной форме не должно тоже быть многозначных зависимостей. То есть у нас там была
108: Таблица, где есть имя, отдел, должность и оклад. То есть смотрите, у нас получается оклад, он зависит от должности или от отдела он зависит, ну тоже непонятно. То есть это какая-то
109: Лишняя в нашем случае зависимость, которую, чтобы к ней как бы подступиться, нужно сначала посмотреть отдел, потом должность, имя, потому что у нас программисты, да, допустим, могут же разную зарплату получать. То есть странно.
110: Прикреплять там условно оклад к отделу, например. Поэтому мы эту табличку тоже просто разделяем на сотрудники, где будет просто имя, отдел и должность, и на зарплату, где будет просто имя и оклад, потому что оклад у нас зави.
111: Как бы от конкретного человека, а не от его должности или отдела. Вот, ну вот скажите, здесь понятно или нет, надеюсь, да?
112: У кого-то было задание привести базу данных к 6 нормальной форме. Ну блин, это не круто. Так, ну если здесь все понятно, да, то есть просто тезисно. Нормализация нам нужна для того, чтобы избавиться от избыточности. Нормализация нам
113: Нужна в основном мы разделяем таблицы, да, то есть 1 информация хранится, в 1 сущности, другая информация хранится. В другой сущности у нас не должно быть. Давайте прям с самого начала у нас не должно быть составных атрибутов.
114: У нас у всех должен быть первичный ключ, у нас не должно быть многозначных зависимостей, то есть зависимость у нас должна быть только от первичного ключа своей таблицы.
115: Все, наконец-таки мы можем про эскьюэль поговорить, потому что база данных, давайте тут чуть лирическое отступление вообще. Зачем это? Я вот думала всегда, зачем аналитику, бизнес аналитику нужен? Эскьюэль? Это же что-то уже
116: На программисти еском языке на самом деле нет. Эскель нужен, мне кажется, всем, если вы его знаете, это круто. Вот вам сразу плюс вайб, потому что, смотрите, даже на этапе, опять же, да, вот проектирования там
117: Программу вы рисуете или вы пришли на проект, а там уже, ну вот зачастую вы пришли на проект, там уже есть база данных, но в процессе работы вы понимаете, что надо добавить, например, какую-то сущность или, наоборот, её удалить. Вы
118: Заходите в тестовую какую-нибудь, в тестовую, да, какую-нибудь базу данных или в песочницу, там называ, то есть вам дают, там, не знаю, администратора условно. И вы хотите перед тем, как что-то вообще удалять или изменять, посмотреть, как это все работает, потому что это же
119: Вы не можете просто удалить. Возможно это какое-то отношение между сущностями. Возможно вы там удалите 1 атрибут и у вас все поедет. Ну то есть это больше для того, чтобы понимать, как эта база данных потом будет выглядеть. То есть перед тем,
120: Как что-то добавлять и удалять. Вы можете зайти ручками, написать несколько запросов и посмотреть, как вообще эта база данных работает. Но это такой из самых простых вариантов. Зачем он нам нужен, системному аналитику? Я думаю, что, ну, Такому уже выше
121: Да, наверное, это как раз при также там, архитектуре, например, или когда мы там с нуля проектируем, тоже понимать вообще, как это все работает.
122: Здесь я хочу остановиться тоже вот у меня этот вопрос, например, был на собеседованиях или вот может, если вы в резюме часто видите, допустим, пишет Эскель, и в скобочках вот эти вот аббревиатуры типа dd d эмэль, то есть
123: Что это значит? У эскьюэль есть вообще 4 типа операторов. Я тут 3 написала, про 4 просто расскажу, потому что он, как бы, по мне, сейчас не супер важный, чтобы заострять на нём внимание. 1 тип операторов.
124: Здесь это группа команд, которые используются для создания, изменения и удаления, короче, простым языком. Это вот если у нас нету ничего, допустим, таблицы сущности, нету, она нам
125: Поможет создать внутри что-то изменить или drop удалить. Вот. И ещё она для индексов, для предоставления каких-нибудь схем. То есть, грубо говоря, это такой 1 тип операторов, который поможет нам создать
126: Например, табличку. Ну, может вы там слышали, вот там, не знаю, крейт тейбл, все это вот мы создали табличку, там назвали её, как-то все, у нас таблица создана. Дальше у нас идёт димэль, это вот как раз с кото
127: Которым мы чаще всего, скорее всего, будем взаимодействовать. Это про манипуляции как раз с данными. Здесь я, естественно, не все выделила. Просто вот такие основные, это у нас селект, инсерт, Инту делит апдейт, то есть здесь
128: Мы тоже можем удалять данные, обновлять данные селект. Это вообще у нас всегда про выборку данных. То есть это то, что мы вот чаще всего будем взаимодействовать с данными через как раз вот этот тип операторов.
129: Это вообще про предоставление каких-то прав. То есть это больше про контроль над базами данных. В основном я думаю, что ими будут владеть как раз разработчики, которые нашу базу данных сделают. Допустим, грант это предоставление.
130: Право, там пользователю рёвок это, например, отозвать права тоже. Мы не будем прям супер останавливаться. И вот 4, это тисиэль, это про вообще про транзакции, про взаимодействие с транзакциями и так далее, но как бы не хочу
131: Хочу вот вам засорять этим мозг, потому что я думаю, что аналитику это не прям супер, как бы нужно вот эти 3, да, как бы они нужны понимать, чем они отличаются и какой конкретно оператор какому точнее, да, какой
132: Запрос относится к конкретному оператору. И здесь ещё нужно обратить внимание на такую тему, как типы данных. Я думаю, что тоже вы часто вот сталкивались с ними, есть в интернете куча всяких таблиц.
133: Помощников. Я не думаю, что прям обязательно их наизусть знать, просто условно для проектирования. У нас же есть там концептуальная физическая модель ер, диаграммы. И вот уже когда мы последнюю диаграмму, да, так скажем,
134: Больше в таком виде рисуем, как бы для разработчиков. Мы должны указать ещё типы данных, сами прописать, какие они бывают. Ну, тут из самых таких популярных инт, например, у нас используется зачастую для идентифи.
135: Torro для айдишников как раз потому, что это просто целое число. Вот дальше есть, например, char varchar. Это вот символьные, например, когда имя, фамилию, мы можем написать varchar и в скобочках там 10, значит у нас та
136: 10 символов будет все, что касается дат.
137: Beat это вот там Булева или логические? Да нет, ложь, истина. Вот это вот все текст. Это, например, для поля условно комментарий какой-нибудь просто текст. Давайте здесь вопросы есть или нет?
138: Ага. Чем отличается 1 тип оператора от 2? Смотрите, вот 1 тип оператора он у нас создаёт. То есть он больше про, про изменение структуры самой таблицы, типа.
139: Сущности, а вот 2 тип данных, да, про манипуляции, он про то, что мы будем с этими данными делать. То есть, как бы, грубо говоря, 1 тип, он создаст нам таблицу, удалит нам таблицу.
140: И изменит что-то в таблице название, например. A2 уже то, что внутри этой таблицы находится. То есть мы будем именно вытягивать данные из этой таблицы за счёт вот 2 вот этого типа операторов.
141: Насколько понятно.
142: Тут какой-то мем.
143: Ладно, потом смотрите, я тут добавлю, типа, по сути, вот create alter дроп, это, если я не ошибаюсь, это сразу про сущности целые, да, идёт речь, типа, create new table, там, drop, нью тейбл и так далее, да?
144: То есть, а все, что во 2 идёт, которое манипуле лангвич, это уже работа с экземплярами внутри этой таблицы. То есть вы сможете с помощью delete функции удалить, целую таблицу, вы сможете удалить.
145: Только экземпляр какой-то конкретный в этой таблице. Вот, ну вроде так вот, кстати, да, мы потом, я хочу прям отдельно вот заострить внимание, потом чем отличается, то есть drop delete и ещё есть транкейт, то есть это все про удалить, но они
146: Разному будут работать. Вот. Но это уже в конце мы, типа, разберём тоже такой частый вопрос на собесах. Тогда к следующему, да, а насколько часто обращаешься к эскюэль? Сложный запрос пиш Джой на оконные функции Джой.
147: Да, мы их тоже разберём потому что ну как бы я считаю что простой запрос это select from where это вот простой запрос агрегатные функции джоины что там ещё может быть подзапросы это
148: Типа, средний такой уровень, оконные функции, например, для меня это уже что-то посложнее. Вот я к оконным пока не обращалась, к эскэль исключительно обращаюсь. Вот, например, я перешла на проект по строительству, да, опять же, повторюсь, там постгрес. И мне вот дали
149: Систему дали доступ к базе данных. Просто посмотреть уже написанные скрипты, что как работает и что за счёт чего тянется. Ну тут как раз джоины помогают понять вообще связь между таблицами.
150: Пока мне эскюэль нужен, просто чтобы понять уже написанную систему, я пришла, она уже готова. Мне просто нужно разобраться в ней, посидеть и повыдёргивать какие-нибудь запросы.
151: Так я думаю, что можно дальше.
152: Кстати, вот тут примеры прям разберём, почему, как отличаются. Да, вот 1 тип, как раз операторов от 2. Я выписала такой базовый синтаксис, который я бы хотела прям разобрать с вами, то есть такой основной
153: Вот это база, вот если вы его знаете, ну классно, вот давайте повторим, если нет, я думаю, что надо запомнить все, все их. Вот, потому что они как бы все равно в какой-то степени пригодятся. Начнём вот как раз с 1 получается, кри.
154: Insert update и delete это вот 1 тип операторов на примерах здесь прям уже такой написанный запрос супер Лёгкий значит мы сначала пишем крейт, то есть создать дальше.
155: Пишем таблицу обязательно. Ну то есть create table это вот как бы
156: Такой базовый синтаксис. Дальше мы пишем название таблицы месяца. Дальше мы открываем скобки и пишем, какие атрибуты должны быть в этой таблице. То есть мы просто сейчас представляем, что у нас вообще ничего нет и мы просто хотим создать такую шап.
157: Пустую, не знаю короче, пустышку просто таблицу создать и мы её должны как бы наполнить какими-то атрибутами мы открываем скобки, пишем id. Дальше мы пишем int это как раз тип данных да, который мы выбираем. Инт, это у нас c
158: Число для айдишников потом мы пишем запятая нейм, значит мы пишем варчар 10, то есть у нас 10 символов будет и пишем дни и тоже int, потому что ну дни у нас 1, 2, 3, 4 да, это как бы тоже целое число, все у нас.
159: Создалась просто визуализируем. У нас создалась просто таблица месяца, сущность месяца с атрибутами id имя и дни. Теперь мы хотим эту таблицу как-то наполнить уже, ну какими-то данными у нас для этого есть
160: Insert insert у нас всегда как бы в такой связке работает Валюс это что-то типа ценность данных, да, то есть что мы туда будем наполнять, мы пишем инсерт Инту. Дальше обязательно мы ука.
161: Указываем, в какой таблице мы будем вносить это в таблице месяца, которую мы создали до этого. Дальше мы пишем вальюс, да, вот эту вот ценность, как бы этой таблицы, этих данных открываем скобки и подряд, как мы запи.
162: Писывали айди имя и дни также подряд. Заполняем 1, дальше месяц, январь и 31 день. Все. То есть у нас теперь таблица наполнилась, ну как бы 1. Так.
163: Скажем, 1 строкой данных, что у нас вот есть 1 ой idea 1, короче, январь 31 день. Здесь, понятно.
164: Ну, думаю, здесь понятно. Вот апдейт мы рассмотрим чуть на другом примере. Вот представьте, у нас есть какой-нибудь база данных, какого-нибудь кинопоиска, например, и там есть
165: Сущность это сериалы. У нас есть аттрибут такой, как жанр, и какие-то разные разные сериалы. И мы, например, пришли и видим, что у нас игра престолов вообще в жанре, не знаю, комедии.
166: Находится. Ну, а мы такие, ну это не комедия, как бы это драма. И мы хотим именно в базе данных это изменить, чтобы потом в интерфейс пользователя, да, мы увидели, что у нас гейм оф тронс, это драма, а не комедия. Мы
167: Пишем также запрос update в какой таблице, в какой сущности точнее мы будем это изменять тв. Сериалы сет у нас тоже апдейт идёт всегда как бы в связке сет пишем жанр равно, то есть здесь
168: Не нужно сначала возвращаться к тому, что это комедия. Мы просто сразу меняем, пишем жанр равно драма. И здесь у нас where мы как раз тоже вот он здесь будет where это про условия, то есть где имя, ну
169: Вот просто да, перевод, где имя будет равно game of thrones, то есть в базе данных тв сериалы он найдёт сериал игра престолов и поменяет его жанр на драму.
170: Тут как ок?
171: Хорошо. И делит это удаление записи из таблицы здесь делит он, кстати, тоже работает с where с условием, потому что, например, тот же drop он не работает с where?
172: Он просто нахрен удалит нам всю сущность, и мы не сможем откатить это действие. Вот тут такой момент транкейт, он похож на delete, это тоже удалить, но его как бы плюс просто в том, что он очень
173: Быстро удаляют и все, как бы лучше пользоваться, наверное, делитом здесь мы можем как бы указать хотя бы, что мы удаляем Фром, да, где обязательно мы указываем сущность нашу таблицу, где id 4, ну,
174: Положим, мы знаем, да, что id там сериала 4, если не знаем, мы бы могли написать where name равно там игра престолов. Тоже самое было бы. Это вот что касается 1 типа операторов.
175: Здесь вот на примерах мы разобрали дальше у нас что такое дальше? У нас как раз по 2 типу про манипуляции данными. Здесь у нас селект, это такой, не знаю, главарь типа
176: Вопросов это всегда про выборку данных вот мы все начинаем с selecta я вот здесь внизу написала то есть вот эта конструкция самая супер простая и от неё уже можно усложнять селект Фром вер все то есть селект это про выбрать какие-то данные from
177: Это откуда мы будем выбирать эти данные? Where это условия, да, вот как здесь мы можем написать вернейм или ещё что-нибудь там? Ну, короче, что угодно. Хэвинг это у нас фильтрация после группировки.
178: И здесь почему я их близко написала, часто спрашивают, в чем разница между where и having, потому что having тоже вроде как про фильтрацию, про какие-то типа условия. Здесь просто важно запомнить, что having у нас всегда будет работать только после грубай. То есть
179: Он не может быть за место веер. То есть сначала идёт, вэр, какое-то условие выбирается, и только потом хэвинг. Если у нас, ну, если нам это нужно, группа у нас группирует данные по какому-то признаку, который мы заведём.
180: Order by, это сортировка там по возрастанию, по убыванию в алфавитном порядке, не в алфавитном. Джоины как раз они бывают разных видов, там иннер, лефт, райт. Это у нас в следующей, в следующем слайде будет это всегда про
181: Объединение таблиц с с 1 с, прошу заметить, это у нас замена на псевдоним, например, не знаю, у нас какое-то супер большое название в таблице, а нам нужно постоянно писать запрос руками, и мы
182: Просто его заменяем на какой-то псевдоним, типа там 1 буковку ставим, чтобы просто легко обращаться к запросам. Это не значит, что он поменяет это название в таблице. Это просто во время написания запроса он нам поможет. Дистинг это
183: Исключение дублированных данных. Например, там у нас есть какие-нибудь одинаковый возраст или одинаковые имена. Если мы ставим селект, дистинкт, он нам выберет только, ну как бы он исключит все дублированные варианты, покажет нам только 1 из
184: Знал это больше про ограничения, мы тоже поподробнее это разберём, что вообще такое null.
185: Ну вот сейчас, грубо говоря, это пустое ли значение в таблице конкретно вот этот оператор in or, and это больше про какие-то связки. Допустим, если нам какие-то данные нужны, то есть условно, вот смотрите, мы здесь могли написать where name геймов
186: Thrones and и ещё какую-нибудь, например, ещё какой-нибудь сериал. И тогда он бы нам в 2 сериалах поменял жанр. Дальше у нас идут агрегатные функции. Это аккаунт сам минимальный, максимальный.
187: Значение среднее значение это тоже я в отдельный слайд выделила, чтоб поподробней лайк ай лайк, он помогает нам просто найти какое-то совпадение по буквам или по некоторым буквам. Просто, например,
188: Нам нужно, типа, мы помним, как зовут человека. Нет, даже не так, допустим, фамилию, там, мы знаем, что она там заканчивается на ян условно, но мы че то не сильно помним, мы можем через like в кавычках, да, написать.
189: Там 2 буквы, и он нам выдаст всех, у кого там на эту фамилию заканчивается. Ну, может как бы не супер классный пример, но он именно ищет по заданным символам и буквам, которые мы зададим, как бы и between это выборка между чем-то.
190: Чем-то, например, там возраст между between мы пишем, да, и между там пятнадцатью и двадцатью, допустим, это вот через этот, через этот оператор.
191: Давайте сразу тогда join таблиц разберём про них вообще очень часто спрашивают на собеседованиях в основном вопрос по типу чем они отличаются, их бывает несколько типов это full join inner join Лев.
192: Join рай джоин и cross join вроде это вот как бы все основные сразу скажу вот cross join я не думаю, что он супер часто встречается и здесь это больше про знаете сейчас не хочется как бы математичес.
193: Вот эти вот дебри уходить. То есть он ищет декартова произведения, все совпадения между 1 таблицей, с другой таблицей. То есть все возможные совпадения, это как бы трудно вот так вот сразу сходу понять. Мне кажется, без примеров.
194: Каких-то, потому что у нас есть как бы и другие джоины, которые связывают таблицы. Я не могу сейчас так сходу сказать, когда он применяется. Вот если у вас, кстати, было на практике, ну можете написать в комментах или потом рассказать, вот я
195: Предлагаю к full джоину сначала, ну full join он самый простой то есть вообще что такое join join это соединение допустим у нас есть таблица, а также покупатели таблица товары и мы хотим их
196: Объединить, чтобы посмотреть какие-то пересечения или просто посмотреть, вот как они вместе будут выглядеть. Джойн у нас осуществляется только посредством первичных и вторичных ключей, если вторичного ключа нету в той таблице, которую мы
197: Этим связать, то у нас ничего не получится вот это тоже к вопросу о том зачем нам нужны вторичные ключи full join это полное соединение то есть он тупо возьмёт 1 таблицу, возьмёт другую таблицу просто их совместит все, он не
198: Будет выбирать никакие там совпадения, несовпадения. Он просто нам как бы объединит 2 таблички иннер джойн. Это внешнее соединение. То есть это все, что будет пересекаться у 1 таблицы и 2 таблиц.
199: И он нам выдаст это значение там, например,
200: Не знаю, учитель с классом там совпали, он их выведет и так далее. Вот так всех учителей выведет. Тут тоже как бы спойлер. Если у нас где-то null, то он просто может его показать, да, что у нас типа нал и оставить как бы
201: Здесь пустое значение, то есть он только совпадающие значения будет нам выводить. Вот лефт и райт. Здесь как бы тупо по переводу левое соединение, правое соединение. То есть он все берет из левой таблички плюс
202: Пересечение с правой и выводит нам это тоже самое с правой. Он берет всю правую таблицу, пересечение с левой таблицей и тоже нам её выводит. Давайте здесь по джоинам.
203: Нету вопросов.
204: Блин, или я так круто объясняю, или я не знаю, для меня это было все супер. Сложно на самом деле в начале, или вы просто не хотите писать. Ну ладно.
205: Агрегатные функции, агрегатные функции, да, значит, у нас есть count, сумма, среднее значение, максимальное минимальное значение. Ну, здесь это в основном нам пригодится, не знаю, там зарплату, посмо.
206: Смотреть среднюю зарплату, максимальную зарплату сотрудников. Ну это просто такой пример в общем аккаунт он всегда пишется select потом идёт у нас аккаунт. Если у нас звёздочка, то он посчитает все. То есть аккаунт короче у нас выводит
207: Тупо 1 цифру, вот это все, допустим, значения в там.
208: В сущности, какой-нибудь, то есть условно вот этот запрос select count from users, да, то есть пользователя он нам выведет сколько записей содержится в таблице users, просто записи он не будет считать сумму просто допустим.
209: Там 30 записей и он вот из этого вот как раз запроса просто выведет нам цифру 30 и все. Дальше у нас сумма, например, конкретно этот запрос. Давайте посмотрим. Он нам отвечает на вопрос.
210: Суммарное время, проведённое всеми пользователями на онлайн курсах. То есть сначала у нас идёт селект, потом идёт у нас какая-то агрегатная функция, да, в нашем случае это сумма. Здесь мы в скобках обозначаем из какого аттрибута, да, нам это нужно. То есть это время
211: Проведённое и откуда? Из что это? Из онлайн, да, из таблички онлайн курса. И он там нам покажет суммарное время. Тоже самое также работает среднее значение. Он просто нам посчитает среднее значение и максима.
212: Минимальное значение здесь, я думаю, как бы тоже все должно быть понятно.
213: Так вот, я, как обещала прям отдельно разобрать нул нал, не знаю как. В общем, это такой специальный маркер, который обозначает, что значение данных не существует в базе данных, короче,
214: Простым языком тоже. Вот, кстати, популярный вопрос на собеседованиях является ли null нулём или пробелом? Нет, 0. Это у нас цифра пробел, это у нас как бы символ, да, грубо говоря, нал это что-то про
215: Просто неопознанно этих данных не существует. Вот просто не существует и все.
216: Вот, кстати, тоже мем вот предлагаю вам его решить, написать в комментах, похихикать, как бы, если это смешно. Вот, если нет, можете не хихикать. Ну, короче, вот желаю, чтобы у мальчиков никогда не осуществился этот запрос.
217: Think about it. Вот подумайте, напишите короче, нал, у нас есть is null или is not null, если мы используем конкретно вот этот оператор. То есть мы обозначаем, мы хотим уви
218: Видеть там, увидеть, например, какую-то выборку данных, где будут пустые значения или наоборот, чтобы он их не считал. То есть что вот этот запрос нам показывает, позволяет найти всех сотрудников, у которых нет менеджера.
219: У нас начинается селект. Дальше у нас вот эта звёздочка это всегда про то, что он всех выведет просто, ну тупо выведет всех дальше у нас идёт from, из какой сущности, из сущности сотрудники, где менеджер, где
220: Менеджер айди не будет, так будет, наоборот будет, да, типа неопознанным. И он нам покажет всех просто сотрудников, у которых нет менеджеров.
221: Так Саша только да, решил.
222: Ну, как вариант, да, да, правильно. Так, давайте дальше. А не тут был вопрос левый, правый джоин. Мы как-то видим, кто слева, кто справа. Ну, при запросе мы пишем лефт, джоин.
223: Да, у нас будет сначала левая таблица и потом совпадение с правой. Если мы пишем рай джоин, у нас сначала будет правая таблица и потом то, что совпало с левой таблицей, то есть такая очерёдность
224: И ещё немножко тоже помучаю вас такими полезными штуками. На мой взгляд, можно вообще отнести этот слайд как раз к ограничениям. Тоже часто спрашивают, какие ограничения, например, бывают при базе данных, при
225: Написание там запросов у нас есть автоинкремент юник чек и опять же вот эти псевдонимы да, ellis, может, как и по другому называют, это больше для такого удобства и обозначения каких-то данных, например.
226: У нас автоинкремент чаще часто используется с какими-нибудь айдишниками. То есть, смотрите, мы же условно не будем. Вот мы создаём каждый атрибут, у него id 1, потом мы создаём 2 и так до бесконечности у нас же может
227: Быть их 300, 400 штук. Мы ж не будем вспоминать или где-то себе записывать. Мы там 396 создали, значит, следующий 397, мы просто при создании, да, вот table мы что отвечает этот запрос, да, кре, тейбл, мы
228: Далее, там пользователей, например, где персон айди, у нас будет целое число, не будет, ну, налом. То есть мы сразу тут обозначаем, что оно не должно быть пустым и ставим автоинкремент, то есть каждую последующую
229: Запись в этой таблице он сам будет присваивать ей айдишник последующий. То есть он сам будет его считать. Ну, здесь тоже можем разобрать, да, что имя у нас там варчар 255 тоже не будет равно.
230: Нулём. Фамилия. Здесь мы не указали, что нибудет равно нулём. То есть главное имя заполнить при создании. Также мы можем указать, да, что primary key, то есть первичным ключом у нас будет person id. Это вот просто
231: На примере юник это, короче, если мы его пишем, он обеспечивает тоже гарантию уникальности для столбца или набора столбцов. По сути, похож на автоинкремент. Просто автоинкремент, он как бы считает,
232: Уже знает, какой присвоить айдишник последующий. А уникальность даёт как раз вот этот оператор. То есть что у нас id пользователя, например, точно будет уникальным и никогда не повторяющимся как бы в целом.
233: При создании таблиц лучше указывать эти ограничения, потому что, ну, мало ли что, особенно с айдишниками у нас все должно быть уникальное в единственном числе и так далее. Чек он используется для ограничения диапазона значений, например,
234: Не знаю, там, ну, мы знаем, что возраст должен быть там исключительно с 18 и больше, допустим, мы что-то такое создаём при, не знаю, регистрации, да, там где-то, и вот при создании такой
235: Таблицы, мы прям отдельно укажем, что возраст. Дальше мы пишем чек в скобочках. Возраст у нас будет больше или равен 18. То есть мы никогда не сможем внести в эту сущность значение возраста.
236: 17 или 15. Ну, короче, все, что ниже 18. Ну, ещё раз про псевдонимы повторюсь, да, что они используются для облегчения как бы, запросов, для того, чтобы сделать более читабельными, как бы здесь.
237: На примере допустим у нас есть select customer id, но мы хотим просто писать id мы пишем с и потом id дальше у нас customer name мы пишем просто customer то есть при запросах мы можем потом в дальнейшем в джоинах использовать просто айди и
238: Просто customer давайте здесь тоже насколько все понятно.
239: Супер.
240: Хорошо, идём.
241: Так, ну давайте про частые вопросы. Я просто хотела на примерах ещё разобрать, если у нас время останется, мы и про частые вопросы, потому что я думаю, что на примерах как-то поинтереснее должно быть.
242: Так, давайте я сейчас.
243: Секунду.
244: Короче, я нашла такую тестовую базу данных. Сейчас я вам в беседу скину для наглядности, как она будет выглядеть.
245: Чтобы вы тоже.
246: Так, сюда я скину.
247: И сюда.
248: Так, посмотрите в телеге я скинула такую простую базу данных, просто чтобы вы посмотрели, как она выглядит для понимания, как запросы пишутся. И сейчас подождите, я продемонстрирую.
249: Блин.
250: Так вам видно, вот скажите мою
251: Яндекс, так скажем, страничку, да, видно. Ага. Короче, у нас есть такая база данных, у нас здесь есть пациенты, у нас есть здесь доктора.
252: Это что-то типа как бы листа записи или просто там болезни, ну то есть такая связующая таблица между доктором и пациентом и это, ну провинции, короче, мы не будем к ней как бы обращаться.
253: Это, короче, название просто провинции. Откуда, в общем, эти пациенты как бы области, грубо говоря. Давайте просто попробуем пописать какие-нибудь простые пока запросы.
254: Смотрите, вот уже сразу допустим сразу простой запрос select from пациента, то есть здесь он, он должен нам вывести все значения, которые есть в таблице пациен.
255: Собственно, то есть здесь мы можем посмотреть. У нас есть пациент айди, его имя фамилия его гендер, его день рождения. Откуда он?
256: Вот этот вот его область, да, так скажем, аллергия есть или нет? Вот, например, здесь на, да, то есть неопознанное значение, так скажем, а здесь у кого-то есть рост и вес.
257: В основном я такие запросы придумала с сущностью пациента. Ну просто как бы она такая самая объёмная и понятная. То есть, вот, условно, самый 1 запрос, который мы написали, он выведет нам все данные из таблицы.
258: Давайте что-то посложнее. Например, нам нужно вывести всех пациентов определённого пола. Вот если у вас есть как бы предложения, можете тоже писать их в комменты, как мы осуществ.
259: Этот запрос.
260: У меня. Так, подождите.
261: Всех пациентов. Допустим, мы хотим увидеть именно имя, фамилию, поэтому мы пишем селект. То есть выбрать, что нам нужно, чтобы он вывел имя и фамилию. Нам нужно, чтобы он выдал это. Мы пишем фер.
262: Name запятая, ласт нейм.
263: Дальше нам нужно, чтобы он вывел нам ещё пол. Пол. У нас это гендер.
264: Дальше мы пишем, из какой таблицы он нам это должен выводить. Кстати, прикольно, что здесь он прям предлагает и не надо сильно париться из какой таблицы? Из таблицы пациенты
265: Дальше у нас условие идёт. Где?
266: Где gender у нас будет?
267: Блин, вообще неудобно. Так, подождите.
268: Вот. Так, где gender у нас будет равен, допустим, м,
269: Ну, короче, вот такой super Лёгкий запрос, что он нам, по идее, должен дать дать. Он должен нам вывести только имя, только фамилию, только gender из таблицы пациента, где пол у нас будет мужской.
270: Нажимаем ран. Ну в целом как бы запрос сработал. То есть мы видим, короче, мы видим всех, только мужчин с именем и фамилией. Здесь есть вопросы. Вот так смотрите, сейчас
271: Ну, здесь, я думаю, что понятно, да.
272: Давайте следующий какой-нибудь запрос, например, с группировкой, допустим, нам нужно сгруппировать пациентов по городу и посчитать количество пациентов в каждом городе, ещё раз сгруппировать сначала пациентов по городу.
273: Например, там, типа в 1 городе столько-то пациентов, там в другом городе столько-то пациентов, нам важна только цифра и посчитать их количество, да, пациентов в каждом городе, то здесь мы как раз, я пыталась такие задачи придумать, чтобы
274: Каждый оператор посмотреть вообще, как он работает.
275: Давайте прям сначала.
276: У нас идёт селект, дальше у нас идёт город.
277: Чтобы посчитать общее количество нам нужен, нам нужна агрегатная функция count.
278: В скобочках. Нам же как бы, ну, не все нужно, нам нужно только какие пациенты? То есть, если мы сделали звёздочку, он бы нам все как бы посчитал, а нам нужны именно пациент, пациент айди, нам нужно
279: Здесь, например, тоже предлагаю посмотреть, как псевдоним будет работать. Допустим, мы хотим, чтобы в табличке не просто было пациент айди, мы хотим как бы понимать, да, какая функция посчиталась, поэтому мы её просто, типа, обзовём.
280: Сейчас с.
281: Вот так мы её назовём дальше у нас идёт from обязательно. Откуда? С таблицы пациенты.
282: Дальше мы группировка у нас групбай, группировать мы будем по
283: Городу, как было заявлено, и мы хотим ещё указать, что там я сказала, группировка пациентов по городу и подсчёт количества пациентов в каждом городе, допустим,
284: Мы ещё хотим фильтрацию, не фильтрацию, а order by сделать, то есть посмотреть там по возрастанию, по убыванию вот такое вот всякое.
285: Ещё можем добавить сюда ордер бай.
286: Пациент, это вот уже как мы обозвали, да, эту табличку? Смотрите, вот деск, это у нас по убыванию будет, по моему, есть ещё аск, это по возрастанию. Ну или сейчас посмотрим и поменяем.
287: Короче, что он нам тут вывел? Он нам вывел город, в котором всего 1938 пациентов, ну и короче, так далее, да, то есть в Торонто, например, у нас 317 пациенто.
288: И он по возрастанию нам их всех вывел, если мы напишем здесь, например,
289: Вот так.
290: То он выведет по возрастанию, получается вот
291: Ну и здесь то, что мы обозвали, да, псевдонимом вот эту табличку. Пациент аккаунт, он её сюда нам тоже показал, но это не значит, что он в этой сущности взял и все поменял. Это просто на момент нашего запроса.
292: Давайте, тут есть вопросы или нет?
293: Да, если не писать, аскон будет выводить по, по умолчанию. Просто хотела показать именно, как, как они работают. Давайте, например, уберём.
294: Так, давайте сначала, чтобы он там чуть чуть по другому посчитал, теперь уберём.
295: Да, то есть если не писать, он по умолчанию будет по возрастанию.
296: Поэтому в основном только деск используется в принципе вот это asi que не обязательно так давайте, например, что-нибудь с and посмотрим просто, да, что мы можем какую-нибудь выборку.
297: Сделать, например, нам нужно выбрать пациентов с Ростом больше 170 сантиметров и с весом меньше 70 килограмм.
298: Опять же, все у нас селект. Какие нам данные нужны? Нам нужно имя. Ой, блин.
299: Потом фамилия.
300: Ой, наоборот. Ну короче, ладно, наверное, он так сработает.
301: Дальше нам нужен вес.
302: Нам нужен вес и рост.
303: То есть это все, что мы хотим видеть в выборке. Дальше из какой это будет у нас таблица из таблицы пациенты.
304: Дальше мы пишем условия.
305: Я просто, чтоб долго не писать, я вот так скопирую то, что что-то у нас времени уже мало где рост будет больше 170 сантиметров и вес будет меньше 70 килограмм.
306: Вот он нам вывел, видите, я сначала написала, короче, фамилию, потом имя. Он нам, короче, в таком порядке выдал, что вот такой-то чел, рост, вес и все как бы под наши критерии тут подходит, да, меньше 70.
307: Килограмм больше 170 сантиметров.
308: Это просто вот как условие работает, так что-то тут вопрос какой-то.
309: Ага, так.
310: Сейчас посмотрю, какой. Давайте слайд, например, кстати, посмотрим, например, нам нужно, не знаю, там найти пациентов с похожими именами, не знаю зачем. Ну, допустим, нам надо такое срочно, что мы будем выводить.
311: Допустим также имя, фамилию.
312: Из таблицы.
313: Из таблицы пациенты. Дальше у нас есть
314: А условия, да, мы должны написать условия, потому что like у нас с условием, где 1 имя, 1 имя, просто имя, где имя у нас будет, и здесь мы прям указываем, да.
315: Какое условие через like у нас будет лайк лайк. У нас всегда через, ну вот такие вот кавычки, да, дальше мы указываем, например.
316: Вот так и процент, сейчас я объясню.
317: Вроде, вроде все, смотрите, вот эти все значения, ой, символы есть тоже табличка по лайкай лайк, то есть там как бы все заточено на то, что если мы ставим процент после
318: То он найдёт только там перед тем, что написано. Если мы сначала поставим процент, потом напишем, н, он будет искать то, что как бы заканчивается на, н, то есть такая логика. То есть вот конкретно по нашему запросу он искал, что начи,
319: Anna н и вот тут все он имена, короче вывел в принципе можно было без вас нейм на самом то деле зачем она нужна? А, ну хотя может допустим нам надо посмотреть всех людей, у которых имя начинается на н тут вот по Такому, при
320: Тут есть давай я предлагаю сейчас вопросы послушать вообще в целом, по заданиям и в целом, по твоему опыту от ребят, тех, кто ещё остался. Вот и будем.
321: Потихонечку завершаться. Да, я просто тогда просто скину вот эту, ну, если кому-то интересно скину и можно самим попридумывать задачки, можно попросить чат gpt попридумывать задачки, просто потренироваться, потому что, ну, тут такая, как бы, удо.
322: Штука. Угу. Так, ребят, давайте вопросы вообще по теме сегодняшней лекции и в целом карпини, которые у вас есть. Давайте голосом сейчас прямо задавать. Либо в чате, если
323: Если вопросов нет, то пишем все. Супер. Спасибо большое. Понятно.
324: Вот написали вопросик, можешь чат открыть, посмотреть, да, для изучения эскэль, какие не, я вообще никакие курсы не изучала, я просто очень много видосов посмотрела на YouTube. Очень много вот этих вот, знаете, тренажёры по эскэль есть, там есть 1 самый популярный.
325: Я вам тоже его скину, мне кажется, вы его знаете, там что-то про авиабилеты, вот это вот все, и там прям они разделены на лёгкие, средние и сложные. Вот если прорешать их, причём я одни и те же решала очень часто просто, чтоб запомнить.
326: Ну, как-то руку там набить, не знаю, но курсы нет.
327: Вообще есть бесплатный курс на степике, по моему, он бесплатный, вот, насколько я знаю. И вот сейчас у меня на работе тоже, у меня прям это в план записано, пройти его там он такой достаточно объе.
328: Но, по моему, он там супер понятный такой, супер жёванный. Вот можете посмотреть там вот насколько я знаю, он вообще бесплатный, там просто надо зарегаться и все.