Будущее
— С какими страхами сталкивается опытный программист?
— Основной страх — потерять работу. Я такой человек, который любит стабильность и предпочитает задерживаться на одном месте от пяти и более лет. Поэтому нарушение такой стабильности и является моим личным страхом.
При этом я не боюсь остаться без работы из-за того, что на новом месте не справлюсь со своими обязанностями. Нет. С таким я не сталкивался и считаю, что каждый трудолюбивый программист может разобраться с неизвестными ему технологиями. Меня больше беспокоит вопрос комфорта — вдруг не понравится, попаду в компанию с ужасным начальством или техпроцессами из девяностых. В этом случае мне снова придётся искать работу, а это новый стресс. Не хочу.
Михаил Флёнов о страхе потерять работу. Видео: канал «Програмысли»
— Что будешь делать, если в ближайшее время в IT появятся новые инструменты, с которыми накопленные знания окажутся ненужными?
— Почему-то я уверен, что этого не произойдёт. Но если гипотетически допустить такой сценарий, то жене придётся смириться с моим желанием купить ферму, завести пару коров и жить где-нибудь в тишине и спокойствии. Я не боюсь работать руками и почти весь домашний ремонт делаю сам. Так что найду себе применение.
— Ты занимаешься программированием более 25 лет. Что это: любознательность, любовь, страсть? Можно ли это чувство воспитать и как понять, что пора уходить на пенсию?
— У меня точно любовь к IT: мне нравится техника, компьютеры и всё, что с этим связано. Воспитать подобное чувство можно, если есть какие-то задатки. Однако если никакой тяги и интереса нет — наверное, так долго проработать не получится.
Я не представляю ситуацию, в которой мне надоест писать код. Я 25 лет занимаю разные позиции, на каждой что-то пишу и уверен, что меня ещё хватит лет на двадцать. Поэтому о пенсии я пока даже не задумываюсь — стукнет 65, а там посмотрим.
Михаил Флёнов о карьере и возрасте программистов. Видео: канал «Програмысли»
— Ты часто даёшь интервью и отвечаешь на вопросы подписчиков. А есть ли какой-то важный, на твой взгляд, вопрос, который почему-то никто не задаёт. Если да — о чём он?
Три способа построить специальный вопрос
- Специальный вопрос со вспомогательным глаголом (do/does, will,would, did и т. д.).
General question |
Wh-question |
Do you want some coffee? Хочешь кофе? |
What coffee would you like? Какой кофе ты бы хотела? |
Did he tell you the story? Он рассказал тебе историю? |
Which story did he tell you about? О какой истории он тебе рассказал? |
Will you go to the cafe with me? Ты пойдешь со мной в кафе? |
Where is the cafe located? Где расположено кафе? |
- Специальный вопрос с модальным глаголом (can, may, should, must и т. д.).
General question |
Wh-question |
Should we cross the road? Перейдем дорогу? |
Where should we cross the road? Где бы нам перейти дорогу? |
Can I bring a friend? Я могу прийти с другом? |
What friend are you going to bring? Какого друга ты с собой приведешь? |
May I ask a question? Я могу спросить вопрос? |
Which question may I ask him? Какой вопрос я могу его спросить? |
- Специальный вопрос с глаголом to be (am, are, is, was, were, will be).
General question |
Wh-question |
Were they home at 9 pm last night? Были ли они дома в 9 вечера вчера? |
What time were they home last night? Во сколько они были дома вчера вечером? |
Am I going to be a teacher? Буду ли я учителем? |
Who am I going to be? Кем я буду? |
Was he interested in the deal? Был ли он заинтересован в сделке? |
What deal was he interested in? В какой сделке он был заинтересован? |
Экзотика и минимализм: Raspberry Pi
Raspberry Pi — это одноплатный компьютер: на платке размером с кредитную карту стоят порты, процессор и память. Подключаете к этому клавиатуру, мышь и монитор — и у вас есть компьютер. Стоит такая плата 30–100 долларов.
Особенность в том, что в нём будет операционная система «Линукс». Но для неё есть программы для разработки на любом языке, а также необходимый минимум браузеров и офисных приложений.
На Raspberry Pi будет сложно писать приложения для Айфонов или код для Windows, но всё остальное — вполне реально. Заодно прокачаетесь в настройке «Линукса».
На Pi можно сделать не слишком мощный, но рабочий сервер.
На момент написания статьи самое последнее поколение Raspberry Pi — четвёртое. Поддерживает два экрана!
Предложение GROUP BY
Использование позволяет разбивать таблицу на логические группы и применять агрегатные функции к каждой из этих групп. В результате получим единственное значение для каждой группы.
Обычно предложение применяют, если формулировка задачи содержит фразу «для каждого…», «каждому..» и т.п.
Пример 18.Определить суммарный объем деталей, поставляемых каждым поставщиком.
pnum | sum |
---|---|
1 | 600 |
2 | 400 |
3 | 1000 |
Выполнение запроса можно описать следующим образом: СУБД разбивает таблицу PD на три группы, в каждую из групп помещаются строки с одинаковым значением номера поставщика. Затем к каждой из полученных групп применяется агрегатная функция SUM, что дает единственное итоговое значение для каждой группы.
Рассмотрим два похожих примера.
В примере 1 определяется минимальный объем поставки каждого поставщика. В примере 2 определяется объем минимальной поставки среди всех поставщиков.
Пример 1:
Пример 2:
Результаты запросов представлены в следующей таблице:
pnum | min | max |
---|---|---|
1 | 100 | 100 |
2 | 150 | |
3 | 1000 |
Следует обратить внимание, что в первом примере мы можем вывести номера поставщиков, соответствующие объемам поставок, а во втором примере – не можем. Все имена столбцов, перечисленные после ключевого слова SELECT должны присутствовать и в предложении GROUP BY, за исключением случая, когда имя столбца является аргументом агрегатной функции
Все имена столбцов, перечисленные после ключевого слова SELECT должны присутствовать и в предложении GROUP BY, за исключением случая, когда имя столбца является аргументом агрегатной функции.
Однако в предложении могут быть указаны имена столбцов, не перечисленные в списке вывода после ключевого слова .
Если предложение расположено после предложения , то группы создаются из строк, выбранных после применения .
Пример 19.Для каждой из деталей с номерами 1 и 2 определить количество поставщиков, которые их поставляют, а также суммарный объем поставок деталей.
Результат запроса:
dnum | COUNT | SUM |
---|---|---|
1 | 3 | 1250 |
2 | 2 | 450 |
Способ 4. Использовать любимую библиотеку/фреймворк, не посоветовавшись с менеджером
Почему так неправильно. Программист — профессия, подразумевающая умение подчиняться правилам команды. Если ты любишь react, а твой коллега любит программировать на «сочетании чистого JS и личной самоотверженности», то вы все равно должны делать проект на той платформе, которую выбрал менеджер.
Пример. Программист получает задачу: приделать функцию к сайту. И он понимает, что ее можно быстро решить на ReactJS — и не отказывает себе в этом маленьком удовольствии.
Через неделю происходит code review, и программиста увольняют, потому что:а) он забыл заглянуть в соседнюю папку, а там 10 гигабайт кода на Angular;б) в компании кроме него нет программистов на React — если он заболеет, то некому будет поддерживать;в) Angular был требованием клиента.
Средний компьютер для кодинга в 2020 году
Процессор. Может быть фирмы Intel или AMD. Если Intel, то подойдёт что угодно, начиная с Core i5. Всё, что ниже, может не очень быстро работать на современных операционных системах (что не помешает работать на них медленно).
Оперативная память. Чем её больше, тем проще компьютеру работать со множеством задач. Если нужно просто писать код, то сейчас хватит 8 гигабайт, большая часть которых уйдёт на операционную систему и браузер. Вы удивитесь, но современные браузеры могут нехило так нагружать и память, и процессор. Как будто это не ты смотришь Ютуб, а Ютуб смотрит тебя ?
Жёсткий диск. Есть два варианта: обычный HDD (очень много места, но медленный) или SSD (поменьше места, но в тысячу раз быстрее). Если есть возможность, лучше выбирать компьютер с SSD. Минимальный объём — 128 гигабайт, этого хватит для операционной системы, среды разработки и ещё останется место для своих проектов.
Способ №1. Сделать не так, как просил менеджер
Почему так неправильно. Часто менеджер знает о проекте больше, чем программисты. Кроме того, в машине должен быть один водитель: если левыми и правыми колесами управляют разные люди — машина не приедет в назначенную точку в нужное время.
Пример. Менеджер просит сделать комнату с дверью. Но по ТЗ в двери нет ручки, вместо нее педаль. Программист видел в жизни тысячи дверей и решает, что менеджер сошел с ума. Он пытается спорить, а потом делает «правильно». Его увольняют.
Программиста уволили, потому что:
- это дверь для склада, куда люди заходят с коробками в руках — ножная педаль была главной идеей;
- клиент — фирма, производящая ножные педали для дверей;
- дверную ручку продали клиенту за огромные деньги — она должна была войти во вторую версию проекта, не в первую.
Мораль. Читай ТЗ, делай по ТЗ. Если не понимаешь — обсуждай. Если не согласен — спорь. Нельзя молча делать не то, что требуется.
Пик профессионализма
— Случалось ли так, что ты хотел попасть в какую-то крупную компанию и не смог пройти собеседование? С чем это связано?
— Именно чтобы хотел — такого не было. Я вообще мало откликался на вакансии сам, и обычно все собеседования проходили только после того, как ко мне обращались рекрутеры.
Могу только вспомнить опыт с Amazon, куда я пробовал попасть, ещё живя в России, — тогда мне казалось, что это очень крутая компания. Ответа я не получил. Однако уже в Канаде я начал работать в Klick, участвовал в больших проектах, и рекрутеры Amazon сами на меня выходили — приглашали на собеседование. Однако я не пошёл, потому что у меня были серьёзные проблемы с английским.
Позже мне ещё много раз писали из Amazon — говорили, что в их записях обо мне много положительных отзывов, и предлагали откликнуться на любую должность. Я отказал и больше ни разу с ними не общался — к этому времени у меня появился опыт работы в компании Ceridian, которая насчитывала около 6–7 тысяч сотрудников по всей Канаде и США. После Ceridian я предпочитаю небольшие команды и меня не тянет работать в компаниях размера FAANG. Возможно, в этом вопросе я неправ.
— Что делать программисту, который давно в профессии и застрял в развитии? Был ли у тебя подобный период и что с этим делать?
— Конечно, был. Это период, когда я работал над легаси-кодом. Если у кого-то похожая ситуация, то он может попробовать прыгнуть в консалтинговую компанию и поработать над проектами для разных клиентов — ежегодно браться за новый проект или новые технологии. Работать в консалтинге тяжело, но, на мой взгляд, это самый лучший вариант для развития программиста.
В крупных компаниях и на огромных проектах слишком много старого кода, который невозможно в сжатые сроки перенести на новые технологии. Конечно, в таких условиях ни о каком развитии не может быть и речи. Однако если вам нравится работа и команда, то можно заниматься дома. При работе с легаси-кодом нам разрешали раз в месяц брать день и заниматься саморазвитием. Мне нравилось, но были и коллеги, которые меняли компанию ради нового опыта и стека технологий.
Сейчас я не засыхаю, поскольку постоянно занимаюсь собственными проектами. Например, во время одной из стагнаций я написал несколько игр на Swift, которые доступны на сайте enthunder.com. Там все игры мои, кроме Project Voyage — это игра моего сына, который в 16 лет смог её самостоятельно написать на Unity.
— В одном из видео ты говорил, что хотел бы поработать на менеджерской должности. Объясни, как к этой мысли подходит программист, который большую часть карьеры писал код?
— То видео немного устарело, поскольку я с июля 2021 года работаю менеджером и у меня в подчинении две команды. С переходом на новую должность я по-прежнему люблю программировать, что-то пишу сам и помогаю командам с исследованиями.
Как отобрать IT-команду на аутсорс
Рейтинги вроде Ruward и Tagline — хорошая стартовая точка для поиска команды, но она не должна становиться финишной прямой. Не забывайте, что рейтинги — это все-таки соревнование пиарщиков, а не программистов.
Общение с компанией происходит через менеджера по продажам. Он может быть неимоверно хорош, а команда за ним — так себе. Бывает и так, что команды за ним нет, и он будет искать ее на ходу. Может быть наоборот: менеджер не производит особого впечатления, потому что он и не продажник вовсе, а тимлид команды талантливых программистов.
Ключевой показатель — портфолио. Посмотрите, что делала команда: так вы поймете, справится ли она с вашей задачей. Существует риск, что портфолио «надувное» — там могут оказаться проекты, к которым эта компания не имеет никакого отношения, а если имеет, то совсем незначительное. Достоверность портфолио нужно проверить.
Фото: Unsplash
Перед заключением договора свяжитесь с парочкой бывших клиентов компании. Только не спрашивайте контакты у разработчика — ищите их в интернете.
Узнайте следующую информацию:
- эта ли команда делала проект,
- полностью или частично,
- не пришлось ли доделывать,
- был ли выдержан срок,
- не менялась ли цена на ходу.
Заведите табличку в экселе и ставьте каждой команде баллы: как быстро они перезвонили, есть ли у них похожие проекты в портфолио, какая оценка в рейтинге, что говорят клиенты. Верьте только этой табличке.
10 ответов
Лучший ответ
Реляционная алгебра допускает взаимозаменяемость предикатов в предложении и , поэтому даже запросы с предложениями могут иметь предикаты, переупорядоченные оптимизатором таким образом, чтобы они могут быть уже исключены в процессе .
Я рекомендую вам писать запросы в максимально удобочитаемом виде.
Иногда это включает в себя создание относительно «неполного» и включение некоторых критериев в просто для того, чтобы упростить сопровождение списков критериев фильтрации.
Например, вместо:
Напишите:
Но это, конечно, зависит от обстоятельств.
170
Brien Foss
9 Май 2019 в 14:28
Для внутренних соединений я действительно не заметил разницы (но, как и при любой настройке производительности, вам нужно сверяться с вашей базой данных в ваших условиях).
Однако то, где вы помещаете условие, имеет огромное значение, если вы используете левое или правое соединение. Например, рассмотрим эти два запроса:
Первый предоставит вам только те записи, заказ которых датирован позднее 15 мая 2009 г., таким образом, левое соединение будет преобразовано во внутреннее соединение.
Второй предоставит эти записи плюс всех клиентов без заказов. Набор результатов сильно различается в зависимости от того, где вы поставили условие. (Выберите * только для примера, конечно, вы не должны использовать это в производственном коде.)
Исключение составляют случаи, когда вы хотите видеть только записи в одной таблице, а не другую. Затем вы используете предложение where для условия, а не соединения.
142
cryanbhu
9 Июл 2020 в 08:17
Большинство продуктов СУБД оптимизируют оба запроса одинаково. В «Настройка производительности SQL» Питера Гулуцана и Труди Пельцер они протестировали несколько марок СУБД и не обнаружили разницы в производительности.
Я предпочитаю хранить условия соединения отдельно от условий ограничения запросов.
Если вы используете , иногда необходимо указать условия в предложении соединения.
26
Bill Karwin
19 Июн 2009 в 16:54
Я предпочитаю, чтобы JOIN объединял полные таблицы / представления, а затем использовал WHERE, чтобы ввести предикат результирующего набора.
Он кажется синтаксически чище.
3
Johnno Nolan
19 Июн 2009 в 16:52
Обычно я наблюдаю повышение производительности при фильтрации соединения. Особенно, если вы можете объединить индексированные столбцы для обеих таблиц. Вы должны иметь возможность сократить количество логических чтений, при этом большинство запросов тоже делают это, что в среде с большим объемом данных является гораздо лучшим показателем производительности, чем время выполнения.
Меня всегда слегка забавляет, когда кто-то демонстрирует результаты своих тестов SQL, и они выполнили обе версии sproc 50 000 раз в полночь на сервере разработки и сравнивают среднее время.
2
marr75
19 Июн 2009 в 16:55
Помещение условия в соединение кажется мне «семантически неправильным», поскольку JOIN не для этого предназначены. Но это очень качественно.
Дополнительная проблема: если вы решите переключиться с внутреннего соединения на, скажем, правильное соединение, наличие условия внутри JOIN может привести к неожиданным результатам.
Jacob B
19 Июн 2009 в 16:53
На мой взгляд, присоединение происходит быстрее, когда у вас большой стол. На самом деле это не такая уж большая разница, особенно если вы имеете дело с довольно маленьким столом. Когда я впервые узнал о соединениях, мне сказали, что условия в соединениях точно такие же, как условия предложения where, и что я мог бы использовать их взаимозаменяемо, если бы предложение where было конкретно о том, для какой таблицы выполнять условие.
Eric
19 Июн 2009 в 17:27
Согласитесь со вторым по количеству голосов ответом, который будет иметь большое значение при использовании или . Фактически, два приведенных ниже утверждения эквивалентны. Итак, вы можете видеть, что предложение выполняет фильтр перед , а предложение выполняет фильтр после .
user3512680
13 Фев 2021 в 19:51
Лучше добавить условие в Join. Производительность важнее читабельности
Для больших наборов данных это важно
-7
Jeeno Shibu
18 Июл 2018 в 12:44
ГДЕ будет фильтровать после того, как СОЕДИНЕНИЕ произошло.
Отфильтруйте JOIN, чтобы предотвратить добавление строк в процессе JOIN.
14
TheTXI
19 Июн 2009 в 16:51
SQL Учебник
SQL ГлавнаяSQL ВведениеSQL СинтаксисSQL SELECTSQL SELECT DISTINCTSQL WHERESQL AND, OR, NOTSQL ORDER BYSQL INSERT INTOSQL Значение NullSQL Инструкция UPDATESQL Инструкция DELETESQL SELECT TOPSQL MIN() и MAX()SQL COUNT(), AVG() и …SQL Оператор LIKESQL ПодстановочныйSQL Оператор INSQL Оператор BETWEENSQL ПсевдонимыSQL JOINSQL JOIN ВнутриSQL JOIN СлеваSQL JOIN СправаSQL JOIN ПолноеSQL JOIN СамSQL Оператор UNIONSQL GROUP BYSQL HAVINGSQL Оператор ExistsSQL Операторы Any, AllSQL SELECT INTOSQL INSERT INTO SELECTSQL Инструкция CASESQL Функции NULLSQL ХранимаяSQL Комментарии
Оператор между ( BETWEEN a AND b ) или за пределами ( NOT BETWEEN a AND b )
X BETWEEN a AND b возвращает значения:
TRUE – если a < X < b;
FALSE – если X меньше a или больше b;
NULL – в остальных случаях.
X NOT BETWEEN a AND b возвращает значения:
TRUE – если X меньше a или больше b;
FALSE – если a < X < b:
NULL – в остальных случаях.
Пример:
SELECT * FROM testtable WHERE id BETWEEN 80 AND 84; SELECT * FROM testtable WHERE id NOT BETWEEN 80 AND 84;
Первым запросом выбираются строки из таблицы testtable, в которых значение в столбце id лежит в диапазоне от 80 до 84. Вторым запросом выбираются все строки из таблицы testtable, кроме тех строк, значение которых в столбце id лежит в диапазоне от 80 до 84.
Какие бывают вопросительные слова
Категорию специальных вопросов еще называют wh-questions, так как большинство вопросительных слов будет начинаться именно с сочетания этих двух букв:
who? — кто? What? — что? какой? when? — когда? where? — где? Куда? how? — как? why? — почему? which? — который? whom? — кого? whose? — чей? |
Примеры специальных вопросов в английском языке
- He is from France. – Он из Франции.
- Where is he from? – Откуда он?
- I came here in the afternoon. – Я пришел днем.
- When did you come here? – Когда ты пришел сюда?
- I met Sonya at a mutual friend’s birthday party. – Я встретил Соню на дне рождении общего друга.
- How did you meet her? – Как ты с ней познакомился?
- The recipe says we need four eggs to make this sponge cake. – В рецепте говорится, что нам нужно три яйца, чтобы приготовить этот бисквит.
- How many eggs do we need for this cake? – Сколько яиц нам нужно для этого торта?
- Larry is in the yard playing hide-and-sick with Monica’s kids. – Ларри играет в прятки во дворе с детьми Моники.
- Whose children are playing with Larry in the yard? – Чьи дети играют с Ларри во дворе?
Вопросительное слово здесь выступает полноценным членом предложения, и поэтому оно может играть роль как подлежащего, так и дополнения, определения или обстоятельства. Информация, которую вам хочется узнать, здесь играет главную роль.
Английский язык для школьников в Skysmart — это классные интерактивные задания, опытные преподаватели и нацеленность на результат. Попробуйте сами на бесплатном вводном уроке!
Карьерный рост
— Насколько легко программисту влиться в новый коллектив, при необходимости сменить работу и вернуться, если потребуется?
— Это всегда стресс, но в Канаде умеют и стараются его сгладить. Всё зависит от менеджера: как он работает с подчинёнными и насколько хорошо их поддерживает.
Вернуться назад очень тяжело. Если человек сменил работу, скорее всего, бывшим коллегам он расскажет, как же ему повезло. Я такое часто наблюдаю среди иммигрантов — мало кто рассказывает правду о своей жизни. Почти все хвастаются и преувеличивают.
Возвращаются единицы. Возврат означает, что человек сделал ошибку и должен её признать перед собой, друзьями и бывшими коллегами. Это тяжело, и поэтому многие предпочитают терпеть, создавая для других иллюзию идеальной ситуации.
В реальности проблемы есть везде, и чтобы их проще преодолевать — рекомендую в каждой компании стараться оставлять о себе хорошее впечатление. Я ещё ни разу не возвращался к бывшим работодателям, но про хорошее впечатление не забываю.
Михаил Флёнов: как увольняться и не оставлять осадок. Видео: канал «Програмысли»
— Как программисту не бояться просить о повышении зарплаты?
— Нужны знания и навыки. В Канаде я был знаком с парнем, который мог весь день ничего не делать и зарабатывать больше остальных. Причём даже если бы он попросил повышение, то ему вряд ли бы отказали. На тот момент этот парень был единственным человеком, кто вёл и мог быстро починить важный для компании проект. Поэтому, когда программист делает что-то значительное, он может смело просить что угодно.
Что касается остальных, то я не вижу ничего плохого в том, чтобы попросить начальника о повышении. Не ругаться и не требовать — просто нормально сказать: мол, я выполняю такие-то обязанности и считаю, что заслуживаю чуть больше денег.
- Если вы действительно заслуживаете повышения, то большинство руководителей при нормальном подходе подчинённого действительно рассмотрят такую возможность.
- Если начальник посчитает, что давать повышение пока не за что, то объяснит причину и не будет увольнять. Возможно, скажет, когда попробовать позже.
- Если в компании увольняют за обоснованную просьбу о повышении или не прислушиваются к просьбам подчинённых, то это не то место, в котором стоит работать.
Подытожим: не бойтесь просить повышения, но делайте это тактично и правильно.
— Предположим, человека устраивает его текущая работа. В какой момент ему полезно задуматься об увольнении?
— Не знаю, когда это обоснованно. Если для программиста важна карьера и какие-то звания, то он может уйти, когда компания не помогает развиваться. Я где-то читал, что многие увольняются из-за legacy code — устаревшего кода, который перешёл по наследству от бывших сотрудников. И их можно понять: человек хочет изучать новые технологии, а приходится разбираться с чьей-то непонятной писаниной.
Миф 2. Программисты… тоже ненастоящие!
1С-разработчики — совсем не программисты. Они не пишут приложения, а просто ходят по организациям и настраивают «1С:Предприятие».
В малом бизнесе задачи 1С-разработчиков обычно на этом и заканчиваются. Они настраивают «1С:Предприятие», устанавливают приложения на серверы и локальные компьютеры, обучают пользователей и работают с базами данных.
Но в больших компаниях этого не хватает — типовые решения приходится приспосабливать под нужды клиента. Разработчики добавляют функции, правят расчёты, создают документы, справочники, отчёты и обработки.
Кроме этого, издатель «1С» регулярно обновляет свои продукты, и 1С-специалисты устанавливают клиентам новые версии ПО и переносят туда уже готовые доработки.
Чтобы делать всё это качественно и вовремя, программист должен не только знать язык 1С, но и разбираться в настройках платформы и стандартных конфигурациях.
У «1С» есть компании-франчайзи, которые создают на базе «1С:Предприятия» отраслевые решения, например для сельского хозяйства, производства, строительства, торговли, логистики, образования, медицины и других сфер.
Оператор содержится ( IN ) или не содержится ( NOT IN )
X IN (N1, …, Nn) возвращает значения:
TRUE – если X совпадает с одним из элементов списка(N1, …, Nn).
FALSE – если X не совпадает ни с одним из элементов списка (N1, …, Nn).
NULL – если X равен NULL или когда в списке присутствует значение NULL и при этом X не совпадает ни с одним из элементов списка.
X NOT IN (N1, …, Nn) возвращает значения:
TRUE — если X не совпадает ни с одним из элементов списка.
FALSE – если X совпадает с одним из элементов списка.
NULL — если X равен NULL или когда в списке присутствует значение NULL и при этом X не совпадает ни с одним из элементов списка.
Пример:
SELECT * FROM testtable WHERE id IN (2, 5, 8); SELECT * FROM testtable WHERE id NOT IN (2, 5);
Первым запросом выбираются строки из таблицы testtable, в которых значение в столбце id равно 2, 5 и 8. Вторым запросом выбираются все строки из таблицы testtable, кроме тех строк, значение которых в столбце id равно 2 и 5.
База данных для примеров
Дальше будет много примеров и логично постоянно использовать одну и ту же БД, что бы не рисовать каждый раз новые. На основании базы данных ниже будут продемонстрированы все примеры, не только в этой статье, но и в других.
Постановка задачи: пусть требуется разработать БД для предметной области «Поставка деталей»!
Требуется хранить следующую информацию:
- О поставщиках (P) pnum, pname
- О деталях (D) pnum, dname, dprice
- О поставках (PD) volume
Значения таблицы P:
pnum | pname |
---|---|
1 | Иванов |
2 | Петров |
3 | Сидоров |
4 | Кузнецов |
Значения таблицы D:
pnum | dname | dprice |
---|---|---|
1 | Болт | 10 |
2 | Гайка | 20 |
3 | Винт | 30 |
Значения таблицы PD:
pnum | dnum | volume |
---|---|---|
1 | 1 | 100 |
1 | 2 | 100 |
1 | 3 | 300 |
2 | 1 | 150 |
1 | 2 | 250 |
3 | 1 | 1000 |
Миф 3. Товарищ Нетте — бухгалтер и программист
Чтобы устроиться 1С-разработчиком, достаточно знать бухгалтерский учёт.
Миф появился, потому что первым продуктом «1С» была «1С:Бухгалтерия», и фирму до сих пор ассоциируют только с бухучётом. Если человек разбирается в «1С:Бухгалтерии», он может стать консультантом, но ему придётся много учиться, чтобы стать разработчиком.
За 30 лет компания «1С» выпустила решения для разных видов предприятий и даже отдельных бизнес-процессов, например:
- Программы для участков учёта — «Зарплата и управление персоналом», «Управление торговлей», «Документооборот».
- Решения для малого, среднего и крупного бизнеса — «Управление нашей фирмой», «ERP Управление предприятием», «Корпорация».
- Отраслевые решения для энергетики, сельского хозяйства, строительства, ЖКХ, транспорта, общепита, гостиниц, медицины, культуры и других сфер.
Конечно, чтобы создавать решения для учёта, программист должен знать, как работает бухгалтерия и бизнес, как рассчитывают зарплаты, ведут учёт на складах и пользуются оборудованием. В сфере ЖКХ или в общепите всё это делают по-разному.